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

huajianlan pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-2.0 by this push:
     new 62fff8e750e [fix](nereids) fix The children format needs to be 
[WhenClause+, DefaultValue?] (#38491) (#38778)
62fff8e750e is described below

commit 62fff8e750ea5894adae172db985babe05f9468c
Author: 924060929 <924060...@qq.com>
AuthorDate: Fri Aug 2 20:20:13 2024 +0800

    [fix](nereids) fix The children format needs to be [WhenClause+, 
DefaultValue?] (#38491) (#38778)
    
    fix The children format needs to be [WhenClause+, DefaultValue?]
---
 .../visitor/DefaultExpressionRewriter.java         |  7 ++++
 .../org/apache/doris/regression/suite/Suite.groovy | 11 +++++++
 .../suites/nereids_syntax_p0/join.groovy           | 38 ++++++++++++++++++++++
 3 files changed, 56 insertions(+)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/DefaultExpressionRewriter.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/DefaultExpressionRewriter.java
index 6c25fcbe90b..d49a91c95f8 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/DefaultExpressionRewriter.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/DefaultExpressionRewriter.java
@@ -18,6 +18,7 @@
 package org.apache.doris.nereids.trees.expressions.visitor;
 
 import org.apache.doris.nereids.trees.expressions.Expression;
+import org.apache.doris.nereids.trees.expressions.WhenClause;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -33,6 +34,12 @@ public abstract class DefaultExpressionRewriter<C> extends 
ExpressionVisitor<Exp
         return rewrite(this, expr, context);
     }
 
+    @Override
+    public Expression visitWhenClause(WhenClause whenClause, C context) {
+        // should not rewrite when clause to other expression because CaseWhen 
require WhenClause as children
+        return rewrite(this, whenClause, context);
+    }
+
     /** rewrite */
     public static final <C> Expression rewrite(ExpressionVisitor<Expression, 
C> rewriter, Expression expr, C context) {
         List<Expression> newChildren = new ArrayList<>();
diff --git 
a/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy
 
b/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy
index 160df699805..9963746d254 100644
--- 
a/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy
+++ 
b/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy
@@ -312,6 +312,17 @@ class Suite implements GroovyInterceptable {
         return result
     }
 
+    List<List<Object>> multi_sql(String sqlStr, boolean isOrder = false) {
+        String[] sqls = sqlStr.split(";")
+        def result = new ArrayList<Object>();
+        for (String query : sqls) {
+            if (!query.trim().isEmpty()) {
+                result.add(sql(query, isOrder));
+            }
+        }
+        return result
+    }
+
     List<List<Object>> insert_into_sql_impl(Connection conn, String sqlStr, 
int num) {
         logger.info("insert into " + num + " records")
         def (result, meta) = JdbcUtils.executeToList(conn, sqlStr)
diff --git a/regression-test/suites/nereids_syntax_p0/join.groovy 
b/regression-test/suites/nereids_syntax_p0/join.groovy
index 63382c3ed44..65eddd01d73 100644
--- a/regression-test/suites/nereids_syntax_p0/join.groovy
+++ b/regression-test/suites/nereids_syntax_p0/join.groovy
@@ -271,4 +271,42 @@ suite("join") {
         where
           ref_2.`id` is not NULL
     """
+
+    multi_sql """
+            drop table if exists table_test1;
+            drop table if exists table_test2;
+            
+            CREATE TABLE table_test1 (
+            id VARCHAR(20) NULL,
+            long1 BIGINT NULL,
+            long2 BIGINT NULL,
+            ) ENGINE=OLAP
+            DUPLICATE KEY(id)
+            COMMENT 'olap'
+            DISTRIBUTED BY HASH(id) BUCKETS AUTO
+            PROPERTIES (
+            "replication_allocation" = "tag.location.default: 1"
+            );
+            
+            CREATE TABLE table_test2 (
+            id VARCHAR(20) NULL,
+            re_long_4 BIGINT NULL,
+            ) ENGINE=OLAP
+            DUPLICATE KEY(id)
+            COMMENT 'olap'
+            DISTRIBUTED BY HASH(id) BUCKETS AUTO
+            PROPERTIES (
+            "replication_allocation" = "tag.location.default: 1"
+            ); 
+            
+            SELECT 1
+            from table_test1 b
+            WHERE (
+                CASE
+                WHEN b.long2=(SELECT re_long_4 FROM table_test2 limit 1) THEN 
(select long1 from table_test1 limit 1 )
+                WHEN b.long2=(SELECT re_long_4 FROM table_test2 limit 1) THEN 
(select long1 from table_test1 limit 1)
+                ELSE b.long2
+                END
+            )>0; 
+        """
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to