Skip to content

Commit 661f370

Browse files
Using FirstTimeBitmapWriter instead of BitmapWriter.
Also correct use of null_bitmap (1 for Valid, 0 for Null), and more tests. + Array__Mask (not in the api of Array) for testing
1 parent e81b72b commit 661f370

File tree

8 files changed

+427
-360
lines changed

8 files changed

+427
-360
lines changed

r/R/ChunkedArray.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,5 +42,5 @@
4242
#'
4343
#' @export
4444
chunked_array <- function(...){
45-
`arrow::ChunkedArray`$new(ChunkedArray__from_list(list(...)))
45+
`arrow::ChunkedArray`$new(ChunkedArray__from_list(rlang::list2(...)))
4646
}

r/R/RcppExports.R

Lines changed: 86 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,74 @@
11
# Generated by using Rcpp::compileAttributes() -> do not edit by hand
22
# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393
33

4+
Array__from_vector <- function(x) {
5+
.Call(`_arrow_Array__from_vector`, x)
6+
}
7+
8+
Array__as_vector <- function(array) {
9+
.Call(`_arrow_Array__as_vector`, array)
10+
}
11+
12+
Array__Slice1 <- function(array, offset) {
13+
.Call(`_arrow_Array__Slice1`, array, offset)
14+
}
15+
16+
Array__Slice2 <- function(array, offset, length) {
17+
.Call(`_arrow_Array__Slice2`, array, offset, length)
18+
}
19+
20+
Array__IsNull <- function(x, i) {
21+
.Call(`_arrow_Array__IsNull`, x, i)
22+
}
23+
24+
Array__IsValid <- function(x, i) {
25+
.Call(`_arrow_Array__IsValid`, x, i)
26+
}
27+
28+
Array__length <- function(x) {
29+
.Call(`_arrow_Array__length`, x)
30+
}
31+
32+
Array__offset <- function(x) {
33+
.Call(`_arrow_Array__offset`, x)
34+
}
35+
36+
Array__null_count <- function(x) {
37+
.Call(`_arrow_Array__null_count`, x)
38+
}
39+
40+
Array__type <- function(x) {
41+
.Call(`_arrow_Array__type`, x)
42+
}
43+
44+
Array__ToString <- function(x) {
45+
.Call(`_arrow_Array__ToString`, x)
46+
}
47+
48+
Array__type_id <- function(x) {
49+
.Call(`_arrow_Array__type_id`, x)
50+
}
51+
52+
Array__Equals <- function(lhs, rhs) {
53+
.Call(`_arrow_Array__Equals`, lhs, rhs)
54+
}
55+
56+
Array__ApproxEquals <- function(lhs, rhs) {
57+
.Call(`_arrow_Array__ApproxEquals`, lhs, rhs)
58+
}
59+
60+
Array__data <- function(array) {
61+
.Call(`_arrow_Array__data`, array)
62+
}
63+
64+
Array__RangeEquals <- function(self, other, start_idx, end_idx, other_start_idx) {
65+
.Call(`_arrow_Array__RangeEquals`, self, other, start_idx, end_idx, other_start_idx)
66+
}
67+
68+
Array__Mask <- function(array) {
69+
.Call(`_arrow_Array__Mask`, array)
70+
}
71+
472
ArrayData__get_type <- function(x) {
573
.Call(`_arrow_ArrayData__get_type`, x)
674
}
@@ -237,6 +305,22 @@ Object__pointer_address <- function(obj) {
237305
.Call(`_arrow_Object__pointer_address`, obj)
238306
}
239307

308+
Field__initialize <- function(name, type, nullable = TRUE) {
309+
.Call(`_arrow_Field__initialize`, name, type, nullable)
310+
}
311+
312+
Field__ToString <- function(type) {
313+
.Call(`_arrow_Field__ToString`, type)
314+
}
315+
316+
Field__name <- function(type) {
317+
.Call(`_arrow_Field__name`, type)
318+
}
319+
320+
Field__nullable <- function(type) {
321+
.Call(`_arrow_Field__nullable`, type)
322+
}
323+
240324
MemoryPool__default <- function() {
241325
.Call(`_arrow_MemoryPool__default`)
242326
}
@@ -273,8 +357,8 @@ read_record_batch_ <- function(path) {
273357
.Call(`_arrow_read_record_batch_`, path)
274358
}
275359

