Skip to content

Commit

Permalink
Fix panic on nullif empty array (#3261) (#3263)
Browse files Browse the repository at this point in the history
* Fix panic on nullif empty array (#3261)

* Format
  • Loading branch information
tustvold authored Dec 3, 2022
1 parent cb4170b commit 796b670
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions arrow-select/src/nullif.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@ pub fn nullif(left: &dyn Array, right: &BooleanArray) -> Result<ArrayRef, ArrowE
let len = left_data.len();
let left_offset = left_data.offset();

if len == 0 {
return Ok(make_array(left_data.clone()));
}

// left=0 (null) right=null output bitmap=null
// left=0 right=1 output bitmap=null
// left=1 (set) right=null output bitmap=set (passthrough)
Expand Down Expand Up @@ -119,6 +123,7 @@ mod tests {
use arrow_array::cast::{as_boolean_array, as_primitive_array, as_string_array};
use arrow_array::types::Int32Type;
use arrow_array::{Int32Array, StringArray, StructArray};
use arrow_data::ArrayData;
use arrow_schema::{DataType, Field};

#[test]
Expand Down Expand Up @@ -451,4 +456,12 @@ mod tests {
let expected = Int32Array::from(vec![Some(15), Some(7), None, Some(1), Some(9)]);
assert_eq!(res, &expected);
}

#[test]
fn nullif_empty() {
let a = Int32Array::from(ArrayData::new_empty(&DataType::Int32));
let mask = BooleanArray::from(ArrayData::new_empty(&DataType::Boolean));
let res = nullif(&a, &mask).unwrap();
assert_eq!(res.as_ref(), &a);
}
}

0 comments on commit 796b670

Please sign in to comment.