This is an automated email from the ASF dual-hosted git repository. englefly pushed a commit to branch branch-2.1 in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push: new 9f3f97000ad [fix](nereids) do not push '<=>' rf through nlj outer join (#32952) 9f3f97000ad is described below commit 9f3f97000ad3cd354489a24670a8309685de6349 Author: minghong <engle...@gmail.com> AuthorDate: Thu Mar 28 13:29:29 2024 +0800 [fix](nereids) do not push '<=>' rf through nlj outer join (#32952) --- .../trees/plans/physical/PhysicalHashJoin.java | 12 ++++++------ .../plans/physical/PhysicalNestedLoopJoin.java | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalHashJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalHashJoin.java index 487e42661c3..a50f6a4e0af 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalHashJoin.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalHashJoin.java @@ -211,12 +211,12 @@ public class PhysicalHashJoin< if (builderJoin == this) { return false; } - EqualPredicate equal = (EqualPredicate) builderNode.getHashJoinConjuncts().get(exprOrder); - if (equal instanceof NullSafeEqual) { - if (this.joinType.isOuterJoin()) { - return false; - } - } + } + } + EqualPredicate equal = (EqualPredicate) builderNode.getHashJoinConjuncts().get(exprOrder); + if (equal instanceof NullSafeEqual) { + if (this.joinType.isOuterJoin()) { + return false; } } RuntimeFilterContext ctx = context.getRuntimeFilterContext(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalNestedLoopJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalNestedLoopJoin.java index b8e5c17e034..d09864d0747 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalNestedLoopJoin.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalNestedLoopJoin.java @@ -17,12 +17,17 @@ package org.apache.doris.nereids.trees.plans.physical; +import org.apache.doris.common.IdGenerator; +import org.apache.doris.nereids.CascadesContext; import org.apache.doris.nereids.hint.DistributeHint; import org.apache.doris.nereids.memo.GroupExpression; +import org.apache.doris.nereids.processor.post.RuntimeFilterGenerator; import org.apache.doris.nereids.properties.LogicalProperties; import org.apache.doris.nereids.properties.PhysicalProperties; +import org.apache.doris.nereids.trees.expressions.EqualPredicate; import org.apache.doris.nereids.trees.expressions.Expression; import org.apache.doris.nereids.trees.expressions.MarkJoinSlotReference; +import org.apache.doris.nereids.trees.expressions.NullSafeEqual; import org.apache.doris.nereids.trees.expressions.Slot; import org.apache.doris.nereids.trees.plans.DistributeType; import org.apache.doris.nereids.trees.plans.JoinType; @@ -31,11 +36,13 @@ import org.apache.doris.nereids.trees.plans.PlanType; import org.apache.doris.nereids.trees.plans.visitor.PlanVisitor; import org.apache.doris.nereids.util.ExpressionUtils; import org.apache.doris.nereids.util.MutableState; +import org.apache.doris.planner.RuntimeFilterId; import org.apache.doris.statistics.Statistics; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; +import org.apache.doris.thrift.TRuntimeFilterType; import java.util.List; import java.util.Optional; @@ -238,4 +245,18 @@ public class PhysicalNestedLoopJoin< hashJoinConjuncts, otherJoinConjuncts, markJoinConjuncts, markJoinSlotReference, groupExpression, null, physicalProperties, statistics, left(), right()); } + + @Override + public boolean pushDownRuntimeFilter(CascadesContext context, IdGenerator<RuntimeFilterId> generator, + AbstractPhysicalJoin<?, ?> builderNode, Expression srcExpr, + Expression probeExpr, TRuntimeFilterType type, long buildSideNdv, + int exprOrder) { + EqualPredicate equal = (EqualPredicate) builderNode.getHashJoinConjuncts().get(exprOrder); + if (equal instanceof NullSafeEqual && this.joinType.isOuterJoin()) { + return false; + } + + return super.pushDownRuntimeFilter(context, generator, builderNode, srcExpr, probeExpr, type, buildSideNdv, + exprOrder); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org