alamb commented on a change in pull request #509:
URL: https://github.com/apache/arrow-rs/pull/509#discussion_r660960513
##########
File path: arrow/src/compute/kernels/take.rs
##########
@@ -516,7 +522,7 @@ where
nulls = match indices.data_ref().null_buffer() {
Some(buffer) => Some(buffer_bin_and(
buffer,
- 0,
+ indices.offset(),
&null_buf.into(),
0,
Review comment:
Is it correct that this `0` is due to the fact that `null_buf` was
constructed via
```rust
let mut null_buf =
MutableBuffer::new(num_byte).with_bitset(num_byte, true);
```
in the same `else` clause?
##########
File path: arrow/src/compute/kernels/take.rs
##########
@@ -876,6 +900,48 @@ mod tests {
.unwrap();
}
+ #[test]
+ fn test_take_primitive_nullable_indices_non_null_values_with_offset() {
+ let index =
+ UInt32Array::from(vec![Some(0), Some(1), Some(2), Some(3), None,
None]);
+ let index = index.slice(2, 4);
+ let index = index.as_any().downcast_ref::<UInt32Array>().unwrap();
+
+ assert_eq!(
+ index,
+ &UInt32Array::from(vec![Some(2), Some(3), None, None])
+ );
+
+ test_take_primitive_arrays_non_null::<Int64Type>(
+ vec![0, 1, 2, 3, 4, 5, 6],
Review comment:
Would it make sense to use different values here than the indices --
perhaps something like
```suggestion
vec![0, 10, 20, 30, 40, 50, 60],
```
So it is clearer from just this context that just `20` and `30` should be
returned
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]