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

dataroaring pushed a commit to branch branch-1.1-lts
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-1.1-lts by this push:
     new 60fc1f90ec [fix](agg)fix group by null literal bug (#14649)
60fc1f90ec is described below

commit 60fc1f90ec6e17accb724ebe0f6aa89a7fecaeb1
Author: starocean999 <[email protected]>
AuthorDate: Mon Nov 28 21:45:36 2022 +0800

    [fix](agg)fix group by null literal bug (#14649)
---
 .../java/org/apache/doris/analysis/SelectStmt.java    | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java
index 7c952b5d41..63121fb3db 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java
@@ -1078,6 +1078,7 @@ public class SelectStmt extends QueryStmt {
         List<TupleId> groupingByTupleIds = new ArrayList<>();
         if (groupByClause != null) {
             groupByClause.genGroupingExprs();
+            ArrayList<Expr> groupingExprs = groupByClause.getGroupingExprs();
             if (groupingInfo != null) {
                 GroupByClause.GroupingType groupingType = 
groupByClause.getGroupingType();
                 if ((groupingType == GroupByClause.GroupingType.GROUPING_SETS 
&& CollectionUtils
@@ -1086,16 +1087,26 @@ public class SelectStmt extends QueryStmt {
                         || groupingType == GroupByClause.GroupingType.ROLLUP) {
 
                 }
-                groupingInfo.buildRepeat(groupByClause.getGroupingExprs(), 
groupByClause.getGroupingSetList());
+                groupingInfo.buildRepeat(groupingExprs, 
groupByClause.getGroupingSetList());
             }
-            substituteOrdinalsAliases(groupByClause.getGroupingExprs(), "GROUP 
BY", analyzer, false);
+            substituteOrdinalsAliases(groupingExprs, "GROUP BY", analyzer, 
false);
+
+            if (!groupByClause.isGroupByExtension() && 
!groupingExprs.isEmpty()) {
+                ArrayList<Expr> tempExprs = new ArrayList<>(groupingExprs);
+                groupingExprs.removeIf(Expr::isConstant);
+                if (groupingExprs.isEmpty() && aggExprs.isEmpty()) {
+                    // should keep at least one expr to make the result correct
+                    groupingExprs.add(tempExprs.get(0));
+                }
+            }
+
             if (groupingInfo != null) {
-                groupingInfo.genOutputTupleDescAndSMap(analyzer, 
groupByClause.getGroupingExprs(), aggExprs);
+                groupingInfo.genOutputTupleDescAndSMap(analyzer, 
groupingExprs, aggExprs);
                 // must do it before copying for createAggInfo()
                 
groupingByTupleIds.add(groupingInfo.getOutputTupleDesc().getId());
             }
             groupByClause.analyze(analyzer);
-            createAggInfo(groupByClause.getGroupingExprs(), aggExprs, 
analyzer);
+            createAggInfo(groupingExprs, aggExprs, analyzer);
         } else {
             createAggInfo(new ArrayList<>(), aggExprs, analyzer);
         }


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

Reply via email to