diff --git a/vortex-array/src/arrays/list/tests.rs b/vortex-array/src/arrays/list/tests.rs index 8b1f396ca62..4ba3e1f2b27 100644 --- a/vortex-array/src/arrays/list/tests.rs +++ b/vortex-array/src/arrays/list/tests.rs @@ -9,11 +9,16 @@ use vortex_dtype::DType; use vortex_dtype::Nullability; use vortex_dtype::PType::I32; use vortex_error::VortexExpect; +use vortex_error::VortexResult; use vortex_mask::Mask; use vortex_scalar::Scalar; use super::*; +use crate::Canonical; use crate::IntoArray; +use crate::LEGACY_SESSION; +use crate::VortexSessionExecute; +use crate::arrays::FilterArray; use crate::arrays::ListVTable; use crate::arrays::PrimitiveArray; use crate::assert_arrays_eq; @@ -905,3 +910,22 @@ fn test_recursive_compact_list_of_lists() { recursive.scalar_at(0).unwrap() ); } + +#[test] +fn test_filter_sliced_list_array() -> VortexResult<()> { + let list = ListArray::try_new( + buffer![0..50].into_array(), + buffer![0, 10, 20, 30, 40, 50].into_array(), + Validity::AllValid, + )? + .into_array() + .slice(2..5)?; + + let mask = Mask::from(BitBuffer::from(vec![true, false, true])); + let filter_array = FilterArray::new(list, mask).into_array(); + let mut ctx = LEGACY_SESSION.create_execution_ctx(); + let result = filter_array.execute::(&mut ctx)?; + + assert_eq!(result.len(), 2); + Ok(()) +}