From d4cebb39ba3d7c227947daa95a494282b60de857 Mon Sep 17 00:00:00 2001 From: jakevin Date: Sat, 18 Feb 2023 23:12:34 +0800 Subject: [PATCH] [fix](Nereids): fix SemiJoinLogicalJoinTransposeProject. (#16883) --- .../exploration/join/OuterJoinLAsscom.java | 2 +- .../SemiJoinLogicalJoinTransposeProject.java | 97 +++++++++++-------- .../trees/plans/logical/LogicalJoin.java | 1 - 3 files changed, 57 insertions(+), 43 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/OuterJoinLAsscom.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/OuterJoinLAsscom.java index dda781f327..a23c3f0015 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/OuterJoinLAsscom.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/OuterJoinLAsscom.java @@ -63,8 +63,8 @@ public class OuterJoinLAsscom extends OneExplorationRuleFactory { return logicalJoin(logicalJoin(), group()) .when(join -> VALID_TYPE_PAIR_SET.contains(Pair.of(join.left().getJoinType(), join.getJoinType()))) .when(topJoin -> checkReorder(topJoin, topJoin.left())) - .when(topJoin -> checkCondition(topJoin, topJoin.left().right().getOutputExprIdSet())) .whenNot(join -> join.hasJoinHint() || join.left().hasJoinHint()) + .when(topJoin -> checkCondition(topJoin, topJoin.left().right().getOutputExprIdSet())) .then(topJoin -> { LogicalJoin bottomJoin = topJoin.left(); GroupPlan a = bottomJoin.left(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/SemiJoinLogicalJoinTransposeProject.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/SemiJoinLogicalJoinTransposeProject.java index 76fda42fe5..89a843fffc 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/SemiJoinLogicalJoinTransposeProject.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/join/SemiJoinLogicalJoinTransposeProject.java @@ -17,11 +17,13 @@ package org.apache.doris.nereids.rules.exploration.join; +import org.apache.doris.common.Pair; import org.apache.doris.nereids.rules.Rule; import org.apache.doris.nereids.rules.RuleType; import org.apache.doris.nereids.rules.exploration.OneExplorationRuleFactory; import org.apache.doris.nereids.trees.expressions.ExprId; import org.apache.doris.nereids.trees.expressions.Expression; +import org.apache.doris.nereids.trees.expressions.NamedExpression; import org.apache.doris.nereids.trees.expressions.Slot; import org.apache.doris.nereids.trees.plans.GroupPlan; import org.apache.doris.nereids.trees.plans.JoinHint; @@ -33,9 +35,12 @@ import org.apache.doris.nereids.util.Utils; import com.google.common.base.Preconditions; -import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; /** *