@@ -63,9 +63,9 @@ use datafusion_common::scalar::{
6363} ;
6464use datafusion_expr:: type_coercion:: { is_decimal, is_timestamp, is_utf8_or_large_utf8} ;
6565use kernels:: {
66- bitwise_and , bitwise_and_scalar , bitwise_or , bitwise_or_scalar , bitwise_shift_left ,
67- bitwise_shift_left_scalar , bitwise_shift_right , bitwise_shift_right_scalar ,
68- bitwise_xor , bitwise_xor_scalar ,
66+ bitwise_and_dyn , bitwise_and_dyn_scalar , bitwise_or_dyn , bitwise_or_dyn_scalar ,
67+ bitwise_shift_left_dyn , bitwise_shift_left_dyn_scalar , bitwise_shift_right_dyn ,
68+ bitwise_shift_right_dyn_scalar , bitwise_xor_dyn , bitwise_xor_dyn_scalar ,
6969} ;
7070use kernels_arrow:: {
7171 add_decimal_dyn_scalar, add_dyn_decimal, add_dyn_temporal, add_dyn_temporal_scalar,
@@ -1135,11 +1135,11 @@ impl BinaryExpr {
11351135 true ,
11361136 true
11371137 ) ,
1138- Operator :: BitwiseAnd => bitwise_and_scalar ( array, scalar) ,
1139- Operator :: BitwiseOr => bitwise_or_scalar ( array, scalar) ,
1140- Operator :: BitwiseXor => bitwise_xor_scalar ( array, scalar) ,
1141- Operator :: BitwiseShiftRight => bitwise_shift_right_scalar ( array, scalar) ,
1142- Operator :: BitwiseShiftLeft => bitwise_shift_left_scalar ( array, scalar) ,
1138+ Operator :: BitwiseAnd => bitwise_and_dyn_scalar ( array, scalar) ,
1139+ Operator :: BitwiseOr => bitwise_or_dyn_scalar ( array, scalar) ,
1140+ Operator :: BitwiseXor => bitwise_xor_dyn_scalar ( array, scalar) ,
1141+ Operator :: BitwiseShiftRight => bitwise_shift_right_dyn_scalar ( array, scalar) ,
1142+ Operator :: BitwiseShiftLeft => bitwise_shift_left_dyn_scalar ( array, scalar) ,
11431143 // if scalar operation is not supported - fallback to array implementation
11441144 _ => None ,
11451145 } ;
@@ -1257,11 +1257,11 @@ impl BinaryExpr {
12571257 Operator :: RegexNotIMatch => {
12581258 binary_string_array_flag_op ! ( left, right, regexp_is_match, true , true )
12591259 }
1260- Operator :: BitwiseAnd => bitwise_and ( left, right) ,
1261- Operator :: BitwiseOr => bitwise_or ( left, right) ,
1262- Operator :: BitwiseXor => bitwise_xor ( left, right) ,
1263- Operator :: BitwiseShiftRight => bitwise_shift_right ( left, right) ,
1264- Operator :: BitwiseShiftLeft => bitwise_shift_left ( left, right) ,
1260+ Operator :: BitwiseAnd => bitwise_and_dyn ( left, right) ,
1261+ Operator :: BitwiseOr => bitwise_or_dyn ( left, right) ,
1262+ Operator :: BitwiseXor => bitwise_xor_dyn ( left, right) ,
1263+ Operator :: BitwiseShiftRight => bitwise_shift_right_dyn ( left, right) ,
1264+ Operator :: BitwiseShiftLeft => bitwise_shift_left_dyn ( left, right) ,
12651265 Operator :: StringConcat => {
12661266 binary_string_array_op ! ( left, right, concat_elements)
12671267 }
@@ -5147,31 +5147,31 @@ mod tests {
51475147 let left = Arc :: new ( Int32Array :: from ( vec ! [ Some ( 12 ) , None , Some ( 11 ) ] ) ) as ArrayRef ;
51485148 let right =
51495149 Arc :: new ( Int32Array :: from ( vec ! [ Some ( 1 ) , Some ( 3 ) , Some ( 7 ) ] ) ) as ArrayRef ;
5150- let mut result = bitwise_and ( left. clone ( ) , right. clone ( ) ) ?;
5150+ let mut result = bitwise_and_dyn ( left. clone ( ) , right. clone ( ) ) ?;
51515151 let expected = Int32Array :: from ( vec ! [ Some ( 0 ) , None , Some ( 3 ) ] ) ;
51525152 assert_eq ! ( result. as_ref( ) , & expected) ;
51535153
5154- result = bitwise_or ( left. clone ( ) , right. clone ( ) ) ?;
5154+ result = bitwise_or_dyn ( left. clone ( ) , right. clone ( ) ) ?;
51555155 let expected = Int32Array :: from ( vec ! [ Some ( 13 ) , None , Some ( 15 ) ] ) ;
51565156 assert_eq ! ( result. as_ref( ) , & expected) ;
51575157
5158- result = bitwise_xor ( left. clone ( ) , right. clone ( ) ) ?;
5158+ result = bitwise_xor_dyn ( left. clone ( ) , right. clone ( ) ) ?;
51595159 let expected = Int32Array :: from ( vec ! [ Some ( 13 ) , None , Some ( 12 ) ] ) ;
51605160 assert_eq ! ( result. as_ref( ) , & expected) ;
51615161
51625162 let left =
51635163 Arc :: new ( UInt32Array :: from ( vec ! [ Some ( 12 ) , None , Some ( 11 ) ] ) ) as ArrayRef ;
51645164 let right =
51655165 Arc :: new ( UInt32Array :: from ( vec ! [ Some ( 1 ) , Some ( 3 ) , Some ( 7 ) ] ) ) as ArrayRef ;
5166- let mut result = bitwise_and ( left. clone ( ) , right. clone ( ) ) ?;
5166+ let mut result = bitwise_and_dyn ( left. clone ( ) , right. clone ( ) ) ?;
51675167 let expected = UInt32Array :: from ( vec ! [ Some ( 0 ) , None , Some ( 3 ) ] ) ;
51685168 assert_eq ! ( result. as_ref( ) , & expected) ;
51695169
5170- result = bitwise_or ( left. clone ( ) , right. clone ( ) ) ?;
5170+ result = bitwise_or_dyn ( left. clone ( ) , right. clone ( ) ) ?;
51715171 let expected = UInt32Array :: from ( vec ! [ Some ( 13 ) , None , Some ( 15 ) ] ) ;
51725172 assert_eq ! ( result. as_ref( ) , & expected) ;
51735173
5174- result = bitwise_xor ( left. clone ( ) , right. clone ( ) ) ?;
5174+ result = bitwise_xor_dyn ( left. clone ( ) , right. clone ( ) ) ?;
51755175 let expected = UInt32Array :: from ( vec ! [ Some ( 13 ) , None , Some ( 12 ) ] ) ;
51765176 assert_eq ! ( result. as_ref( ) , & expected) ;
51775177
@@ -5183,24 +5183,24 @@ mod tests {
51835183 let input = Arc :: new ( Int32Array :: from ( vec ! [ Some ( 2 ) , None , Some ( 10 ) ] ) ) as ArrayRef ;
51845184 let modules =
51855185 Arc :: new ( Int32Array :: from ( vec ! [ Some ( 2 ) , Some ( 4 ) , Some ( 8 ) ] ) ) as ArrayRef ;
5186- let mut result = bitwise_shift_left ( input. clone ( ) , modules. clone ( ) ) ?;
5186+ let mut result = bitwise_shift_left_dyn ( input. clone ( ) , modules. clone ( ) ) ?;
51875187
51885188 let expected = Int32Array :: from ( vec ! [ Some ( 8 ) , None , Some ( 2560 ) ] ) ;
51895189 assert_eq ! ( result. as_ref( ) , & expected) ;
51905190
5191- result = bitwise_shift_right ( result. clone ( ) , modules. clone ( ) ) ?;
5191+ result = bitwise_shift_right_dyn ( result. clone ( ) , modules. clone ( ) ) ?;
51925192 assert_eq ! ( result. as_ref( ) , & input) ;
51935193
51945194 let input =
51955195 Arc :: new ( UInt32Array :: from ( vec ! [ Some ( 2 ) , None , Some ( 10 ) ] ) ) as ArrayRef ;
51965196 let modules =
51975197 Arc :: new ( UInt32Array :: from ( vec ! [ Some ( 2 ) , Some ( 4 ) , Some ( 8 ) ] ) ) as ArrayRef ;
5198- let mut result = bitwise_shift_left ( input. clone ( ) , modules. clone ( ) ) ?;
5198+ let mut result = bitwise_shift_left_dyn ( input. clone ( ) , modules. clone ( ) ) ?;
51995199
52005200 let expected = UInt32Array :: from ( vec ! [ Some ( 8 ) , None , Some ( 2560 ) ] ) ;
52015201 assert_eq ! ( result. as_ref( ) , & expected) ;
52025202
5203- result = bitwise_shift_right ( result. clone ( ) , modules. clone ( ) ) ?;
5203+ result = bitwise_shift_right_dyn ( result. clone ( ) , modules. clone ( ) ) ?;
52045204 assert_eq ! ( result. as_ref( ) , & input) ;
52055205 Ok ( ( ) )
52065206 }
@@ -5209,14 +5209,14 @@ mod tests {
52095209 fn bitwise_shift_array_overflow_test ( ) -> Result < ( ) > {
52105210 let input = Arc :: new ( Int32Array :: from ( vec ! [ Some ( 2 ) ] ) ) as ArrayRef ;
52115211 let modules = Arc :: new ( Int32Array :: from ( vec ! [ Some ( 100 ) ] ) ) as ArrayRef ;
5212- let result = bitwise_shift_left ( input. clone ( ) , modules. clone ( ) ) ?;
5212+ let result = bitwise_shift_left_dyn ( input. clone ( ) , modules. clone ( ) ) ?;
52135213
52145214 let expected = Int32Array :: from ( vec ! [ Some ( 32 ) ] ) ;
52155215 assert_eq ! ( result. as_ref( ) , & expected) ;
52165216
52175217 let input = Arc :: new ( UInt32Array :: from ( vec ! [ Some ( 2 ) ] ) ) as ArrayRef ;
52185218 let modules = Arc :: new ( UInt32Array :: from ( vec ! [ Some ( 100 ) ] ) ) as ArrayRef ;
5219- let result = bitwise_shift_left ( input. clone ( ) , modules. clone ( ) ) ?;
5219+ let result = bitwise_shift_left_dyn ( input. clone ( ) , modules. clone ( ) ) ?;
52205220
52215221 let expected = UInt32Array :: from ( vec ! [ Some ( 32 ) ] ) ;
52225222 assert_eq ! ( result. as_ref( ) , & expected) ;
@@ -5227,30 +5227,30 @@ mod tests {
52275227 fn bitwise_scalar_test ( ) -> Result < ( ) > {
52285228 let left = Arc :: new ( Int32Array :: from ( vec ! [ Some ( 12 ) , None , Some ( 11 ) ] ) ) as ArrayRef ;
52295229 let right = ScalarValue :: from ( 3i32 ) ;
5230- let mut result = bitwise_and_scalar ( & left, right. clone ( ) ) . unwrap ( ) ?;
5230+ let mut result = bitwise_and_dyn_scalar ( & left, right. clone ( ) ) . unwrap ( ) ?;
52315231 let expected = Int32Array :: from ( vec ! [ Some ( 0 ) , None , Some ( 3 ) ] ) ;
52325232 assert_eq ! ( result. as_ref( ) , & expected) ;
52335233
5234- result = bitwise_or_scalar ( & left, right. clone ( ) ) . unwrap ( ) ?;
5234+ result = bitwise_or_dyn_scalar ( & left, right. clone ( ) ) . unwrap ( ) ?;
52355235 let expected = Int32Array :: from ( vec ! [ Some ( 15 ) , None , Some ( 11 ) ] ) ;
52365236 assert_eq ! ( result. as_ref( ) , & expected) ;
52375237
5238- result = bitwise_xor_scalar ( & left, right) . unwrap ( ) ?;
5238+ result = bitwise_xor_dyn_scalar ( & left, right) . unwrap ( ) ?;
52395239 let expected = Int32Array :: from ( vec ! [ Some ( 15 ) , None , Some ( 8 ) ] ) ;
52405240 assert_eq ! ( result. as_ref( ) , & expected) ;
52415241
52425242 let left =
52435243 Arc :: new ( UInt32Array :: from ( vec ! [ Some ( 12 ) , None , Some ( 11 ) ] ) ) as ArrayRef ;
52445244 let right = ScalarValue :: from ( 3u32 ) ;
5245- let mut result = bitwise_and_scalar ( & left, right. clone ( ) ) . unwrap ( ) ?;
5245+ let mut result = bitwise_and_dyn_scalar ( & left, right. clone ( ) ) . unwrap ( ) ?;
52465246 let expected = UInt32Array :: from ( vec ! [ Some ( 0 ) , None , Some ( 3 ) ] ) ;
52475247 assert_eq ! ( result. as_ref( ) , & expected) ;
52485248
5249- result = bitwise_or_scalar ( & left, right. clone ( ) ) . unwrap ( ) ?;
5249+ result = bitwise_or_dyn_scalar ( & left, right. clone ( ) ) . unwrap ( ) ?;
52505250 let expected = UInt32Array :: from ( vec ! [ Some ( 15 ) , None , Some ( 11 ) ] ) ;
52515251 assert_eq ! ( result. as_ref( ) , & expected) ;
52525252
5253- result = bitwise_xor_scalar ( & left, right) . unwrap ( ) ?;
5253+ result = bitwise_xor_dyn_scalar ( & left, right) . unwrap ( ) ?;
52545254 let expected = UInt32Array :: from ( vec ! [ Some ( 15 ) , None , Some ( 8 ) ] ) ;
52555255 assert_eq ! ( result. as_ref( ) , & expected) ;
52565256 Ok ( ( ) )
@@ -5260,22 +5260,24 @@ mod tests {
52605260 fn bitwise_shift_scalar_test ( ) -> Result < ( ) > {
52615261 let input = Arc :: new ( Int32Array :: from ( vec ! [ Some ( 2 ) , None , Some ( 4 ) ] ) ) as ArrayRef ;
52625262 let module = ScalarValue :: from ( 10i32 ) ;
5263- let mut result = bitwise_shift_left_scalar ( & input, module. clone ( ) ) . unwrap ( ) ?;
5263+ let mut result =
5264+ bitwise_shift_left_dyn_scalar ( & input, module. clone ( ) ) . unwrap ( ) ?;
52645265
52655266 let expected = Int32Array :: from ( vec ! [ Some ( 2048 ) , None , Some ( 4096 ) ] ) ;
52665267 assert_eq ! ( result. as_ref( ) , & expected) ;
52675268
5268- result = bitwise_shift_right_scalar ( & result, module) . unwrap ( ) ?;
5269+ result = bitwise_shift_right_dyn_scalar ( & result, module) . unwrap ( ) ?;
52695270 assert_eq ! ( result. as_ref( ) , & input) ;
52705271
52715272 let input = Arc :: new ( UInt32Array :: from ( vec ! [ Some ( 2 ) , None , Some ( 4 ) ] ) ) as ArrayRef ;
52725273 let module = ScalarValue :: from ( 10u32 ) ;
5273- let mut result = bitwise_shift_left_scalar ( & input, module. clone ( ) ) . unwrap ( ) ?;
5274+ let mut result =
5275+ bitwise_shift_left_dyn_scalar ( & input, module. clone ( ) ) . unwrap ( ) ?;
52745276
52755277 let expected = UInt32Array :: from ( vec ! [ Some ( 2048 ) , None , Some ( 4096 ) ] ) ;
52765278 assert_eq ! ( result. as_ref( ) , & expected) ;
52775279
5278- result = bitwise_shift_right_scalar ( & result, module) . unwrap ( ) ?;
5280+ result = bitwise_shift_right_dyn_scalar ( & result, module) . unwrap ( ) ?;
52795281 assert_eq ! ( result. as_ref( ) , & input) ;
52805282 Ok ( ( ) )
52815283 }
0 commit comments