From a8e2652f78a625c7975e949510f2dde253fac5a2 Mon Sep 17 00:00:00 2001 From: morrySnow <101034200+morrySnow@users.noreply.github.com> Date: Fri, 1 Mar 2024 14:15:56 +0800 Subject: [PATCH] [fix](planner) should not push down sink when last exchange do limit (#31622) --- .../main/java/org/apache/doris/planner/ExchangeNode.java | 7 ++----- .../java/org/apache/doris/planner/OriginalPlanner.java | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) 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);