englefly commented on code in PR #29847: URL: https://github.com/apache/doris/pull/29847#discussion_r1448617962
########## fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalDistribute.java: ########## @@ -134,22 +134,26 @@ public boolean pushDownRuntimeFilter(CascadesContext context, IdGenerator<Runtim // currently, we can ensure children in the two side are corresponding to the equal_to's. // so right maybe an expression and left is a slot Slot probeSlot = RuntimeFilterGenerator.checkTargetChild(probeExpr); - - // aliasTransMap doesn't contain the key, means that the path from the scan to the join - // contains join with denied join type. for example: a left join b on a.id = b.id - if (!RuntimeFilterGenerator.checkPushDownPreconditionsForJoin(builderNode, ctx, probeSlot)) { + if (probeSlot == null) { return false; } - PhysicalRelation scan = ctx.getAliasTransferPair(probeSlot).first; - if (!RuntimeFilterGenerator.checkPushDownPreconditionsForRelation(this, scan)) { - return false; + if (RuntimeFilterGenerator.checkPushDownPreconditionsForProjectOrDistribute(ctx, probeSlot)) { + PhysicalRelation scan = ctx.getAliasTransferPair(probeSlot).first; + if (!RuntimeFilterGenerator.checkPushDownPreconditionsForRelation(this, scan)) { + return false; + } + // TODO: global rf need merge stage which is heavy + // add some rule, such as bc only is allowed for + // pushing down through distribute, currently always pushing. + AbstractPhysicalPlan childPlan = (AbstractPhysicalPlan) child(0); + return childPlan.pushDownRuntimeFilter(context, generator, builderNode, src, probeExpr, + type, buildSideNdv, exprOrder); + } else { + // if probe slot doesn't exist in aliasTransferMap, then try to pass it to child Review Comment: 如果aliasMap里已经找不到了,那么push 下去也找不到,最后不会生成RF -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org