This is an automated email from the ASF dual-hosted git repository. morningman pushed a commit to branch branch-1.2-lts in repository https://gitbox.apache.org/repos/asf/doris.git
commit 1033d71c1ba9988e8b6c879b37abce5c169bc746 Author: morrySnow <101034200+morrys...@users.noreply.github.com> AuthorDate: Tue Dec 27 11:16:19 2022 +0800 [fix](planner) set limit to nagtive value when has offset in limit (#15367) --- .../src/main/java/org/apache/doris/planner/DistributedPlanner.java | 6 ++++++ fe/fe-core/src/main/java/org/apache/doris/planner/ExchangeNode.java | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/DistributedPlanner.java b/fe/fe-core/src/main/java/org/apache/doris/planner/DistributedPlanner.java index 19d153f1b5..c537434cc0 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/DistributedPlanner.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/DistributedPlanner.java @@ -257,6 +257,12 @@ public class DistributedPlanner { // exchange node clones the behavior of its input, aside from the conjuncts ExchangeNode mergePlan = new ExchangeNode(ctx.getNextNodeId(), inputFragment.getPlanRoot(), false); + PlanNode inputRoot = inputFragment.getPlanRoot(); + if (inputRoot.hasOffset()) { + long limit = inputRoot.getOffset() + inputRoot.getLimit(); + inputRoot.unsetLimit(); + inputRoot.setLimit(limit); + } mergePlan.setNumInstances(inputFragment.getPlanRoot().getNumInstances()); mergePlan.init(ctx.getRootAnalyzer()); Preconditions.checkState(mergePlan.hasValidStats()); 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 e3cd192f8c..0629af2295 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 @@ -82,7 +82,7 @@ public class ExchangeNode extends PlanNode { } // Only apply the limit at the receiver if there are multiple senders. if (inputNode.getFragment().isPartitioned()) { - limit = inputNode.limit - inputNode.offset; + limit = inputNode.limit; } offset = inputNode.offset; computeTupleIds(); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org