From ccb6c2610aa099fae18b4f2d9cda8ae18efc65a2 Mon Sep 17 00:00:00 2001 From: morrySnow Date: Mon, 6 Jan 2025 21:34:40 +0800 Subject: [PATCH] branch-2.1: [fix](nereids)fix bug of PushDownFilterThroughSetOperation (#46370) (#46456) pick from master #46370 Co-authored-by: feiniaofeiafei --- .../rules/rewrite/PushDownFilterThroughSetOperation.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownFilterThroughSetOperation.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownFilterThroughSetOperation.java index c8f83d62b4..4146fed87f 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownFilterThroughSetOperation.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownFilterThroughSetOperation.java @@ -44,16 +44,16 @@ public class PushDownFilterThroughSetOperation extends OneRewriteRuleFactory { return logicalFilter(logicalSetOperation()).then(f -> { LogicalSetOperation setOperation = f.child(); List newChildren = new ArrayList<>(); - for (Plan child : setOperation.children()) { + for (int childIdx = 0; childIdx < setOperation.children().size(); ++childIdx) { Map replaceMap = new HashMap<>(); for (int i = 0; i < setOperation.getOutputs().size(); ++i) { NamedExpression output = setOperation.getOutputs().get(i); - replaceMap.put(output, child.getOutput().get(i)); + replaceMap.put(output, setOperation.getRegularChildOutput(childIdx).get(i)); } Set newFilterPredicates = f.getConjuncts().stream().map(conjunct -> ExpressionUtils.replace(conjunct, replaceMap)).collect(ImmutableSet.toImmutableSet()); - newChildren.add(new LogicalFilter<>(newFilterPredicates, child)); + newChildren.add(new LogicalFilter<>(newFilterPredicates, setOperation.child(childIdx))); } return setOperation.withChildren(newChildren);