Skip to content

Commit 3d1b288

Browse files
committed
add ut
1 parent c12b5b7 commit 3d1b288

1 file changed

Lines changed: 33 additions & 0 deletions

File tree

native/spark-expr/src/array_funcs/array_insert.rs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -452,4 +452,37 @@ mod test {
452452

453453
Ok(())
454454
}
455+
456+
#[test]
457+
fn test_array_insert_bug_repro_null_item_pos1_fixed() -> Result<()> {
458+
use arrow::array::{Array, ArrayRef, Int32Array, ListArray};
459+
use arrow::datatypes::Int32Type;
460+
461+
// row0 = [0, null, 0]
462+
// row1 = [1, null, 1]
463+
let list = ListArray::from_iter_primitive::<Int32Type, _, _>(vec![
464+
Some(vec![Some(0), None, Some(0)]),
465+
Some(vec![Some(1), None, Some(1)]),
466+
]);
467+
468+
let positions = Int32Array::from(vec![1, 1]);
469+
let items = Int32Array::from(vec![None, None]);
470+
471+
let ColumnarValue::Array(result) = array_insert(
472+
&list,
473+
&(Arc::new(items) as ArrayRef),
474+
&(Arc::new(positions) as ArrayRef),
475+
false, // legacy_mode = false
476+
)?
477+
else {
478+
unreachable!()
479+
};
480+
481+
let expected = ListArray::from_iter_primitive::<Int32Type, _, _>(vec![
482+
Some(vec![None, Some(0), None, Some(0)]),
483+
Some(vec![None, Some(1), None, Some(1)])
484+
]);
485+
assert_eq!(&result.to_data(), &expected.to_data());
486+
Ok(())
487+
}
455488
}

0 commit comments

Comments
 (0)