This is an automated email from the ASF dual-hosted git repository.
morningman 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 dccd04a3ba [fix](fe)predicate is wrongly pushed through CUBE function
(#15831)
dccd04a3ba is described below
commit dccd04a3bab079a6e26ec724d49008d7a8199e52
Author: starocean999 <[email protected]>
AuthorDate: Mon Feb 6 11:29:15 2023 +0800
[fix](fe)predicate is wrongly pushed through CUBE function (#15831)
---
.../org/apache/doris/planner/SingleNodePlanner.java | 9 ++++-----
.../data/query_p0/grouping_sets/test_grouping_sets.out | 3 +++
.../query_p0/grouping_sets/test_grouping_sets.groovy | 18 ++++++++++++++++++
3 files changed, 25 insertions(+), 5 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java
b/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java
index 72fbd85979..1003991f46 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java
@@ -2667,8 +2667,10 @@ public class SingleNodePlanner {
//eg: select distinct c from ( select distinct c from
table) t where c > 1;
continue;
}
- if (stmt.getGroupByClause().isGroupByExtension()
- &&
stmt.getGroupByClause().getGroupingExprs().contains(sourceExpr)) {
+
+ if (sourceExpr.getFn() instanceof AggregateFunction) {
+ isAllSlotReferToGroupBys = false;
+ } else if (stmt.getGroupByClause().isGroupByExtension()) {
// if grouping type is CUBE or ROLLUP will definitely
produce null
if (stmt.getGroupByClause().getGroupingType() ==
GroupByClause.GroupingType.CUBE
|| stmt.getGroupByClause().getGroupingType() ==
GroupByClause.GroupingType.ROLLUP) {
@@ -2684,9 +2686,6 @@ public class SingleNodePlanner {
}
}
}
- if (sourceExpr.getFn() instanceof AggregateFunction) {
- isAllSlotReferToGroupBys = false;
- }
}
if (isAllSlotReferToGroupBys) {
diff --git a/regression-test/data/query_p0/grouping_sets/test_grouping_sets.out
b/regression-test/data/query_p0/grouping_sets/test_grouping_sets.out
index f2da1d2f67..564103d871 100644
--- a/regression-test/data/query_p0/grouping_sets/test_grouping_sets.out
+++ b/regression-test/data/query_p0/grouping_sets/test_grouping_sets.out
@@ -49,3 +49,6 @@
-- !select7 --
+-- !select8 --
+test 2
+
diff --git
a/regression-test/suites/query_p0/grouping_sets/test_grouping_sets.groovy
b/regression-test/suites/query_p0/grouping_sets/test_grouping_sets.groovy
index 83e517de53..d0c28ea703 100644
--- a/regression-test/suites/query_p0/grouping_sets/test_grouping_sets.groovy
+++ b/regression-test/suites/query_p0/grouping_sets/test_grouping_sets.groovy
@@ -60,4 +60,22 @@ suite("test_grouping_sets") {
}
qt_select7 """ select k1,k2,sum(k3) from test_query_db.test where 1 = 2
group by grouping sets((k1), (k1,k2)) """
+
+ qt_select8 """ WITH dt AS
+ (select 'test' as name,1 as score
+ UNION
+ all
+ SELECT 'test' AS name,1 AS score
+ UNION
+ all SELECT 'test2' AS name,12 AS score
+ UNION
+ all SELECT 'test2' AS name,12 AS score ) ,result_data AS
+ (SELECT name,
+ sum(score) AS score
+ FROM dt
+ GROUP BY CUBE(name))
+ SELECT *
+ FROM result_data
+ WHERE name = 'test';
+ """
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]