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:
us...@infra.apache.org


Reply via email to