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