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 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()