This is an automated email from the ASF dual-hosted git repository.

morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-doris.git


The following commit(s) were added to refs/heads/master by this push:
     new c32ddce  [SQL][BUG]Fix window function with limit zero bug (#4207)
c32ddce is described below

commit c32ddce0b590db62789d12ce5d3b1a2181d59325
Author: kangkaisen <[email protected]>
AuthorDate: Sat Aug 1 17:43:47 2020 +0800

    [SQL][BUG]Fix window function with limit zero bug (#4207)
---
 .../org/apache/doris/planner/SingleNodePlanner.java | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java 
b/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java
index 3f936cb..f8180de 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java
@@ -207,9 +207,26 @@ public class SingleNodePlanner {
      * Select/Project/Join/Union [All]/Group by/Having/Order by clauses of the 
query stmt.
      */
     private PlanNode createQueryPlan(QueryStmt stmt, Analyzer analyzer, long 
defaultOrderByLimit)
-            throws UserException, AnalysisException {
+            throws UserException {
         if (analyzer.hasEmptyResultSet()) {
-            return createEmptyNode(stmt, analyzer);
+            PlanNode node = createEmptyNode(stmt, analyzer);
+
+            // handle window function with limit zero
+            if (stmt instanceof SelectStmt) {
+                SelectStmt selectStmt = (SelectStmt) stmt;
+                if (selectStmt.getAnalyticInfo() != null) {
+                    AnalyticInfo analyticInfo = selectStmt.getAnalyticInfo();
+                    AnalyticPlanner analyticPlanner = new 
AnalyticPlanner(analyticInfo, analyzer, ctx_);
+                    List<Expr> inputPartitionExprs = Lists.newArrayList();
+                    AggregateInfo aggInfo = selectStmt.getAggInfo();
+                    PlanNode root = analyticPlanner.createSingleNodePlan(node,
+                            aggInfo != null ? aggInfo.getGroupingExprs() : 
null, inputPartitionExprs);
+
+                    // In order to substitute the analytic expr with slot in 
result exprs
+                    node.setOutputSmap(root.outputSmap);
+                }
+            }
+            return node;
         }
 
         long newDefaultOrderByLimit = defaultOrderByLimit;


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to