@@ -2,12 +2,12 @@ use vortex_error::{VortexResult, vortex_err};
22use vortex_scalar:: Scalar ;
33
44use crate :: arrays:: { BoolArray , BoolEncoding , ConstantArray } ;
5- use crate :: compute:: FillNullFn ;
5+ use crate :: compute:: { FillNullKernel , FillNullKernelAdapter } ;
66use crate :: validity:: Validity ;
7- use crate :: { Array , ArrayRef , ToCanonical } ;
7+ use crate :: { Array , ArrayRef , ToCanonical , register_kernel } ;
88
9- impl FillNullFn < & BoolArray > for BoolEncoding {
10- fn fill_null ( & self , array : & BoolArray , fill_value : Scalar ) -> VortexResult < ArrayRef > {
9+ impl FillNullKernel for BoolEncoding {
10+ fn fill_null ( & self , array : & BoolArray , fill_value : & Scalar ) -> VortexResult < ArrayRef > {
1111 let fill = fill_value
1212 . as_bool ( )
1313 . value ( )
@@ -19,7 +19,9 @@ impl FillNullFn<&BoolArray> for BoolEncoding {
1919 fill_value. dtype ( ) . nullability ( ) . into ( ) ,
2020 )
2121 . into_array ( ) ,
22- Validity :: AllInvalid => ConstantArray :: new ( fill_value, array. len ( ) ) . into_array ( ) ,
22+ Validity :: AllInvalid => {
23+ ConstantArray :: new ( fill_value. clone ( ) , array. len ( ) ) . into_array ( )
24+ }
2325 Validity :: Array ( v) => {
2426 let bool_buffer = if fill {
2527 array. boolean_buffer ( ) | & !v. to_bool ( ) ?. boolean_buffer ( )
@@ -32,6 +34,8 @@ impl FillNullFn<&BoolArray> for BoolEncoding {
3234 }
3335}
3436
37+ register_kernel ! ( FillNullKernelAdapter ( BoolEncoding ) . lift( ) ) ;
38+
3539#[ cfg( test) ]
3640mod tests {
3741 use arrow_buffer:: BooleanBuffer ;
@@ -52,7 +56,7 @@ mod tests {
5256 BooleanBuffer :: from_iter ( [ true , true , false , false ] ) ,
5357 Validity :: from_iter ( [ true , false , true , false ] ) ,
5458 ) ;
55- let non_null_array = fill_null ( & bool_array, fill_value. into ( ) )
59+ let non_null_array = fill_null ( & bool_array, & fill_value. into ( ) )
5660 . unwrap ( )
5761 . to_bool ( )
5862 . unwrap ( ) ;
0 commit comments