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

jakevin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 2f529c1c7b6 [feature](Nereids): remove True in Join condition (#26951)
2f529c1c7b6 is described below

commit 2f529c1c7b671daf88490853746644de808e15bb
Author: jakevin <[email protected]>
AuthorDate: Wed Nov 15 15:58:33 2023 +0800

    [feature](Nereids): remove True in Join condition (#26951)
    
    Remove `True` in Join Condition like `SELECT * FROM t1 JOIN t2 on True`;
---
 .../doris/nereids/jobs/executor/Rewriter.java      |   2 +
 .../org/apache/doris/nereids/rules/RuleType.java   |   2 +
 .../rules/rewrite/EliminateJoinCondition.java      |  49 ++
 .../trees/expressions/literal/BooleanLiteral.java  |   2 +-
 .../rules/rewrite/EliminateJoinConditionTest.java  |  51 ++
 .../eliminate_join_condition.out                   | 513 +++++++++++++++++++++
 .../eliminate_join_condition.groovy                | 114 +++++
 7 files changed, 732 insertions(+), 1 deletion(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/executor/Rewriter.java 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/executor/Rewriter.java
index 802ddaa6c0e..1f314ce5653 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/executor/Rewriter.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/executor/Rewriter.java
@@ -56,6 +56,7 @@ import 
org.apache.doris.nereids.rules.rewrite.EliminateAssertNumRows;
 import org.apache.doris.nereids.rules.rewrite.EliminateDedupJoinCondition;
 import org.apache.doris.nereids.rules.rewrite.EliminateEmptyRelation;
 import org.apache.doris.nereids.rules.rewrite.EliminateFilter;
+import org.apache.doris.nereids.rules.rewrite.EliminateJoinCondition;
 import org.apache.doris.nereids.rules.rewrite.EliminateLimit;
 import org.apache.doris.nereids.rules.rewrite.EliminateNotNull;
 import org.apache.doris.nereids.rules.rewrite.EliminateNullAwareLeftAntiJoin;
@@ -173,6 +174,7 @@ public class Rewriter extends AbstractBatchJobExecutor {
                             new EliminateLimit(),
                             new EliminateFilter(),
                             new EliminateAggregate(),
+                            new EliminateJoinCondition(),
                             new EliminateAssertNumRows()
                     )
             ),
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/RuleType.java 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/RuleType.java
index 94ccef528fd..f8760ada9ec 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/RuleType.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/RuleType.java
@@ -201,6 +201,8 @@ public enum RuleType {
     ELIMINATE_LIMIT_ON_ONE_ROW_RELATION(RuleTypeClass.REWRITE),
     ELIMINATE_LIMIT_ON_EMPTY_RELATION(RuleTypeClass.REWRITE),
     ELIMINATE_FILTER(RuleTypeClass.REWRITE),
+    ELIMINATE_JOIN(RuleTypeClass.REWRITE),
+    ELIMINATE_JOIN_CONDITION(RuleTypeClass.REWRITE),
     ELIMINATE_FILTER_ON_ONE_RELATION(RuleTypeClass.REWRITE),
     ELIMINATE_NOT_NULL(RuleTypeClass.REWRITE),
     ELIMINATE_UNNECESSARY_PROJECT(RuleTypeClass.REWRITE),
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateJoinCondition.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateJoinCondition.java
new file mode 100644
index 00000000000..37e4cb85cea
--- /dev/null
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateJoinCondition.java
@@ -0,0 +1,49 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package org.apache.doris.nereids.rules.rewrite;
+
+import org.apache.doris.nereids.rules.Rule;
+import org.apache.doris.nereids.rules.RuleType;
+import org.apache.doris.nereids.trees.expressions.Expression;
+import org.apache.doris.nereids.trees.expressions.literal.BooleanLiteral;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * Eliminate true Condition in Join Condition.
+ */
+public class EliminateJoinCondition extends OneRewriteRuleFactory {
+
+    @Override
+    public Rule build() {
+        return logicalJoin().then(join -> {
+            List<Expression> hashJoinConjuncts = 
join.getHashJoinConjuncts().stream()
+                    .filter(expression -> 
!expression.equals(BooleanLiteral.TRUE))
+                    .collect(Collectors.toList());
+            List<Expression> otherJoinConjuncts = 
join.getOtherJoinConjuncts().stream()
+                    .filter(expression -> 
!expression.equals(BooleanLiteral.TRUE))
+                    .collect(Collectors.toList());
+            if (hashJoinConjuncts.size() == join.getHashJoinConjuncts().size()
+                    && otherJoinConjuncts.size() == 
join.getOtherJoinConjuncts().size()) {
+                return null;
+            }
+            return join.withJoinConjuncts(hashJoinConjuncts, 
otherJoinConjuncts);
+        }).toRule(RuleType.ELIMINATE_JOIN_CONDITION);
+    }
+}
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/literal/BooleanLiteral.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/literal/BooleanLiteral.java
index d3dc5ef9af6..f3b884dc15b 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/literal/BooleanLiteral.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/literal/BooleanLiteral.java
@@ -61,7 +61,7 @@ public class BooleanLiteral extends Literal {
 
     @Override
     public String toString() {
-        return Boolean.valueOf(value).toString().toUpperCase();
+        return Boolean.toString(value).toUpperCase();
     }
 
     @Override
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/EliminateJoinConditionTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/EliminateJoinConditionTest.java
new file mode 100644
index 00000000000..37acd78e027
--- /dev/null
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/EliminateJoinConditionTest.java
@@ -0,0 +1,51 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package org.apache.doris.nereids.rules.rewrite;
+
+import org.apache.doris.nereids.trees.expressions.literal.BooleanLiteral;
+import org.apache.doris.nereids.trees.plans.JoinType;
+import org.apache.doris.nereids.trees.plans.logical.LogicalOlapScan;
+import org.apache.doris.nereids.trees.plans.logical.LogicalPlan;
+import org.apache.doris.nereids.util.LogicalPlanBuilder;
+import org.apache.doris.nereids.util.MemoPatternMatchSupported;
+import org.apache.doris.nereids.util.MemoTestUtils;
+import org.apache.doris.nereids.util.PlanChecker;
+import org.apache.doris.nereids.util.PlanConstructor;
+
+import com.google.common.collect.ImmutableList;
+import org.junit.jupiter.api.Test;
+
+class EliminateJoinConditionTest implements MemoPatternMatchSupported {
+    private final LogicalOlapScan scan1 = 
PlanConstructor.newLogicalOlapScan(0, "t1", 0);
+    private final LogicalOlapScan scan2 = 
PlanConstructor.newLogicalOlapScan(1, "t2", 0);
+
+    @Test
+    void basicCase() {
+        LogicalPlan filterFalse = new LogicalPlanBuilder(scan1)
+                .join(scan2, JoinType.INNER_JOIN, 
ImmutableList.of(BooleanLiteral.TRUE),
+                        ImmutableList.of(BooleanLiteral.TRUE))
+                .build();
+
+        PlanChecker.from(MemoTestUtils.createConnectContext(), filterFalse)
+                .applyTopDown(new EliminateJoinCondition())
+                .matches(
+                        logicalJoin().when(join -> 
join.getHashJoinConjuncts().size() == 0
+                                && join.getOtherJoinConjuncts().size() == 0)
+                );
+    }
+}
diff --git 
a/regression-test/data/nereids_rules_p0/eliminate_join_condition/eliminate_join_condition.out
 
b/regression-test/data/nereids_rules_p0/eliminate_join_condition/eliminate_join_condition.out
new file mode 100644
index 00000000000..fad36fee64f
--- /dev/null
+++ 
b/regression-test/data/nereids_rules_p0/eliminate_join_condition/eliminate_join_condition.out
@@ -0,0 +1,513 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !inner_join --
+PhysicalResultSink
+--PhysicalDistribute
+----PhysicalProject
+------NestedLoopJoin[CROSS_JOIN]
+--------PhysicalOlapScan[t]
+--------PhysicalDistribute
+----------PhysicalOlapScan[t]
+
+-- !left_outer_join --
+PhysicalResultSink
+--PhysicalDistribute
+----PhysicalProject
+------NestedLoopJoin[LEFT_OUTER_JOIN]
+--------PhysicalOlapScan[t]
+--------PhysicalDistribute
+----------PhysicalOlapScan[t]
+
+-- !right_outer_join --
+PhysicalResultSink
+--PhysicalDistribute
+----PhysicalProject
+------NestedLoopJoin[LEFT_OUTER_JOIN]
+--------PhysicalOlapScan[t]
+--------PhysicalDistribute
+----------PhysicalOlapScan[t]
+
+-- !full_outer_join --
+PhysicalResultSink
+--PhysicalProject
+----NestedLoopJoin[FULL_OUTER_JOIN]
+------PhysicalDistribute
+--------PhysicalOlapScan[t]
+------PhysicalDistribute
+--------PhysicalOlapScan[t]
+
+-- !left_semi_join --
+PhysicalResultSink
+--PhysicalDistribute
+----PhysicalProject
+------NestedLoopJoin[LEFT_SEMI_JOIN]
+--------PhysicalOlapScan[t]
+--------PhysicalDistribute
+----------PhysicalProject
+------------PhysicalOlapScan[t]
+
+-- !left_anti_join --
+PhysicalResultSink
+--PhysicalDistribute
+----PhysicalProject
+------NestedLoopJoin[LEFT_ANTI_JOIN]
+--------PhysicalOlapScan[t]
+--------PhysicalDistribute
+----------PhysicalProject
+------------PhysicalOlapScan[t]
+
+-- !right_semi_join --
+PhysicalResultSink
+--PhysicalDistribute
+----PhysicalProject
+------NestedLoopJoin[LEFT_SEMI_JOIN]
+--------PhysicalOlapScan[t]
+--------PhysicalDistribute
+----------PhysicalProject
+------------PhysicalOlapScan[t]
+
+-- !right_anti_join --
+PhysicalResultSink
+--PhysicalDistribute
+----PhysicalProject
+------NestedLoopJoin[LEFT_ANTI_JOIN]
+--------PhysicalOlapScan[t]
+--------PhysicalDistribute
+----------PhysicalProject
+------------PhysicalOlapScan[t]
+
+-- !inner_join --
+1      1       a       1       1       a
+1      1       a       10      \N      \N
+1      1       a       2       \N      a
+1      1       a       3       1       \N
+1      1       a       4       2       b
+1      1       a       5       \N      b
+1      1       a       6       2       \N
+1      1       a       7       3       c
+1      1       a       8       \N      c
+1      1       a       9       3       \N
+10     \N      \N      1       1       a
+10     \N      \N      10      \N      \N
+10     \N      \N      2       \N      a
+10     \N      \N      3       1       \N
+10     \N      \N      4       2       b
+10     \N      \N      5       \N      b
+10     \N      \N      6       2       \N
+10     \N      \N      7       3       c
+10     \N      \N      8       \N      c
+10     \N      \N      9       3       \N
+2      \N      a       1       1       a
+2      \N      a       10      \N      \N
+2      \N      a       2       \N      a
+2      \N      a       3       1       \N
+2      \N      a       4       2       b
+2      \N      a       5       \N      b
+2      \N      a       6       2       \N
+2      \N      a       7       3       c
+2      \N      a       8       \N      c
+2      \N      a       9       3       \N
+3      1       \N      1       1       a
+3      1       \N      10      \N      \N
+3      1       \N      2       \N      a
+3      1       \N      3       1       \N
+3      1       \N      4       2       b
+3      1       \N      5       \N      b
+3      1       \N      6       2       \N
+3      1       \N      7       3       c
+3      1       \N      8       \N      c
+3      1       \N      9       3       \N
+4      2       b       1       1       a
+4      2       b       10      \N      \N
+4      2       b       2       \N      a
+4      2       b       3       1       \N
+4      2       b       4       2       b
+4      2       b       5       \N      b
+4      2       b       6       2       \N
+4      2       b       7       3       c
+4      2       b       8       \N      c
+4      2       b       9       3       \N
+5      \N      b       1       1       a
+5      \N      b       10      \N      \N
+5      \N      b       2       \N      a
+5      \N      b       3       1       \N
+5      \N      b       4       2       b
+5      \N      b       5       \N      b
+5      \N      b       6       2       \N
+5      \N      b       7       3       c
+5      \N      b       8       \N      c
+5      \N      b       9       3       \N
+6      2       \N      1       1       a
+6      2       \N      10      \N      \N
+6      2       \N      2       \N      a
+6      2       \N      3       1       \N
+6      2       \N      4       2       b
+6      2       \N      5       \N      b
+6      2       \N      6       2       \N
+6      2       \N      7       3       c
+6      2       \N      8       \N      c
+6      2       \N      9       3       \N
+7      3       c       1       1       a
+7      3       c       10      \N      \N
+7      3       c       2       \N      a
+7      3       c       3       1       \N
+7      3       c       4       2       b
+7      3       c       5       \N      b
+7      3       c       6       2       \N
+7      3       c       7       3       c
+7      3       c       8       \N      c
+7      3       c       9       3       \N
+8      \N      c       1       1       a
+8      \N      c       10      \N      \N
+8      \N      c       2       \N      a
+8      \N      c       3       1       \N
+8      \N      c       4       2       b
+8      \N      c       5       \N      b
+8      \N      c       6       2       \N
+8      \N      c       7       3       c
+8      \N      c       8       \N      c
+8      \N      c       9       3       \N
+9      3       \N      1       1       a
+9      3       \N      10      \N      \N
+9      3       \N      2       \N      a
+9      3       \N      3       1       \N
+9      3       \N      4       2       b
+9      3       \N      5       \N      b
+9      3       \N      6       2       \N
+9      3       \N      7       3       c
+9      3       \N      8       \N      c
+9      3       \N      9       3       \N
+
+-- !left_outer_join --
+1      1       a       1       1       a
+1      1       a       10      \N      \N
+1      1       a       2       \N      a
+1      1       a       3       1       \N
+1      1       a       4       2       b
+1      1       a       5       \N      b
+1      1       a       6       2       \N
+1      1       a       7       3       c
+1      1       a       8       \N      c
+1      1       a       9       3       \N
+10     \N      \N      1       1       a
+10     \N      \N      10      \N      \N
+10     \N      \N      2       \N      a
+10     \N      \N      3       1       \N
+10     \N      \N      4       2       b
+10     \N      \N      5       \N      b
+10     \N      \N      6       2       \N
+10     \N      \N      7       3       c
+10     \N      \N      8       \N      c
+10     \N      \N      9       3       \N
+2      \N      a       1       1       a
+2      \N      a       10      \N      \N
+2      \N      a       2       \N      a
+2      \N      a       3       1       \N
+2      \N      a       4       2       b
+2      \N      a       5       \N      b
+2      \N      a       6       2       \N
+2      \N      a       7       3       c
+2      \N      a       8       \N      c
+2      \N      a       9       3       \N
+3      1       \N      1       1       a
+3      1       \N      10      \N      \N
+3      1       \N      2       \N      a
+3      1       \N      3       1       \N
+3      1       \N      4       2       b
+3      1       \N      5       \N      b
+3      1       \N      6       2       \N
+3      1       \N      7       3       c
+3      1       \N      8       \N      c
+3      1       \N      9       3       \N
+4      2       b       1       1       a
+4      2       b       10      \N      \N
+4      2       b       2       \N      a
+4      2       b       3       1       \N
+4      2       b       4       2       b
+4      2       b       5       \N      b
+4      2       b       6       2       \N
+4      2       b       7       3       c
+4      2       b       8       \N      c
+4      2       b       9       3       \N
+5      \N      b       1       1       a
+5      \N      b       10      \N      \N
+5      \N      b       2       \N      a
+5      \N      b       3       1       \N
+5      \N      b       4       2       b
+5      \N      b       5       \N      b
+5      \N      b       6       2       \N
+5      \N      b       7       3       c
+5      \N      b       8       \N      c
+5      \N      b       9       3       \N
+6      2       \N      1       1       a
+6      2       \N      10      \N      \N
+6      2       \N      2       \N      a
+6      2       \N      3       1       \N
+6      2       \N      4       2       b
+6      2       \N      5       \N      b
+6      2       \N      6       2       \N
+6      2       \N      7       3       c
+6      2       \N      8       \N      c
+6      2       \N      9       3       \N
+7      3       c       1       1       a
+7      3       c       10      \N      \N
+7      3       c       2       \N      a
+7      3       c       3       1       \N
+7      3       c       4       2       b
+7      3       c       5       \N      b
+7      3       c       6       2       \N
+7      3       c       7       3       c
+7      3       c       8       \N      c
+7      3       c       9       3       \N
+8      \N      c       1       1       a
+8      \N      c       10      \N      \N
+8      \N      c       2       \N      a
+8      \N      c       3       1       \N
+8      \N      c       4       2       b
+8      \N      c       5       \N      b
+8      \N      c       6       2       \N
+8      \N      c       7       3       c
+8      \N      c       8       \N      c
+8      \N      c       9       3       \N
+9      3       \N      1       1       a
+9      3       \N      10      \N      \N
+9      3       \N      2       \N      a
+9      3       \N      3       1       \N
+9      3       \N      4       2       b
+9      3       \N      5       \N      b
+9      3       \N      6       2       \N
+9      3       \N      7       3       c
+9      3       \N      8       \N      c
+9      3       \N      9       3       \N
+
+-- !right_outer_join --
+1      1       a       1       1       a
+1      1       a       10      \N      \N
+1      1       a       2       \N      a
+1      1       a       3       1       \N
+1      1       a       4       2       b
+1      1       a       5       \N      b
+1      1       a       6       2       \N
+1      1       a       7       3       c
+1      1       a       8       \N      c
+1      1       a       9       3       \N
+10     \N      \N      1       1       a
+10     \N      \N      10      \N      \N
+10     \N      \N      2       \N      a
+10     \N      \N      3       1       \N
+10     \N      \N      4       2       b
+10     \N      \N      5       \N      b
+10     \N      \N      6       2       \N
+10     \N      \N      7       3       c
+10     \N      \N      8       \N      c
+10     \N      \N      9       3       \N
+2      \N      a       1       1       a
+2      \N      a       10      \N      \N
+2      \N      a       2       \N      a
+2      \N      a       3       1       \N
+2      \N      a       4       2       b
+2      \N      a       5       \N      b
+2      \N      a       6       2       \N
+2      \N      a       7       3       c
+2      \N      a       8       \N      c
+2      \N      a       9       3       \N
+3      1       \N      1       1       a
+3      1       \N      10      \N      \N
+3      1       \N      2       \N      a
+3      1       \N      3       1       \N
+3      1       \N      4       2       b
+3      1       \N      5       \N      b
+3      1       \N      6       2       \N
+3      1       \N      7       3       c
+3      1       \N      8       \N      c
+3      1       \N      9       3       \N
+4      2       b       1       1       a
+4      2       b       10      \N      \N
+4      2       b       2       \N      a
+4      2       b       3       1       \N
+4      2       b       4       2       b
+4      2       b       5       \N      b
+4      2       b       6       2       \N
+4      2       b       7       3       c
+4      2       b       8       \N      c
+4      2       b       9       3       \N
+5      \N      b       1       1       a
+5      \N      b       10      \N      \N
+5      \N      b       2       \N      a
+5      \N      b       3       1       \N
+5      \N      b       4       2       b
+5      \N      b       5       \N      b
+5      \N      b       6       2       \N
+5      \N      b       7       3       c
+5      \N      b       8       \N      c
+5      \N      b       9       3       \N
+6      2       \N      1       1       a
+6      2       \N      10      \N      \N
+6      2       \N      2       \N      a
+6      2       \N      3       1       \N
+6      2       \N      4       2       b
+6      2       \N      5       \N      b
+6      2       \N      6       2       \N
+6      2       \N      7       3       c
+6      2       \N      8       \N      c
+6      2       \N      9       3       \N
+7      3       c       1       1       a
+7      3       c       10      \N      \N
+7      3       c       2       \N      a
+7      3       c       3       1       \N
+7      3       c       4       2       b
+7      3       c       5       \N      b
+7      3       c       6       2       \N
+7      3       c       7       3       c
+7      3       c       8       \N      c
+7      3       c       9       3       \N
+8      \N      c       1       1       a
+8      \N      c       10      \N      \N
+8      \N      c       2       \N      a
+8      \N      c       3       1       \N
+8      \N      c       4       2       b
+8      \N      c       5       \N      b
+8      \N      c       6       2       \N
+8      \N      c       7       3       c
+8      \N      c       8       \N      c
+8      \N      c       9       3       \N
+9      3       \N      1       1       a
+9      3       \N      10      \N      \N
+9      3       \N      2       \N      a
+9      3       \N      3       1       \N
+9      3       \N      4       2       b
+9      3       \N      5       \N      b
+9      3       \N      6       2       \N
+9      3       \N      7       3       c
+9      3       \N      8       \N      c
+9      3       \N      9       3       \N
+
+-- !full_outer_join --
+1      1       a       1       1       a
+1      1       a       10      \N      \N
+1      1       a       2       \N      a
+1      1       a       3       1       \N
+1      1       a       4       2       b
+1      1       a       5       \N      b
+1      1       a       6       2       \N
+1      1       a       7       3       c
+1      1       a       8       \N      c
+1      1       a       9       3       \N
+10     \N      \N      1       1       a
+10     \N      \N      10      \N      \N
+10     \N      \N      2       \N      a
+10     \N      \N      3       1       \N
+10     \N      \N      4       2       b
+10     \N      \N      5       \N      b
+10     \N      \N      6       2       \N
+10     \N      \N      7       3       c
+10     \N      \N      8       \N      c
+10     \N      \N      9       3       \N
+2      \N      a       1       1       a
+2      \N      a       10      \N      \N
+2      \N      a       2       \N      a
+2      \N      a       3       1       \N
+2      \N      a       4       2       b
+2      \N      a       5       \N      b
+2      \N      a       6       2       \N
+2      \N      a       7       3       c
+2      \N      a       8       \N      c
+2      \N      a       9       3       \N
+3      1       \N      1       1       a
+3      1       \N      10      \N      \N
+3      1       \N      2       \N      a
+3      1       \N      3       1       \N
+3      1       \N      4       2       b
+3      1       \N      5       \N      b
+3      1       \N      6       2       \N
+3      1       \N      7       3       c
+3      1       \N      8       \N      c
+3      1       \N      9       3       \N
+4      2       b       1       1       a
+4      2       b       10      \N      \N
+4      2       b       2       \N      a
+4      2       b       3       1       \N
+4      2       b       4       2       b
+4      2       b       5       \N      b
+4      2       b       6       2       \N
+4      2       b       7       3       c
+4      2       b       8       \N      c
+4      2       b       9       3       \N
+5      \N      b       1       1       a
+5      \N      b       10      \N      \N
+5      \N      b       2       \N      a
+5      \N      b       3       1       \N
+5      \N      b       4       2       b
+5      \N      b       5       \N      b
+5      \N      b       6       2       \N
+5      \N      b       7       3       c
+5      \N      b       8       \N      c
+5      \N      b       9       3       \N
+6      2       \N      1       1       a
+6      2       \N      10      \N      \N
+6      2       \N      2       \N      a
+6      2       \N      3       1       \N
+6      2       \N      4       2       b
+6      2       \N      5       \N      b
+6      2       \N      6       2       \N
+6      2       \N      7       3       c
+6      2       \N      8       \N      c
+6      2       \N      9       3       \N
+7      3       c       1       1       a
+7      3       c       10      \N      \N
+7      3       c       2       \N      a
+7      3       c       3       1       \N
+7      3       c       4       2       b
+7      3       c       5       \N      b
+7      3       c       6       2       \N
+7      3       c       7       3       c
+7      3       c       8       \N      c
+7      3       c       9       3       \N
+8      \N      c       1       1       a
+8      \N      c       10      \N      \N
+8      \N      c       2       \N      a
+8      \N      c       3       1       \N
+8      \N      c       4       2       b
+8      \N      c       5       \N      b
+8      \N      c       6       2       \N
+8      \N      c       7       3       c
+8      \N      c       8       \N      c
+8      \N      c       9       3       \N
+9      3       \N      1       1       a
+9      3       \N      10      \N      \N
+9      3       \N      2       \N      a
+9      3       \N      3       1       \N
+9      3       \N      4       2       b
+9      3       \N      5       \N      b
+9      3       \N      6       2       \N
+9      3       \N      7       3       c
+9      3       \N      8       \N      c
+9      3       \N      9       3       \N
+
+-- !left_semi_join --
+1      1       a
+10     \N      \N
+2      \N      a
+3      1       \N
+4      2       b
+5      \N      b
+6      2       \N
+7      3       c
+8      \N      c
+9      3       \N
+
+-- !left_anti_join --
+
+-- !right_semi_join --
+1      1       a
+10     \N      \N
+2      \N      a
+3      1       \N
+4      2       b
+5      \N      b
+6      2       \N
+7      3       c
+8      \N      c
+9      3       \N
+
+-- !right_anti_join --
+
diff --git 
a/regression-test/suites/nereids_rules_p0/eliminate_join_condition/eliminate_join_condition.groovy
 
b/regression-test/suites/nereids_rules_p0/eliminate_join_condition/eliminate_join_condition.groovy
new file mode 100644
index 00000000000..09f2c9a2d32
--- /dev/null
+++ 
b/regression-test/suites/nereids_rules_p0/eliminate_join_condition/eliminate_join_condition.groovy
@@ -0,0 +1,114 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+suite("eliminate_join_condition") {
+    sql "SET enable_nereids_planner=true"
+    sql "SET enable_fallback_to_original_planner=false"
+
+    sql """
+        DROP TABLE IF EXISTS t;
+    """
+
+    sql """
+    CREATE TABLE IF NOT EXISTS t(
+      `id` int(32),
+      `score` int(64) NULL,
+      `name` varchar(64) NULL
+    ) ENGINE = OLAP
+    DISTRIBUTED BY HASH(id) BUCKETS 4
+    PROPERTIES (
+      "replication_allocation" = "tag.location.default: 1"
+    );
+    """
+
+    sql "insert into t values (1, 1, 'a')"
+    sql "insert into t values (2, null, 'a')"
+    sql "insert into t values (3, 1, null)"
+    sql "insert into t values (4, 2, 'b')"
+    sql "insert into t values (5, null, 'b')"
+    sql "insert into t values (6, 2, null)"
+    sql "insert into t values (7, 3, 'c')"
+    sql "insert into t values (8, null, 'c')"
+    sql "insert into t values (9, 3, null)"
+    sql "insert into t values (10, null, null)"
+
+    qt_inner_join """
+        explain shape plan select * from t t1 inner join t t2 on true;
+    """
+
+    qt_left_outer_join """
+        explain shape plan select * from t t1 left outer join t t2 on true;
+    """
+
+    qt_right_outer_join """
+        explain shape plan select * from t t1 right outer join t t2 on true;
+    """
+
+    qt_full_outer_join """
+        explain shape plan select * from t t1 full outer join t t2 on true;
+    """
+
+    qt_left_semi_join """
+        explain shape plan select * from t t1 left semi join t t2 on true;
+    """
+
+    qt_left_anti_join """
+        explain shape plan select * from t t1 left anti join t t2 on true;
+    """
+
+    qt_right_semi_join """
+        explain shape plan select * from t t1 right semi join t t2 on true;
+    """
+
+    qt_right_anti_join """
+        explain shape plan select * from t t1 right anti join t t2 on true;
+    """
+
+    /* ******** Output ******** */
+
+    order_qt_inner_join """
+        select * from t t1 inner join t t2 on true;
+    """
+
+    order_qt_left_outer_join """
+        select * from t t1 left outer join t t2 on true;
+    """
+
+    order_qt_right_outer_join """
+        select * from t t1 right outer join t t2 on true;
+    """
+
+    order_qt_full_outer_join """
+        select * from t t1 full outer join t t2 on true;
+    """
+
+    order_qt_left_semi_join """
+        select * from t t1 left semi join t t2 on true;
+    """
+
+    order_qt_left_anti_join """
+        select * from t t1 left anti join t t2 on true;
+    """
+
+    order_qt_right_semi_join """
+        select * from t t1 right semi join t t2 on true;
+    """
+
+    order_qt_right_anti_join """
+        select * from t t1 right anti join t t2 on true;
+    """
+}
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to