vertexclique commented on a change in pull request #8688:
URL: https://github.com/apache/arrow/pull/8688#discussion_r528409836
##########
File path: rust/arrow/src/compute/kernels/boolean.rs
##########
@@ -457,4 +517,42 @@ mod tests {
assert_eq!(true, res.value(2));
assert_eq!(false, res.value(3));
}
+
+ fn assert_array_eq<T: ArrowNumericType>(
+ expected: PrimitiveArray<T>,
+ actual: ArrayRef,
+ ) {
+ let actual = actual
+ .as_any()
+ .downcast_ref::<PrimitiveArray<T>>()
+ .expect("Actual array should unwrap to type of expected array");
+
+ for i in 0..expected.len() {
+ if expected.is_null(i) {
+ assert!(actual.is_null(i));
+ } else {
+ assert_eq!(expected.value(i), actual.value(i));
+ }
+ }
+ }
+
Review comment:
> What is missing to construct the final nullif is the above combined
bitmap but at offset 2, so it can be aligned with the original left data. I
need to insert two bits in the LSB of the resulting bitmap so it is aligned
with the original data. AFAICT there isn't anything that can do this in the
current code.
That's why we need to have bit-slice iterator views on the code, rather than
copying slices like suggested before. Bit domain view exposed in the PR that I
created can give you what you need by force aligning the msb. You can reuse the
code everywhere, without `actually` copying anything.
That was one of the ideas why I introduced that PR here.
----------------------------------------------------------------
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.
For queries about this service, please contact Infrastructure at:
[email protected]