This is an automated email from the ASF dual-hosted git repository.
englefly 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 e2afa07271 [fix](nereids) disable_join_reorder does not work with
semi/anti #18898
e2afa07271 is described below
commit e2afa072716a8141004c4fc04bb96292fc161b37
Author: minghong <[email protected]>
AuthorDate: Tue Apr 25 10:57:40 2023 +0800
[fix](nereids) disable_join_reorder does not work with semi/anti #18898
semi/anti push rules should not work if disable_join_reorder = true;
---
.../doris/nereids/rules/rewrite/logical/SemiJoinAggTranspose.java | 2 ++
.../nereids/rules/rewrite/logical/SemiJoinAggTransposeProject.java | 2 ++
.../org/apache/doris/nereids/rules/rewrite/logical/SemiJoinCommute.java | 2 ++
.../nereids/rules/rewrite/logical/SemiJoinLogicalJoinTranspose.java | 2 ++
.../rules/rewrite/logical/SemiJoinLogicalJoinTransposeProject.java | 2 ++
5 files changed, 10 insertions(+)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/SemiJoinAggTranspose.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/SemiJoinAggTranspose.java
index ed8f743629..92a5a9e15a 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/SemiJoinAggTranspose.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/SemiJoinAggTranspose.java
@@ -24,6 +24,7 @@ import org.apache.doris.nereids.trees.expressions.Slot;
import org.apache.doris.nereids.trees.plans.Plan;
import org.apache.doris.nereids.trees.plans.logical.LogicalAggregate;
import org.apache.doris.nereids.trees.plans.logical.LogicalJoin;
+import org.apache.doris.qe.ConnectContext;
import java.util.Set;
@@ -34,6 +35,7 @@ public class SemiJoinAggTranspose extends
OneRewriteRuleFactory {
@Override
public Rule build() {
return logicalJoin(logicalAggregate(), any())
+ .whenNot(join ->
ConnectContext.get().getSessionVariable().isDisableJoinReorder())
.when(join -> join.getJoinType().isLeftSemiOrAntiJoin())
.then(join -> {
LogicalAggregate<Plan> aggregate = join.left();
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/SemiJoinAggTransposeProject.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/SemiJoinAggTransposeProject.java
index 838a41cdc3..64c234c0f6 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/SemiJoinAggTransposeProject.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/SemiJoinAggTransposeProject.java
@@ -24,6 +24,7 @@ import org.apache.doris.nereids.trees.expressions.Slot;
import org.apache.doris.nereids.trees.plans.Plan;
import org.apache.doris.nereids.trees.plans.logical.LogicalAggregate;
import org.apache.doris.nereids.trees.plans.logical.LogicalProject;
+import org.apache.doris.qe.ConnectContext;
/**
* Pushdown semi-join through agg
@@ -32,6 +33,7 @@ public class SemiJoinAggTransposeProject extends
OneRewriteRuleFactory {
@Override
public Rule build() {
return logicalJoin(logicalProject(logicalAggregate()), any())
+ .whenNot(join ->
ConnectContext.get().getSessionVariable().isDisableJoinReorder())
.when(join -> join.getJoinType().isLeftSemiOrAntiJoin())
.when(join -> join.left().isAllSlots())
.when(join -> join.left().getProjects().stream().allMatch(n ->
n instanceof Slot))
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/SemiJoinCommute.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/SemiJoinCommute.java
index 176fe7190d..61ccc57bf9 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/SemiJoinCommute.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/SemiJoinCommute.java
@@ -21,6 +21,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.trees.plans.logical.LogicalJoin;
+import org.apache.doris.qe.ConnectContext;
/**
* RightSemiJoin -> LeftSemiJoin
@@ -30,6 +31,7 @@ public class SemiJoinCommute extends OneRewriteRuleFactory {
public Rule build() {
return logicalJoin()
.when(join -> join.getJoinType().isRightSemiOrAntiJoin())
+ .whenNot(join ->
ConnectContext.get().getSessionVariable().isDisableJoinReorder())
.whenNot(LogicalJoin::hasJoinHint)
.whenNot(LogicalJoin::isMarkJoin)
.then(join -> join.withTypeChildren(join.getJoinType().swap(),
join.right(), join.left()))
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/SemiJoinLogicalJoinTranspose.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/SemiJoinLogicalJoinTranspose.java
index f795b5632f..322fca06d1 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/SemiJoinLogicalJoinTranspose.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/SemiJoinLogicalJoinTranspose.java
@@ -25,6 +25,7 @@ import org.apache.doris.nereids.trees.expressions.ExprId;
import org.apache.doris.nereids.trees.plans.JoinType;
import org.apache.doris.nereids.trees.plans.Plan;
import org.apache.doris.nereids.trees.plans.logical.LogicalJoin;
+import org.apache.doris.qe.ConnectContext;
import com.google.common.base.Preconditions;
@@ -40,6 +41,7 @@ public class SemiJoinLogicalJoinTranspose extends
OneRewriteRuleFactory {
@Override
public Rule build() {
return logicalJoin(logicalJoin(), any())
+ .whenNot(join ->
ConnectContext.get().getSessionVariable().isDisableJoinReorder())
.when(topJoin -> (topJoin.getJoinType().isLeftSemiOrAntiJoin()
&& (topJoin.left().getJoinType().isInnerJoin()
|| topJoin.left().getJoinType().isLeftOuterJoin()
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/SemiJoinLogicalJoinTransposeProject.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/SemiJoinLogicalJoinTransposeProject.java
index 94e3273f08..299e5323b0 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/SemiJoinLogicalJoinTransposeProject.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/SemiJoinLogicalJoinTransposeProject.java
@@ -27,6 +27,7 @@ import org.apache.doris.nereids.trees.plans.Plan;
import org.apache.doris.nereids.trees.plans.logical.LogicalJoin;
import org.apache.doris.nereids.trees.plans.logical.LogicalProject;
import org.apache.doris.nereids.util.Utils;
+import org.apache.doris.qe.ConnectContext;
import com.google.common.base.Preconditions;
@@ -42,6 +43,7 @@ public class SemiJoinLogicalJoinTransposeProject extends
OneRewriteRuleFactory {
@Override
public Rule build() {
return logicalJoin(logicalProject(logicalJoin()), any())
+ .whenNot(join ->
ConnectContext.get().getSessionVariable().isDisableJoinReorder())
.when(topJoin -> (topJoin.getJoinType().isLeftSemiOrAntiJoin()
&& (topJoin.left().child().getJoinType().isInnerJoin()
||
topJoin.left().child().getJoinType().isLeftOuterJoin()
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]