@@ -28,6 +28,8 @@ use arrow::compute::kernels::arithmetic::{
2828 multiply_scalar, subtract, subtract_scalar,
2929} ;
3030use arrow:: compute:: kernels:: boolean:: { and_kleene, not, or_kleene} ;
31+ use arrow:: compute:: kernels:: comparison:: regexp_is_match_utf8;
32+ use arrow:: compute:: kernels:: comparison:: regexp_is_match_utf8_scalar;
3133use arrow:: compute:: kernels:: comparison:: {
3234 eq_dyn_binary_scalar, gt_dyn_binary_scalar, gt_eq_dyn_binary_scalar,
3335 lt_dyn_binary_scalar, lt_eq_dyn_binary_scalar, neq_dyn_binary_scalar,
@@ -47,10 +49,6 @@ use arrow::compute::kernels::comparison::{
4749use arrow:: compute:: kernels:: comparison:: {
4850 eq_scalar, gt_eq_scalar, gt_scalar, lt_eq_scalar, lt_scalar, neq_scalar,
4951} ;
50- use arrow:: compute:: kernels:: comparison:: { like_utf8, nlike_utf8, regexp_is_match_utf8} ;
51- use arrow:: compute:: kernels:: comparison:: {
52- like_utf8_scalar, nlike_utf8_scalar, regexp_is_match_utf8_scalar,
53- } ;
5452
5553use adapter:: { eq_dyn, gt_dyn, gt_eq_dyn, lt_dyn, lt_eq_dyn, neq_dyn} ;
5654use arrow:: compute:: kernels:: concat_elements:: concat_elements_utf8;
@@ -323,19 +321,6 @@ macro_rules! compute_op {
323321 } } ;
324322}
325323
326- macro_rules! binary_string_array_op_scalar {
327- ( $LEFT: expr, $RIGHT: expr, $OP: ident, $OP_TYPE: expr) => { {
328- let result: Result <Arc <dyn Array >> = match $LEFT. data_type( ) {
329- DataType :: Utf8 => compute_utf8_op_scalar!( $LEFT, $RIGHT, $OP, StringArray , $OP_TYPE) ,
330- other => Err ( DataFusionError :: Internal ( format!(
331- "Data type {:?} not supported for scalar operation '{}' on string array" ,
332- other, stringify!( $OP)
333- ) ) ) ,
334- } ;
335- Some ( result)
336- } } ;
337- }
338-
339324macro_rules! binary_string_array_op {
340325 ( $LEFT: expr, $RIGHT: expr, $OP: ident) => { {
341326 match $LEFT. data_type( ) {
@@ -623,7 +608,7 @@ impl PhysicalExpr for BinaryExpr {
623608}
624609
625610/// unwrap underlying (non dictionary) value, if any, to pass to a scalar kernel
626- fn unwrap_dict_value ( v : ScalarValue ) -> ScalarValue {
611+ pub fn unwrap_dict_value ( v : ScalarValue ) -> ScalarValue {
627612 if let ScalarValue :: Dictionary ( _key_type, v) = v {
628613 unwrap_dict_value ( * v)
629614 } else {
@@ -713,12 +698,6 @@ impl BinaryExpr {
713698 Operator :: NotEq => {
714699 binary_array_op_dyn_scalar ! ( array, scalar. clone( ) , neq, bool_type)
715700 }
716- Operator :: Like => {
717- binary_string_array_op_scalar ! ( array, scalar. clone( ) , like, bool_type)
718- }
719- Operator :: NotLike => {
720- binary_string_array_op_scalar ! ( array, scalar. clone( ) , nlike, bool_type)
721- }
722701 Operator :: Plus => {
723702 binary_primitive_array_op_scalar ! ( array, scalar. clone( ) , add)
724703 }
@@ -818,8 +797,6 @@ impl BinaryExpr {
818797 right_data_type : & DataType ,
819798 ) -> Result < ArrayRef > {
820799 match & self . op {
821- Operator :: Like => binary_string_array_op ! ( left, right, like) ,
822- Operator :: NotLike => binary_string_array_op ! ( left, right, nlike) ,
823800 Operator :: Lt => lt_dyn ( & left, & right) ,
824801 Operator :: LtEq => lt_eq_dyn ( & left, & right) ,
825802 Operator :: Gt => gt_dyn ( & left, & right) ,
@@ -1115,18 +1092,6 @@ mod tests {
11151092 DataType :: Float32 ,
11161093 vec![ 2f32 ]
11171094 ) ;
1118- test_coercion ! (
1119- StringArray ,
1120- DataType :: Utf8 ,
1121- vec![ "hello world" , "world" ] ,
1122- StringArray ,
1123- DataType :: Utf8 ,
1124- vec![ "%hello%" , "%hello%" ] ,
1125- Operator :: Like ,
1126- BooleanArray ,
1127- DataType :: Boolean ,
1128- vec![ true , false ]
1129- ) ;
11301095 test_coercion ! (
11311096 StringArray ,
11321097 DataType :: Utf8 ,
0 commit comments