This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push:
new c23ab25474e [fix](nereids)keep equal predicate as join conjunct even
if it can be fold to null literal (#35842)
c23ab25474e is described below
commit c23ab25474e35b58c9b8f8b643f0f3a560b1f714
Author: starocean999 <[email protected]>
AuthorDate: Tue Jun 4 14:46:58 2024 +0800
[fix](nereids)keep equal predicate as join conjunct even if it can be fold
to null literal (#35842)
pick from master https://github.com/apache/doris/pull/35811
## Proposed changes
Issue Number: close #xxx
<!--Describe your changes.-->
---
.../org/apache/doris/nereids/rules/expression/ExpressionRewrite.java | 5 +++++
regression-test/data/nereids_p0/join/test_mark_join.out | 3 +++
regression-test/suites/nereids_p0/join/test_mark_join.groovy | 2 ++
3 files changed, 10 insertions(+)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/ExpressionRewrite.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/ExpressionRewrite.java
index b547f693a7c..0eb4d3a79a0 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/ExpressionRewrite.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/ExpressionRewrite.java
@@ -25,6 +25,7 @@ import org.apache.doris.nereids.rules.Rule;
import org.apache.doris.nereids.rules.RuleType;
import org.apache.doris.nereids.rules.rewrite.OneRewriteRuleFactory;
import org.apache.doris.nereids.rules.rewrite.RewriteRuleFactory;
+import org.apache.doris.nereids.trees.expressions.EqualPredicate;
import org.apache.doris.nereids.trees.expressions.Expression;
import org.apache.doris.nereids.trees.expressions.NamedExpression;
import org.apache.doris.nereids.trees.expressions.functions.Function;
@@ -206,6 +207,10 @@ public class ExpressionRewrite implements
RewriteRuleFactory {
ImmutableList.Builder<Expression> rewrittenConjuncts = new
ImmutableList.Builder<>();
for (Expression expr : conjuncts) {
Expression newExpr = rewriter.rewrite(expr, context);
+ newExpr = newExpr.isNullLiteral() && expr instanceof
EqualPredicate
+ ?
expr.withChildren(rewriter.rewrite(expr.child(0), context),
+ rewriter.rewrite(expr.child(1),
context))
+ : newExpr;
isChanged = isChanged || !newExpr.equals(expr);
rewrittenConjuncts.addAll(ExpressionUtils.extractConjunction(newExpr));
}
diff --git a/regression-test/data/nereids_p0/join/test_mark_join.out
b/regression-test/data/nereids_p0/join/test_mark_join.out
index 1ab6bcce40e..59fc7d651ad 100644
--- a/regression-test/data/nereids_p0/join/test_mark_join.out
+++ b/regression-test/data/nereids_p0/join/test_mark_join.out
@@ -50,3 +50,6 @@
2 q 5
0 6
+-- !mark_join_null_conjunct --
+\N
+
diff --git a/regression-test/suites/nereids_p0/join/test_mark_join.groovy
b/regression-test/suites/nereids_p0/join/test_mark_join.groovy
index e951ea15577..3b07c357b5d 100644
--- a/regression-test/suites/nereids_p0/join/test_mark_join.groovy
+++ b/regression-test/suites/nereids_p0/join/test_mark_join.groovy
@@ -140,4 +140,6 @@ suite("test_mark_join", "nereids_p0") {
WHERE EXISTS ( SELECT MIN(`pk`) FROM
table_7_undef_partitions2_keys3_properties4_distributed_by5 AS t2 WHERE t1.pk =
6 )
OR EXISTS ( SELECT `pk` FROM
table_7_undef_partitions2_keys3_properties4_distributed_by5 AS t2 WHERE t1.pk =
5 ) order by pk ;
"""
+
+ qt_mark_join_null_conjunct """select null in ( select k1 from
test_mark_join_t1);"""
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]