Skip to content

Commit

Permalink
[fix](nereids) fix The children format needs to be [WhenClause+, Defa…
Browse files Browse the repository at this point in the history
…ultValue?] (apache#38491)

fix The children format needs to be [WhenClause+, DefaultValue?]
  • Loading branch information
924060929 authored Jul 30, 2024
1 parent 45f03ca commit 21a3db6
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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 com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableList.Builder;
Expand All @@ -33,6 +34,12 @@ public Expression visit(Expression expr, C context) {
return rewriteChildren(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 rewriteChildren(this, whenClause, context);
}

/** rewriteChildren */
public static final <E extends Expression, C> E rewriteChildren(
ExpressionVisitor<Expression, C> rewriter, E expr, C context) {
Expand Down
38 changes: 38 additions & 0 deletions regression-test/suites/nereids_syntax_p0/join.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -273,4 +273,42 @@ suite("join") {
"""

order_qt_test "SELECT * FROM lineorder RIGHT SEMI JOIN supplier ON lineorder.lo_suppkey = supplier.s_suppkey and s_name='Supplier#000000029';"

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;
"""
}

0 comments on commit 21a3db6

Please sign in to comment.