From a4a991207bd481bb3bb96921e85532eaf40633bd Mon Sep 17 00:00:00 2001 From: starocean999 <40539150+starocean999@users.noreply.github.com> Date: Thu, 3 Nov 2022 10:26:59 +0800 Subject: [PATCH] [fix](agg)fix group by constant value bug (#13827) * [fix](agg)fix group by constant value bug * keep only one const grouping exprs if no agg exprs --- .../org/apache/doris/analysis/SelectStmt.java | 7 +++++- .../sql/group_by/runConstantGroupBy_order.out | 24 ------------------- 2 files changed, 6 insertions(+), 25 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 f522dcd898..55aebf9280 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 @@ -1092,8 +1092,13 @@ public class SelectStmt extends QueryStmt { substituteOrdinalsAliases(groupingExprs, "GROUP BY", analyzer); - if (!groupByClause.isGroupByExtension()) { + if (!groupByClause.isGroupByExtension() && !groupingExprs.isEmpty()) { + ArrayList 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) { diff --git a/regression-test/data/trino_p0/sql/group_by/runConstantGroupBy_order.out b/regression-test/data/trino_p0/sql/group_by/runConstantGroupBy_order.out index 3e7855ddba..6a880dbc0a 100644 --- a/regression-test/data/trino_p0/sql/group_by/runConstantGroupBy_order.out +++ b/regression-test/data/trino_p0/sql/group_by/runConstantGroupBy_order.out @@ -1,28 +1,4 @@ -- This file is automatically generated. You should know what you did if you want to edit this -- !runConstantGroupBy_order -- 2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2