1- use vortex_array:: compute:: { filter, FilterFn } ;
1+ use vortex_array:: compute:: { filter, FilterFn , FilterMask } ;
22use vortex_array:: { ArrayDType , ArrayData , IntoArrayData } ;
33use vortex_error:: VortexResult ;
44
55use crate :: ALPRDArray ;
66
77impl FilterFn for ALPRDArray {
8- fn filter ( & self , predicate : & ArrayData ) -> VortexResult < ArrayData > {
8+ fn filter ( & self , mask : & FilterMask ) -> VortexResult < ArrayData > {
99 let left_parts_exceptions = self
1010 . left_parts_exceptions ( )
11- . map ( |array| filter ( & array, predicate ) )
11+ . map ( |array| filter ( & array, mask ) )
1212 . transpose ( ) ?;
1313
1414 Ok ( ALPRDArray :: try_new (
1515 self . dtype ( ) . clone ( ) ,
16- filter ( self . left_parts ( ) , predicate ) ?,
16+ filter ( & self . left_parts ( ) , mask ) ?,
1717 self . left_parts_dict ( ) ,
18- filter ( self . right_parts ( ) , predicate ) ?,
18+ filter ( & self . right_parts ( ) , mask ) ?,
1919 self . right_bit_width ( ) ,
2020 left_parts_exceptions,
2121 ) ?
@@ -26,8 +26,8 @@ impl FilterFn for ALPRDArray {
2626#[ cfg( test) ]
2727mod test {
2828 use rstest:: rstest;
29- use vortex_array:: array:: { BoolArray , PrimitiveArray } ;
30- use vortex_array:: compute:: filter;
29+ use vortex_array:: array:: PrimitiveArray ;
30+ use vortex_array:: compute:: { filter, FilterMask } ;
3131 use vortex_array:: IntoArrayVariant ;
3232
3333 use crate :: { ALPRDFloat , RDEncoder } ;
@@ -43,10 +43,13 @@ mod test {
4343 assert ! ( encoded. left_parts_exceptions( ) . is_some( ) ) ;
4444
4545 // The first two values need no patching
46- let filtered = filter ( encoded. as_ref ( ) , BoolArray :: from_iter ( [ true , false , true ] ) )
47- . unwrap ( )
48- . into_primitive ( )
49- . unwrap ( ) ;
46+ let filtered = filter (
47+ encoded. as_ref ( ) ,
48+ & FilterMask :: from_iter ( [ true , false , true ] ) ,
49+ )
50+ . unwrap ( )
51+ . into_primitive ( )
52+ . unwrap ( ) ;
5053 assert_eq ! ( filtered. maybe_null_slice:: <T >( ) , & [ a, outlier] ) ;
5154 }
5255}
0 commit comments