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

yiguolei 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 c0b937b0afb [fix](nereids)reject nse-rf for nested loop outer join 
#33122
c0b937b0afb is described below

commit c0b937b0afba2ef2c91fb33358a7af175dcee340
Author: minghong <[email protected]>
AuthorDate: Fri Apr 5 08:01:13 2024 +0800

    [fix](nereids)reject nse-rf for nested loop outer join #33122
---
 .../trees/plans/physical/PhysicalNestedLoopJoin.java | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

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..c3c4819ca97 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,16 @@
 
 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.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,7 +35,9 @@ 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 org.apache.doris.thrift.TRuntimeFilterType;
 
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableSet;
@@ -238,4 +244,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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to