@ -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();
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user