@@ -2865,15 +2865,12 @@ mod tests {
2865
2865
) ;
2866
2866
2867
2867
// single character
2868
- assert_change (
2869
- regex_match ( col ( "c1" ) , lit ( "x" ) ) ,
2870
- like ( col ( "c1" ) , lit ( "%x%" ) ) ,
2871
- ) ;
2868
+ assert_change ( regex_match ( col ( "c1" ) , lit ( "x" ) ) , col ( "c1" ) . like ( lit ( "%x%" ) ) ) ;
2872
2869
2873
2870
// single word
2874
2871
assert_change (
2875
2872
regex_match ( col ( "c1" ) , lit ( "foo" ) ) ,
2876
- like ( col ( "c1" ) , lit ( "%foo%" ) ) ,
2873
+ col ( "c1" ) . like ( lit ( "%foo%" ) ) ,
2877
2874
) ;
2878
2875
2879
2876
// regular expressions that match an exact literal
@@ -2963,48 +2960,53 @@ mod tests {
2963
2960
// regular expressions that match a partial literal
2964
2961
assert_change (
2965
2962
regex_match ( col ( "c1" ) , lit ( "^foo" ) ) ,
2966
- like ( col ( "c1" ) , lit ( "foo%" ) ) ,
2963
+ col ( "c1" ) . like ( lit ( "foo%" ) ) ,
2967
2964
) ;
2968
2965
assert_change (
2969
2966
regex_match ( col ( "c1" ) , lit ( "foo$" ) ) ,
2970
- like ( col ( "c1" ) , lit ( "%foo" ) ) ,
2967
+ col ( "c1" ) . like ( lit ( "%foo" ) ) ,
2971
2968
) ;
2972
2969
assert_change (
2973
2970
regex_match ( col ( "c1" ) , lit ( "^foo|bar$" ) ) ,
2974
- like ( col ( "c1" ) , lit ( "foo%" ) ) . or ( like ( col ( "c1" ) , lit ( "%bar" ) ) ) ,
2971
+ col ( "c1" ) . like ( lit ( "foo%" ) ) . or ( col ( "c1" ) . like ( lit ( "%bar" ) ) ) ,
2975
2972
) ;
2976
2973
2977
2974
// OR-chain
2978
2975
assert_change (
2979
2976
regex_match ( col ( "c1" ) , lit ( "foo|bar|baz" ) ) ,
2980
- like ( col ( "c1" ) , lit ( "%foo%" ) )
2981
- . or ( like ( col ( "c1" ) , lit ( "%bar%" ) ) )
2982
- . or ( like ( col ( "c1" ) , lit ( "%baz%" ) ) ) ,
2977
+ col ( "c1" )
2978
+ . like ( lit ( "%foo%" ) )
2979
+ . or ( col ( "c1" ) . like ( lit ( "%bar%" ) ) )
2980
+ . or ( col ( "c1" ) . like ( lit ( "%baz%" ) ) ) ,
2983
2981
) ;
2984
2982
assert_change (
2985
2983
regex_match ( col ( "c1" ) , lit ( "foo|x|baz" ) ) ,
2986
- like ( col ( "c1" ) , lit ( "%foo%" ) )
2987
- . or ( like ( col ( "c1" ) , lit ( "%x%" ) ) )
2988
- . or ( like ( col ( "c1" ) , lit ( "%baz%" ) ) ) ,
2984
+ col ( "c1" )
2985
+ . like ( lit ( "%foo%" ) )
2986
+ . or ( col ( "c1" ) . like ( lit ( "%x%" ) ) )
2987
+ . or ( col ( "c1" ) . like ( lit ( "%baz%" ) ) ) ,
2989
2988
) ;
2990
2989
assert_change (
2991
2990
regex_not_match ( col ( "c1" ) , lit ( "foo|bar|baz" ) ) ,
2992
- not_like ( col ( "c1" ) , lit ( "%foo%" ) )
2993
- . and ( not_like ( col ( "c1" ) , lit ( "%bar%" ) ) )
2994
- . and ( not_like ( col ( "c1" ) , lit ( "%baz%" ) ) ) ,
2991
+ col ( "c1" )
2992
+ . not_like ( lit ( "%foo%" ) )
2993
+ . and ( col ( "c1" ) . not_like ( lit ( "%bar%" ) ) )
2994
+ . and ( col ( "c1" ) . not_like ( lit ( "%baz%" ) ) ) ,
2995
2995
) ;
2996
2996
// both anchored expressions (translated to equality) and unanchored
2997
2997
assert_change (
2998
2998
regex_match ( col ( "c1" ) , lit ( "foo|^x$|baz" ) ) ,
2999
- like ( col ( "c1" ) , lit ( "%foo%" ) )
2999
+ col ( "c1" )
3000
+ . like ( lit ( "%foo%" ) )
3000
3001
. or ( col ( "c1" ) . eq ( lit ( "x" ) ) )
3001
- . or ( like ( col ( "c1" ) , lit ( "%baz%" ) ) ) ,
3002
+ . or ( col ( "c1" ) . like ( lit ( "%baz%" ) ) ) ,
3002
3003
) ;
3003
3004
assert_change (
3004
3005
regex_not_match ( col ( "c1" ) , lit ( "foo|^bar$|baz" ) ) ,
3005
- not_like ( col ( "c1" ) , lit ( "%foo%" ) )
3006
+ col ( "c1" )
3007
+ . not_like ( lit ( "%foo%" ) )
3006
3008
. and ( col ( "c1" ) . not_eq ( lit ( "bar" ) ) )
3007
- . and ( not_like ( col ( "c1" ) , lit ( "%baz%" ) ) ) ,
3009
+ . and ( col ( "c1" ) . not_like ( lit ( "%baz%" ) ) ) ,
3008
3010
) ;
3009
3011
// Too many patterns (MAX_REGEX_ALTERNATIONS_EXPANSION)
3010
3012
assert_no_change ( regex_match ( col ( "c1" ) , lit ( "foo|bar|baz|blarg|bozo|etc" ) ) ) ;
@@ -3054,46 +3056,6 @@ mod tests {
3054
3056
} )
3055
3057
}
3056
3058
3057
- fn like ( expr : Expr , pattern : impl Into < Expr > ) -> Expr {
3058
- Expr :: Like ( Like {
3059
- negated : false ,
3060
- expr : Box :: new ( expr) ,
3061
- pattern : Box :: new ( pattern. into ( ) ) ,
3062
- escape_char : None ,
3063
- case_insensitive : false ,
3064
- } )
3065
- }
3066
-
3067
- fn not_like ( expr : Expr , pattern : impl Into < Expr > ) -> Expr {
3068
- Expr :: Like ( Like {
3069
- negated : true ,
3070
- expr : Box :: new ( expr) ,
3071
- pattern : Box :: new ( pattern. into ( ) ) ,
3072
- escape_char : None ,
3073
- case_insensitive : false ,
3074
- } )
3075
- }
3076
-
3077
- fn ilike ( expr : Expr , pattern : impl Into < Expr > ) -> Expr {
3078
- Expr :: Like ( Like {
3079
- negated : false ,
3080
- expr : Box :: new ( expr) ,
3081
- pattern : Box :: new ( pattern. into ( ) ) ,
3082
- escape_char : None ,
3083
- case_insensitive : true ,
3084
- } )
3085
- }
3086
-
3087
- fn not_ilike ( expr : Expr , pattern : impl Into < Expr > ) -> Expr {
3088
- Expr :: Like ( Like {
3089
- negated : true ,
3090
- expr : Box :: new ( expr) ,
3091
- pattern : Box :: new ( pattern. into ( ) ) ,
3092
- escape_char : None ,
3093
- case_insensitive : true ,
3094
- } )
3095
- }
3096
-
3097
3059
// ------------------------------
3098
3060
// ----- Simplifier tests -------
3099
3061
// ------------------------------
@@ -3703,119 +3665,117 @@ mod tests {
3703
3665
let null = lit ( ScalarValue :: Utf8 ( None ) ) ;
3704
3666
3705
3667
// expr [NOT] [I]LIKE NULL
3706
- let expr = like ( col ( "c1" ) , null. clone ( ) ) ;
3668
+ let expr = col ( "c1" ) . like ( null. clone ( ) ) ;
3707
3669
assert_eq ! ( simplify( expr) , lit_bool_null( ) ) ;
3708
3670
3709
- let expr = not_like ( col ( "c1" ) , null. clone ( ) ) ;
3671
+ let expr = col ( "c1" ) . not_like ( null. clone ( ) ) ;
3710
3672
assert_eq ! ( simplify( expr) , lit_bool_null( ) ) ;
3711
3673
3712
- let expr = ilike ( col ( "c1" ) , null. clone ( ) ) ;
3674
+ let expr = col ( "c1" ) . ilike ( null. clone ( ) ) ;
3713
3675
assert_eq ! ( simplify( expr) , lit_bool_null( ) ) ;
3714
3676
3715
- let expr = not_ilike ( col ( "c1" ) , null. clone ( ) ) ;
3677
+ let expr = col ( "c1" ) . not_ilike ( null. clone ( ) ) ;
3716
3678
assert_eq ! ( simplify( expr) , lit_bool_null( ) ) ;
3717
3679
3718
3680
// expr [NOT] [I]LIKE '%'
3719
- let expr = like ( col ( "c1" ) , lit ( "%" ) ) ;
3681
+ let expr = col ( "c1" ) . like ( lit ( "%" ) ) ;
3720
3682
assert_eq ! ( simplify( expr) , if_not_null( col( "c1" ) , true ) ) ;
3721
3683
3722
- let expr = not_like ( col ( "c1" ) , lit ( "%" ) ) ;
3684
+ let expr = col ( "c1" ) . not_like ( lit ( "%" ) ) ;
3723
3685
assert_eq ! ( simplify( expr) , if_not_null( col( "c1" ) , false ) ) ;
3724
3686
3725
- let expr = ilike ( col ( "c1" ) , lit ( "%" ) ) ;
3687
+ let expr = col ( "c1" ) . ilike ( lit ( "%" ) ) ;
3726
3688
assert_eq ! ( simplify( expr) , if_not_null( col( "c1" ) , true ) ) ;
3727
3689
3728
- let expr = not_ilike ( col ( "c1" ) , lit ( "%" ) ) ;
3690
+ let expr = col ( "c1" ) . not_ilike ( lit ( "%" ) ) ;
3729
3691
assert_eq ! ( simplify( expr) , if_not_null( col( "c1" ) , false ) ) ;
3730
3692
3731
3693
// expr [NOT] [I]LIKE '%%'
3732
- let expr = like ( col ( "c1" ) , lit ( "%%" ) ) ;
3694
+ let expr = col ( "c1" ) . like ( lit ( "%%" ) ) ;
3733
3695
assert_eq ! ( simplify( expr) , if_not_null( col( "c1" ) , true ) ) ;
3734
3696
3735
- let expr = not_like ( col ( "c1" ) , lit ( "%%" ) ) ;
3697
+ let expr = col ( "c1" ) . not_like ( lit ( "%%" ) ) ;
3736
3698
assert_eq ! ( simplify( expr) , if_not_null( col( "c1" ) , false ) ) ;
3737
3699
3738
- let expr = ilike ( col ( "c1" ) , lit ( "%%" ) ) ;
3700
+ let expr = col ( "c1" ) . ilike ( lit ( "%%" ) ) ;
3739
3701
assert_eq ! ( simplify( expr) , if_not_null( col( "c1" ) , true ) ) ;
3740
3702
3741
- let expr = not_ilike ( col ( "c1" ) , lit ( "%%" ) ) ;
3703
+ let expr = col ( "c1" ) . not_ilike ( lit ( "%%" ) ) ;
3742
3704
assert_eq ! ( simplify( expr) , if_not_null( col( "c1" ) , false ) ) ;
3743
3705
3744
3706
// not_null_expr [NOT] [I]LIKE '%'
3745
- let expr = like ( col ( "c1_non_null" ) , lit ( "%" ) ) ;
3707
+ let expr = col ( "c1_non_null" ) . like ( lit ( "%" ) ) ;
3746
3708
assert_eq ! ( simplify( expr) , lit( true ) ) ;
3747
3709
3748
- let expr = not_like ( col ( "c1_non_null" ) , lit ( "%" ) ) ;
3710
+ let expr = col ( "c1_non_null" ) . not_like ( lit ( "%" ) ) ;
3749
3711
assert_eq ! ( simplify( expr) , lit( false ) ) ;
3750
3712
3751
- let expr = ilike ( col ( "c1_non_null" ) , lit ( "%" ) ) ;
3713
+ let expr = col ( "c1_non_null" ) . ilike ( lit ( "%" ) ) ;
3752
3714
assert_eq ! ( simplify( expr) , lit( true ) ) ;
3753
3715
3754
- let expr = not_ilike ( col ( "c1_non_null" ) , lit ( "%" ) ) ;
3716
+ let expr = col ( "c1_non_null" ) . not_ilike ( lit ( "%" ) ) ;
3755
3717
assert_eq ! ( simplify( expr) , lit( false ) ) ;
3756
3718
3757
3719
// not_null_expr [NOT] [I]LIKE '%%'
3758
- let expr = like ( col ( "c1_non_null" ) , lit ( "%%" ) ) ;
3720
+ let expr = col ( "c1_non_null" ) . like ( lit ( "%%" ) ) ;
3759
3721
assert_eq ! ( simplify( expr) , lit( true ) ) ;
3760
3722
3761
- let expr = not_like ( col ( "c1_non_null" ) , lit ( "%%" ) ) ;
3723
+ let expr = col ( "c1_non_null" ) . not_like ( lit ( "%%" ) ) ;
3762
3724
assert_eq ! ( simplify( expr) , lit( false ) ) ;
3763
3725
3764
- let expr = ilike ( col ( "c1_non_null" ) , lit ( "%%" ) ) ;
3726
+ let expr = col ( "c1_non_null" ) . ilike ( lit ( "%%" ) ) ;
3765
3727
assert_eq ! ( simplify( expr) , lit( true ) ) ;
3766
3728
3767
- let expr = not_ilike ( col ( "c1_non_null" ) , lit ( "%%" ) ) ;
3729
+ let expr = col ( "c1_non_null" ) . not_ilike ( lit ( "%%" ) ) ;
3768
3730
assert_eq ! ( simplify( expr) , lit( false ) ) ;
3769
3731
3770
3732
// null_constant [NOT] [I]LIKE '%'
3771
- let expr = like ( null. clone ( ) , lit ( "%" ) ) ;
3733
+ let expr = null. clone ( ) . like ( lit ( "%" ) ) ;
3772
3734
assert_eq ! ( simplify( expr) , lit_bool_null( ) ) ;
3773
3735
3774
- let expr = not_like ( null. clone ( ) , lit ( "%" ) ) ;
3736
+ let expr = null. clone ( ) . not_like ( lit ( "%" ) ) ;
3775
3737
assert_eq ! ( simplify( expr) , lit_bool_null( ) ) ;
3776
3738
3777
- let expr = ilike ( null. clone ( ) , lit ( "%" ) ) ;
3739
+ let expr = null. clone ( ) . ilike ( lit ( "%" ) ) ;
3778
3740
assert_eq ! ( simplify( expr) , lit_bool_null( ) ) ;
3779
3741
3780
- let expr = not_ilike ( null , lit ( "%" ) ) ;
3742
+ let expr = null . clone ( ) . not_ilike ( lit ( "%" ) ) ;
3781
3743
assert_eq ! ( simplify( expr) , lit_bool_null( ) ) ;
3782
3744
3783
3745
// null_constant [NOT] [I]LIKE '%%'
3784
- let null = lit ( ScalarValue :: Utf8 ( None ) ) ;
3785
- let expr = like ( null. clone ( ) , lit ( "%%" ) ) ;
3746
+ let expr = null. clone ( ) . like ( lit ( "%%" ) ) ;
3786
3747
assert_eq ! ( simplify( expr) , lit_bool_null( ) ) ;
3787
3748
3788
- let expr = not_like ( null. clone ( ) , lit ( "%%" ) ) ;
3749
+ let expr = null. clone ( ) . not_like ( lit ( "%%" ) ) ;
3789
3750
assert_eq ! ( simplify( expr) , lit_bool_null( ) ) ;
3790
3751
3791
- let expr = ilike ( null. clone ( ) , lit ( "%%" ) ) ;
3752
+ let expr = null. clone ( ) . ilike ( lit ( "%%" ) ) ;
3792
3753
assert_eq ! ( simplify( expr) , lit_bool_null( ) ) ;
3793
3754
3794
- let expr = not_ilike ( null , lit ( "%%" ) ) ;
3755
+ let expr = null . clone ( ) . not_ilike ( lit ( "%%" ) ) ;
3795
3756
assert_eq ! ( simplify( expr) , lit_bool_null( ) ) ;
3796
3757
3797
3758
// null_constant [NOT] [I]LIKE 'a%'
3798
- let null = lit ( ScalarValue :: Utf8 ( None ) ) ;
3799
- let expr = like ( null. clone ( ) , lit ( "a%" ) ) ;
3759
+ let expr = null. clone ( ) . like ( lit ( "a%" ) ) ;
3800
3760
assert_eq ! ( simplify( expr) , lit_bool_null( ) ) ;
3801
3761
3802
- let expr = not_like ( null. clone ( ) , lit ( "a%" ) ) ;
3762
+ let expr = null. clone ( ) . not_like ( lit ( "a%" ) ) ;
3803
3763
assert_eq ! ( simplify( expr) , lit_bool_null( ) ) ;
3804
3764
3805
- let expr = ilike ( null. clone ( ) , lit ( "a%" ) ) ;
3765
+ let expr = null. clone ( ) . ilike ( lit ( "a%" ) ) ;
3806
3766
assert_eq ! ( simplify( expr) , lit_bool_null( ) ) ;
3807
3767
3808
- let expr = not_ilike ( null , lit ( "a%" ) ) ;
3768
+ let expr = null . clone ( ) . not_ilike ( lit ( "a%" ) ) ;
3809
3769
assert_eq ! ( simplify( expr) , lit_bool_null( ) ) ;
3810
3770
3811
3771
// expr [NOT] [I]LIKE with pattern without wildcards
3812
- let expr = like ( col ( "c1" ) , lit ( "a" ) ) ;
3772
+ let expr = col ( "c1" ) . like ( lit ( "a" ) ) ;
3813
3773
assert_eq ! ( simplify( expr) , col( "c1" ) . eq( lit( "a" ) ) ) ;
3814
- let expr = not_like ( col ( "c1" ) , lit ( "a" ) ) ;
3774
+ let expr = col ( "c1" ) . not_like ( lit ( "a" ) ) ;
3815
3775
assert_eq ! ( simplify( expr) , col( "c1" ) . not_eq( lit( "a" ) ) ) ;
3816
- let expr = like ( col ( "c1" ) , lit ( "a_" ) ) ;
3776
+ let expr = col ( "c1" ) . like ( lit ( "a_" ) ) ;
3817
3777
assert_eq ! ( simplify( expr) , col( "c1" ) . like( lit( "a_" ) ) ) ;
3818
- let expr = not_like ( col ( "c1" ) , lit ( "a_" ) ) ;
3778
+ let expr = col ( "c1" ) . not_like ( lit ( "a_" ) ) ;
3819
3779
assert_eq ! ( simplify( expr) , col( "c1" ) . not_like( lit( "a_" ) ) ) ;
3820
3780
}
3821
3781
0 commit comments