@@ -74,6 +74,9 @@ impl ExpressionVisitor for ColumnNameVisitor<'_> {
7474 | Expr :: Literal ( _)
7575 | Expr :: BinaryExpr { .. }
7676 | Expr :: AnyExpr { .. }
77+ | Expr :: Like { .. }
78+ | Expr :: ILike { .. }
79+ | Expr :: SimilarTo { .. }
7780 | Expr :: Not ( _)
7881 | Expr :: IsNotNull ( _)
7982 | Expr :: IsNull ( _)
@@ -313,6 +316,11 @@ pub fn expr_sub_expressions(expr: &Expr) -> Result<Vec<Expr>> {
313316 Expr :: AnyExpr { left, right, .. } => {
314317 Ok ( vec ! [ left. as_ref( ) . to_owned( ) , right. as_ref( ) . to_owned( ) ] )
315318 }
319+ Expr :: Like { expr, pattern, .. }
320+ | Expr :: ILike { expr, pattern, .. }
321+ | Expr :: SimilarTo { expr, pattern, .. } => {
322+ Ok ( vec ! [ expr. as_ref( ) . to_owned( ) , pattern. as_ref( ) . to_owned( ) ] )
323+ }
316324 Expr :: IsNull ( expr)
317325 | Expr :: IsNotNull ( expr)
318326 | Expr :: Cast { expr, .. }
@@ -407,6 +415,36 @@ pub fn rewrite_expression(expr: &Expr, expressions: &[Expr]) -> Result<Expr> {
407415 op : * op,
408416 right : Box :: new ( expressions[ 1 ] . clone ( ) ) ,
409417 } ) ,
418+ Expr :: Like {
419+ negated,
420+ escape_char,
421+ ..
422+ } => Ok ( Expr :: Like {
423+ negated : * negated,
424+ expr : Box :: new ( expressions[ 0 ] . clone ( ) ) ,
425+ pattern : Box :: new ( expressions[ 1 ] . clone ( ) ) ,
426+ escape_char : * escape_char,
427+ } ) ,
428+ Expr :: ILike {
429+ negated,
430+ escape_char,
431+ ..
432+ } => Ok ( Expr :: ILike {
433+ negated : * negated,
434+ expr : Box :: new ( expressions[ 0 ] . clone ( ) ) ,
435+ pattern : Box :: new ( expressions[ 1 ] . clone ( ) ) ,
436+ escape_char : * escape_char,
437+ } ) ,
438+ Expr :: SimilarTo {
439+ negated,
440+ escape_char,
441+ ..
442+ } => Ok ( Expr :: SimilarTo {
443+ negated : * negated,
444+ expr : Box :: new ( expressions[ 0 ] . clone ( ) ) ,
445+ pattern : Box :: new ( expressions[ 1 ] . clone ( ) ) ,
446+ escape_char : * escape_char,
447+ } ) ,
410448 Expr :: IsNull ( _) => Ok ( Expr :: IsNull ( Box :: new ( expressions[ 0 ] . clone ( ) ) ) ) ,
411449 Expr :: IsNotNull ( _) => Ok ( Expr :: IsNotNull ( Box :: new ( expressions[ 0 ] . clone ( ) ) ) ) ,
412450 Expr :: ScalarFunction { fun, .. } => Ok ( Expr :: ScalarFunction {
0 commit comments