velvia commented on a change in pull request #8688:
URL: https://github.com/apache/arrow/pull/8688#discussion_r526344874
##########
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));
+ }
+ }
+ }
+
+ #[test]
+ fn test_nullif_int_array() {
+ let a = Int32Array::from(vec![Some(15), None, Some(8), Some(1),
Some(9)]);
+ let comp =
+ BooleanArray::from(vec![Some(false), None, Some(true),
Some(false), None]);
+ let res = nullif(&a, &comp).unwrap();
+
+ let expected = Int32Array::from(vec![
+ Some(15),
+ None,
+ None, // comp true, slot 2 turned into null
+ Some(1),
+ // Even though comp array / right is null, should still pass
through original value
+ // comp true, slot 2 turned into null
+ Some(9),
+ ]);
+
+ assert_array_eq::<Int32Type>(expected, Arc::new(res));
Review comment:
How is the null_count derived? Shouldn't it look at the nullity bitmap?
If it is actually checking that the data is zero, then we'd need to modify the
array data as part of the nullif() implementation, which would be more
expensive and possibly hard to do in a generic way, no?
----------------------------------------------------------------
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]