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