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 bf2e20c4c4 [fix](agg) reset the content of grouping exprs instead of replace it with original exprs (#13376) bf2e20c4c4 is described below commit bf2e20c4c4db076d4988c24bf4df9bd16831a52a Author: starocean999 <40539150+starocean...@users.noreply.github.com> AuthorDate: Sat Oct 15 11:07:35 2022 +0800 [fix](agg) reset the content of grouping exprs instead of replace it with original exprs (#13376) * [fix](agg)the reseet the content of grouping exprs instead of replace it with original exprs * keep old behavior if the grouping type is not GROUP_BY --- .../org/apache/doris/analysis/GroupByClause.java | 16 ++++-- .../data/correctness_p0/test_group_by_constant.out | 4 ++ .../correctness_p0/test_group_by_constant.groovy | 63 ++++++++++++++++++++++ 3 files changed, 79 insertions(+), 4 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/GroupByClause.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/GroupByClause.java index 7e66ae85fa..08010dbec0 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/GroupByClause.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/GroupByClause.java @@ -93,12 +93,20 @@ public class GroupByClause implements ParseNode { } public void reset() { - groupingExprs = new ArrayList<>(); analyzed = false; exprGenerated = false; - if (oriGroupingExprs != null) { - Expr.resetList(oriGroupingExprs); - groupingExprs.addAll(oriGroupingExprs); + if (groupingType != GroupingType.GROUP_BY) { + groupingExprs = new ArrayList<>(); + if (oriGroupingExprs != null) { + Expr.resetList(oriGroupingExprs); + groupingExprs.addAll(oriGroupingExprs); + } + } else { + if (groupingExprs != null) { + for (Expr e : groupingExprs) { + e.reset(); + } + } } if (groupingSetList != null) { for (List<Expr> s : groupingSetList) { diff --git a/regression-test/data/correctness_p0/test_group_by_constant.out b/regression-test/data/correctness_p0/test_group_by_constant.out new file mode 100644 index 0000000000..64fb35ea90 --- /dev/null +++ b/regression-test/data/correctness_p0/test_group_by_constant.out @@ -0,0 +1,4 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !sql -- +D + diff --git a/regression-test/suites/correctness_p0/test_group_by_constant.groovy b/regression-test/suites/correctness_p0/test_group_by_constant.groovy new file mode 100644 index 0000000000..8f332b2210 --- /dev/null +++ b/regression-test/suites/correctness_p0/test_group_by_constant.groovy @@ -0,0 +1,63 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +suite("test_group_by_constant") { + + sql """ + DROP TABLE IF EXISTS `table_group_by_constant`; + """ + + sql """ + CREATE TABLE `table_group_by_constant` ( + `inc_day` date NULL + ) ENGINE=OLAP + UNIQUE KEY(`inc_day`) + DISTRIBUTED BY HASH(`inc_day`) BUCKETS 5 + PROPERTIES ( + "replication_allocation" = "tag.location.default: 1", + "in_memory" = "false", + "storage_format" = "V2" + ); + """ + + sql """ + insert into table_group_by_constant values('1999-12-01'); + """ + + qt_sql """ + SELECT + case + when (inc_day = date_sub(curdate(), interval 1 day)) then 'A' + when (inc_day = date_sub(curdate(), interval 8 day)) then 'B' + when (inc_day = date_sub(curdate(), interval 365 day)) then 'C' + else 'D' + end + from + table_group_by_constant + group by + case + when (inc_day = date_sub(curdate(), interval 1 day)) then 'A' + when (inc_day = date_sub(curdate(), interval 8 day)) then 'B' + when (inc_day = date_sub(curdate(), interval 365 day)) then 'C' + else 'D' + end; + """ + + sql """ + DROP TABLE IF EXISTS `table_group_by_constant`; + """ +} --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org