You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by yi...@apache.org on 2024/02/08 06:39:29 UTC
(doris) 18/32: [fix](nereids)should not infer predicate for nullaware anti-join (#30924)
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
commit 310bde67aba3ba02d47688c4433dc74002f9f4f2
Author: starocean999 <40...@users.noreply.github.com>
AuthorDate: Thu Feb 8 10:49:52 2024 +0800
[fix](nereids)should not infer predicate for nullaware anti-join (#30924)
---
.../org/apache/doris/nereids/rules/rewrite/InferPredicates.java | 1 -
.../data/correctness_p0/test_null_aware_left_anti_join.out | 2 ++
.../filter_push_down/push_down_filter_other_condition.out | 8 --------
.../suites/correctness_p0/test_null_aware_left_anti_join.groovy | 8 ++++++++
.../filter_push_down/push_down_filter_other_condition.groovy | 4 ----
5 files changed, 10 insertions(+), 13 deletions(-)
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/InferPredicates.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/InferPredicates.java
index bafbc45cae3..a9153c1ef50 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/InferPredicates.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/InferPredicates.java
@@ -78,7 +78,6 @@ public class InferPredicates extends DefaultPlanRewriter<JobContext> implements
break;
case LEFT_OUTER_JOIN:
case LEFT_ANTI_JOIN:
- case NULL_AWARE_LEFT_ANTI_JOIN:
right = inferNewPredicate(right, expressions);
break;
case RIGHT_OUTER_JOIN:
diff --git a/regression-test/data/correctness_p0/test_null_aware_left_anti_join.out b/regression-test/data/correctness_p0/test_null_aware_left_anti_join.out
index 09d7d231709..895bd327f34 100644
--- a/regression-test/data/correctness_p0/test_null_aware_left_anti_join.out
+++ b/regression-test/data/correctness_p0/test_null_aware_left_anti_join.out
@@ -16,3 +16,5 @@
-- !semi_emtpy_right --
+-- !select_2 --
+
diff --git a/regression-test/data/nereids_rules_p0/filter_push_down/push_down_filter_other_condition.out b/regression-test/data/nereids_rules_p0/filter_push_down/push_down_filter_other_condition.out
index affd081e071..8bdbcc730ba 100644
--- a/regression-test/data/nereids_rules_p0/filter_push_down/push_down_filter_other_condition.out
+++ b/regression-test/data/nereids_rules_p0/filter_push_down/push_down_filter_other_condition.out
@@ -234,14 +234,6 @@ PhysicalResultSink
----PhysicalAssertNumRows
------PhysicalOlapScan[t2]
--- !pushdown_left_anti_join_subquery_outer --
-PhysicalResultSink
---hashJoin[NULL_AWARE_LEFT_ANTI_JOIN] hashCondition=((t1.id = t2.id)) otherCondition=()
-----filter((t1.id > 1))
-------PhysicalOlapScan[t1]
-----filter((t2.id > 1))
-------PhysicalOlapScan[t2]
-
-- !pushdown_cross_join_subquery_outer --
PhysicalResultSink
--NestedLoopJoin[CROSS_JOIN]
diff --git a/regression-test/suites/correctness_p0/test_null_aware_left_anti_join.groovy b/regression-test/suites/correctness_p0/test_null_aware_left_anti_join.groovy
index 6083290b2e5..a414e860f76 100644
--- a/regression-test/suites/correctness_p0/test_null_aware_left_anti_join.groovy
+++ b/regression-test/suites/correctness_p0/test_null_aware_left_anti_join.groovy
@@ -77,4 +77,12 @@ suite("test_null_aware_left_anti_join") {
select k1 from ${tableName2} t2 where t2.k1 > 2
) order by 1;
"""
+ sql """set enable_nereids_planner=true;"""
+ qt_select_2 """SELECT *
+ FROM test_null_aware_left_anti_join1 AS t1
+ WHERE t1.`k1` NOT IN (
+ SELECT `k1`
+ FROM test_null_aware_left_anti_join2 AS t2
+ )
+ AND t1.`k1` IN (1, 2, 3, 5, 7);"""
}
diff --git a/regression-test/suites/nereids_rules_p0/filter_push_down/push_down_filter_other_condition.groovy b/regression-test/suites/nereids_rules_p0/filter_push_down/push_down_filter_other_condition.groovy
index b08bdac49af..1e539ba8368 100644
--- a/regression-test/suites/nereids_rules_p0/filter_push_down/push_down_filter_other_condition.groovy
+++ b/regression-test/suites/nereids_rules_p0/filter_push_down/push_down_filter_other_condition.groovy
@@ -143,10 +143,6 @@ suite("push_down_filter_other_condition") {
qt_pushdown_left_outer_join_subquery_outer"""
explain shape plan select * from t1 where t1.id = (select id from t2) or t1.id is null and t1.id > 1;
"""
- // Push down join condition to left anti join child outside the subquery
- qt_pushdown_left_anti_join_subquery_outer"""
- explain shape plan select * from t1 where t1.id not in (select id from t2) and t1.id > 1;
- """
// Push down join condition to cross join child outside the subquery
qt_pushdown_cross_join_subquery_outer"""
explain shape plan select * from t1 where exists (select 1 from t2) and t1.id > 1;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org