diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/ExchangeNode.java b/fe/fe-core/src/main/java/org/apache/doris/planner/ExchangeNode.java index 65a366fde1..4ada9a82f7 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/ExchangeNode.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/ExchangeNode.java @@ -105,11 +105,8 @@ public class ExchangeNode extends PlanNode { computeTupleIds(); } - public boolean isMergingExchange() { - if (mergeInfo != null) { - return true; - } - return false; + public boolean isFunctionalExchange() { + return mergeInfo != null || limit != -1 || offset != 0; } @Override diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/OriginalPlanner.java b/fe/fe-core/src/main/java/org/apache/doris/planner/OriginalPlanner.java index cf93be1611..0b3fbb9eb5 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/OriginalPlanner.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/OriginalPlanner.java @@ -373,7 +373,7 @@ public class OriginalPlanner extends Planner { PlanFragment topPlanFragment = fragments.get(0); ExchangeNode topPlanNode = (ExchangeNode) topPlanFragment.getPlanRoot(); // try to push down result file sink - if (topPlanNode.isMergingExchange()) { + if (topPlanNode.isFunctionalExchange()) { return; } PlanFragment secondPlanFragment = fragments.get(1);