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

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


The following commit(s) were added to refs/heads/master by this push:
     new 4ba2422039 [improvement](fe) Remove constant keys in aggregation 
(#11434)
4ba2422039 is described below

commit 4ba2422039170b75f1082ad29c92a97e100b7b6d
Author: Jerry Hu <mrh...@gmail.com>
AuthorDate: Wed Aug 3 19:43:35 2022 +0800

    [improvement](fe) Remove constant keys in aggregation (#11434)
---
 .../java/org/apache/doris/analysis/SelectStmt.java | 15 ++++++++++----
 regression-test/data/query/aggregate/aggregate.out | 23 ++++++++++++++++++++++
 .../suites/query/aggregate/aggregate.groovy        |  2 ++
 3 files changed, 36 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 b087ff451b..2440dc1956 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
@@ -1048,17 +1048,24 @@ public class SelectStmt extends QueryStmt {
         List<TupleId> groupingByTupleIds = new ArrayList<>();
         if (groupByClause != null) {
             groupByClause.genGroupingExprs();
+            ArrayList<Expr> groupingExprs = groupByClause.getGroupingExprs();
             if (groupingInfo != null) {
-                groupingInfo.buildRepeat(groupByClause.getGroupingExprs(), 
groupByClause.getGroupingSetList());
+                groupingInfo.buildRepeat(groupingExprs, 
groupByClause.getGroupingSetList());
             }
-            substituteOrdinalsAliases(groupByClause.getGroupingExprs(), "GROUP 
BY", analyzer);
+
+            substituteOrdinalsAliases(groupingExprs, "GROUP BY", analyzer);
+
+            if (!groupByClause.isGroupByExtension()) {
+                groupingExprs.removeIf(Expr::isConstant);
+            }
+
             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);
         }
diff --git a/regression-test/data/query/aggregate/aggregate.out 
b/regression-test/data/query/aggregate/aggregate.out
index b0358637d9..44bbb9bf0f 100644
--- a/regression-test/data/query/aggregate/aggregate.out
+++ b/regression-test/data/query/aggregate/aggregate.out
@@ -74,3 +74,26 @@ TESTING      AGAIN
 -- !aggregate --
 9223845.04     1607.2585798911111
 
+-- !aggregate --
+1      2       \\N     98.52
+1      2       12      12.25
+1      2       25      55.52
+1      2       100     134.88420000000002
+1      2       964     0.245
+1      2       5000    67.87
+1      2       5252    12.25
+1      2       5748    271.48
+1      2       6000    \\N
+1      2       8996    98.8777
+
+-- !aggregate --
+\\N
+36
+75
+300
+2892
+15000
+15756
+17244
+18000
+26988
diff --git a/regression-test/suites/query/aggregate/aggregate.groovy 
b/regression-test/suites/query/aggregate/aggregate.groovy
index edd7a9b8e1..9296c150a0 100644
--- a/regression-test/suites/query/aggregate/aggregate.groovy
+++ b/regression-test/suites/query/aggregate/aggregate.groovy
@@ -100,4 +100,6 @@ suite("aggregate", "query") {
     qt_aggregate """ select variance(c_bigint), variance(c_double) from 
${tableName}  """
     qt_aggregate """ select variance(distinct c_bigint), variance(c_double) 
from ${tableName}  """
     qt_aggregate """ select variance(c_bigint), variance(distinct c_double) 
from ${tableName}  """
+    qt_aggregate """ select 1 k1, 2 k2, c_bigint k3, sum(c_double) from 
${tableName} group by 1, k2, k3 order by k1, k2, k3 """
+    qt_aggregate """ select (k1 + k2) * k3 k4 from (select 1 k1, 2 k2, 
c_bigint k3, sum(c_double) from ${tableName} group by 1, k2, k3) t order by k4 
"""
 }
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to