diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/RuntimeFilterPushDownVisitor.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/RuntimeFilterPushDownVisitor.java index 7cadbde1768865..22fd2c811ff1c0 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/RuntimeFilterPushDownVisitor.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/RuntimeFilterPushDownVisitor.java @@ -389,7 +389,7 @@ public Boolean visitPhysicalSetOperation(PhysicalSetOperation setOperation, Push List output = setOperation.getOutputs(); for (int j = 0; j < output.size(); j++) { NamedExpression expr = output.get(j); - if (expr.getName().equals(probeSlot.getName())) { + if (expr.getExprId().equals(probeSlot.getExprId())) { projIndex = j; break; } @@ -397,10 +397,10 @@ public Boolean visitPhysicalSetOperation(PhysicalSetOperation setOperation, Push if (projIndex == -1) { return false; } + // probeExpr only has one input slot for (int i = 0; i < setOperation.children().size(); i++) { Map map = Maps.newHashMap(); - // probeExpr only has one input slot - map.put(ctx.probeExpr.getInputSlots().iterator().next(), + map.put(probeSlot, setOperation.getRegularChildrenOutputs().get(i).get(projIndex)); Expression newProbeExpr = ctx.probeExpr.accept(ExpressionVisitors.EXPRESSION_MAP_REPLACER, map); PushDownContext childPushDownContext = ctx.withNewProbeExpression(newProbeExpr); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalCTEConsumer.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalCTEConsumer.java index a3fab008163489..9139e3142b1f57 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalCTEConsumer.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalCTEConsumer.java @@ -103,7 +103,7 @@ public String toString() { .stream().forEach(rf -> builder.append(" RF").append(rf.getId().asInt())); } return Utils.toSqlString("PhysicalCTEConsumer[" + id.asInt() + "]", - "stats", getStats(), "cteId", cteId, "RFs", builder); + "stats", getStats(), "cteId", cteId, "RFs", builder, "map", consumerToProducerSlotMap); } @Override