diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ColumnPruning.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ColumnPruning.java index 85e0f84524..f9ef20a7d0 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ColumnPruning.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ColumnPruning.java @@ -217,15 +217,9 @@ public class ColumnPruning extends DefaultPlanRewriter implements .build()); } - public static final

P pruneOutput(P plan, List originOutput, - Function, P> withPrunedOutput, PruneContext context) { - Optional> prunedOutputs = pruneOutput(originOutput, context); - return prunedOutputs.map(withPrunedOutput).orElse(plan); - } - /** prune output */ - public static Optional> pruneOutput( - List originOutput, PruneContext context) { + public static

P pruneOutput(P plan, List originOutput, + Function, P> withPrunedOutput, PruneContext context) { List prunedOutputs = originOutput.stream() .filter(output -> context.requiredSlots.contains(output.toSlot())) .collect(ImmutableList.toImmutableList()); @@ -235,9 +229,11 @@ public class ColumnPruning extends DefaultPlanRewriter implements prunedOutputs = ImmutableList.of(minimumColumn); } - return prunedOutputs.equals(originOutput) - ? Optional.empty() - : Optional.of(prunedOutputs); + if (prunedOutputs.equals(originOutput)) { + return plan; + } else { + return withPrunedOutput.apply(prunedOutputs); + } } private

P pruneChildren(P plan) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalRepeat.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalRepeat.java index 6c4dc30631..61fc8584d4 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalRepeat.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalRepeat.java @@ -117,9 +117,7 @@ public class LogicalRepeat extends LogicalUnary extends LogicalUnary that = (LogicalRepeat) o; + return groupingSets.equals(that.groupingSets) && outputExpressions.equals(that.outputExpressions); } @Override