@@ -847,60 +847,47 @@ fn create_name(e: &Expr, input_schema: &DFSchema) -> Result<String> {
847847 pattern,
848848 escape_char,
849849 } ) => {
850- let s = format ! (
851- "{} {} {} {}" ,
852- expr,
853- if * negated { "NOT LIKE" } else { "LIKE" } ,
854- pattern,
855- if let Some ( char ) = escape_char {
856- format!( "CHAR '{}'" , char )
857- } else {
858- "" . to_string( )
859- }
860- ) ;
861- Ok ( s)
850+ let left = create_name ( expr, input_schema) ?;
851+ let not = if * negated { "NOT " } else { "" } ;
852+ let right = create_name ( pattern, input_schema) ?;
853+ let char = if let Some ( char) = escape_char {
854+ format ! ( " CHAR '{}'" , char )
855+ } else {
856+ "" . to_string ( )
857+ } ;
858+ Ok ( format ! ( "{} {}LIKE {}{}" , left, not, right, char ) )
862859 }
863860 Expr :: ILike ( Like {
864861 negated,
865862 expr,
866863 pattern,
867864 escape_char,
868865 } ) => {
869- let s = format ! (
870- "{} {} {} {}" ,
871- expr,
872- if * negated { "NOT ILIKE" } else { "ILIKE" } ,
873- pattern,
874- if let Some ( char ) = escape_char {
875- format!( "CHAR '{}'" , char )
876- } else {
877- "" . to_string( )
878- }
879- ) ;
880- Ok ( s)
866+ let left = create_name ( expr, input_schema) ?;
867+ let not = if * negated { "NOT " } else { "" } ;
868+ let right = create_name ( pattern, input_schema) ?;
869+ let char = if let Some ( char) = escape_char {
870+ format ! ( " CHAR '{}'" , char )
871+ } else {
872+ "" . to_string ( )
873+ } ;
874+ Ok ( format ! ( "{} {}ILIKE {}{}" , left, not, right, char ) )
881875 }
882876 Expr :: SimilarTo ( Like {
883877 negated,
884878 expr,
885879 pattern,
886880 escape_char,
887881 } ) => {
888- let s = format ! (
889- "{} {} {} {}" ,
890- expr,
891- if * negated {
892- "NOT SIMILAR TO"
893- } else {
894- "SIMILAR TO"
895- } ,
896- pattern,
897- if let Some ( char ) = escape_char {
898- format!( "CHAR '{}'" , char )
899- } else {
900- "" . to_string( )
901- }
902- ) ;
903- Ok ( s)
882+ let left = create_name ( expr, input_schema) ?;
883+ let not = if * negated { "NOT " } else { "" } ;
884+ let right = create_name ( pattern, input_schema) ?;
885+ let char = if let Some ( char) = escape_char {
886+ format ! ( " CHAR '{}'" , char )
887+ } else {
888+ "" . to_string ( )
889+ } ;
890+ Ok ( format ! ( "{} {}SIMILAR TO {}{}" , left, not, right, char ) )
904891 }
905892 Expr :: Case {
906893 expr,
0 commit comments