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]