This is an automated email from the ASF dual-hosted git repository.

morrysnow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 420c84935de [Fix](Nereids) fix fe fold constant evaluate like function 
(#37616)
420c84935de is described below

commit 420c84935de69d10c21c47b1b1bfd392e2f30b79
Author: LiBinfeng <[email protected]>
AuthorDate: Mon Jul 15 17:08:16 2024 +0800

    [Fix](Nereids) fix fe fold constant evaluate like function (#37616)
    
    Problem:
    When evaluating like function using fe, it can not evaluating
    nullliteral correctly
    Example:
    Null like "%string%"   can not folded to null on fe
    Reason:
    Fe fold constant does not deal with like function
    Solved:
    Add fe fold constant of like function
---
 .../nereids/rules/expression/rules/FoldConstantRuleOnFE.java  |  6 ------
 .../expression/fold_constant/fold_constant_by_fe.groovy       | 11 ++++++++++-
 2 files changed, 10 insertions(+), 7 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnFE.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnFE.java
index 1106df5f7c3..d7627d698d6 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnFE.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnFE.java
@@ -43,7 +43,6 @@ import org.apache.doris.nereids.trees.expressions.InPredicate;
 import org.apache.doris.nereids.trees.expressions.IsNull;
 import org.apache.doris.nereids.trees.expressions.LessThan;
 import org.apache.doris.nereids.trees.expressions.LessThanEqual;
-import org.apache.doris.nereids.trees.expressions.Like;
 import org.apache.doris.nereids.trees.expressions.Not;
 import org.apache.doris.nereids.trees.expressions.NullSafeEqual;
 import org.apache.doris.nereids.trees.expressions.Or;
@@ -403,11 +402,6 @@ public class FoldConstantRuleOnFE extends 
AbstractExpressionRewriteRule
         }
     }
 
-    @Override
-    public Expression visitLike(Like like, ExpressionRewriteContext context) {
-        return like;
-    }
-
     @Override
     public Expression visitCast(Cast cast, ExpressionRewriteContext context) {
         cast = rewriteChildren(cast, context);
diff --git 
a/regression-test/suites/nereids_p0/expression/fold_constant/fold_constant_by_fe.groovy
 
b/regression-test/suites/nereids_p0/expression/fold_constant/fold_constant_by_fe.groovy
index a706ee9abf9..cc63662657c 100644
--- 
a/regression-test/suites/nereids_p0/expression/fold_constant/fold_constant_by_fe.groovy
+++ 
b/regression-test/suites/nereids_p0/expression/fold_constant/fold_constant_by_fe.groovy
@@ -19,6 +19,7 @@ suite("test_fold_constant_by_fe") {
     sql 'set enable_nereids_planner=true'
     sql 'set enable_fallback_to_original_planner=false'
     sql 'set enable_fold_nondeterministic_fn=true'
+    sql 'set enable_fold_constant_by_be=false'
 
     def results = sql 'select uuid(), uuid()'
     assertFalse(Objects.equals(results[0][0], results[0][1]))
@@ -154,4 +155,12 @@ suite("test_fold_constant_by_fe") {
         res = res.split('VUNION')[1]
         assertFalse(res.contains("unix"))
     }
-}
\ No newline at end of file
+
+    // test null like string cause of fe need to fold constant like that to 
enable not null derive
+    res = sql """explain select null like '%123%'"""
+    assertFalse(res.contains("like"))
+    // now fe fold constant still can not deal with this case
+    res = sql """explain select "12" like '%123%'"""
+    assertTrue(res.contains("like"))
+
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to