276-
RecordBatch_to_file <- function(batch, path) {
277-
.Call(`_arrow_RecordBatch_to_file`, batch, path)
360+
RecordBatch__to_file <- function(batch, path) {
361+
.Call(`_arrow_RecordBatch__to_file`, batch, path)
278362
}
279363

280364
RecordBatch__from_dataframe <- function(tbl) {
@@ -337,83 +421,3 @@ Table__column <- function(table, i) {
337421
.Call(`_arrow_Table__column`, table, i)
338422
}
339423

340-
Array__from_vector <- function(x) {
341-
.Call(`_arrow_Array__from_vector`, x)
342-
}
343-
344-
Array__as_vector <- function(array) {
345-
.Call(`_arrow_Array__as_vector`, array)
346-
}
347-
348-
Array__Slice1 <- function(array, offset) {
349-
.Call(`_arrow_Array__Slice1`, array, offset)
350-
}
351-
352-
Array__Slice2 <- function(array, offset, length) {
353-
.Call(`_arrow_Array__Slice2`, array, offset, length)
354-
}
355-
356-
Array__IsNull <- function(x, i) {
357-
.Call(`_arrow_Array__IsNull`, x, i)
358-
}
359-
360-
Array__IsValid <- function(x, i) {
361-
.Call(`_arrow_Array__IsValid`, x, i)
362-
}
363-
364-
Array__length <- function(x) {
365-
.Call(`_arrow_Array__length`, x)
366-
}
367-
368-
Array__offset <- function(x) {
369-
.Call(`_arrow_Array__offset`, x)
370-
}
371-
372-
Array__null_count <- function(x) {
373-
.Call(`_arrow_Array__null_count`, x)
374-
}
375-
376-
Array__type <- function(x) {
377-
.Call(`_arrow_Array__type`, x)
378-
}
379-
380-
Array__ToString <- function(x) {
381-
.Call(`_arrow_Array__ToString`, x)
382-
}
383-
384-
Array__type_id <- function(x) {
385-
.Call(`_arrow_Array__type_id`, x)
386-
}
387-
388-
Array__Equals <- function(lhs, rhs) {
389-
.Call(`_arrow_Array__Equals`, lhs, rhs)
390-
}
391-
392-
Array__ApproxEquals <- function(lhs, rhs) {
393-
.Call(`_arrow_Array__ApproxEquals`, lhs, rhs)
394-
}
395-
396-
Array__data <- function(array) {
397-
.Call(`_arrow_Array__data`, array)
398-
}
399-
400-
Array__RangeEquals <- function(self, other, start_idx, end_idx, other_start_idx) {
401-
.Call(`_arrow_Array__RangeEquals`, self, other, start_idx, end_idx, other_start_idx)
402-
}
403-
404-
Field__initialize <- function(name, type, nullable = TRUE) {
405-
.Call(`_arrow_Field__initialize`, name, type, nullable)
406-
}
407-
408-
Field__ToString <- function(type) {
409-
.Call(`_arrow_Field__ToString`, type)
410-
}
411-
412-
Field__name <- function(type) {
413-
.Call(`_arrow_Field__name`, type)
414-
}
415-
416-
Field__nullable <- function(type) {
417-
.Call(`_arrow_Field__nullable`, type)
418-
}
419-

r/src/ChunkedArray.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,15 @@ inline SEXP simple_ChunkedArray_to_Vector(const std::shared_ptr<arrow::ChunkedAr
3939
),
4040
n, p);
4141

42-
// set NA using the bitmap, TODO
42+
// set NA using the bitmap
4343
auto bitmap_data = chunk->null_bitmap();
4444
if (bitmap_data && RTYPE != RAWSXP) {
4545
arrow::internal::BitmapReader bitmap_reader(
4646
bitmap_data->data(), chunk->offset(), n
4747
);
4848

4949
for (int j=0; j<n; j++, bitmap_reader.Next()){
50-
if (bitmap_reader.IsSet()) {
50+
if (bitmap_reader.IsNotSet()) {
5151
q[k+j] = Rcpp::Vector<RTYPE>::get_na();
5252
}
5353
}

0 commit comments

Comments
 (0)