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

morrysnow 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 5e0d44ff25 [fix](nereids) fix bug of expr rewrite and column prune 
rule of group by exprs (#15097)
5e0d44ff25 is described below

commit 5e0d44ff25a06e6a0547ae3dc79d32b5aff675cf
Author: starocean999 <[email protected]>
AuthorDate: Fri Dec 16 03:22:36 2022 +0800

    [fix](nereids) fix bug of expr rewrite and column prune rule of group by 
exprs (#15097)
---
 .../expression/rewrite/ExpressionRewrite.java      |   2 +-
 .../rewrite/logical/PruneAggChildColumns.java      |   2 +-
 .../doris/nereids/util/TypeCoercionUtils.java      |   3 +
 .../data/query_p0/keyword/order_group.out          | 167 +++++++++++----------
 .../suites/query_p0/keyword/order_group.groovy     |   6 +
 5 files changed, 95 insertions(+), 85 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/ExpressionRewrite.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/ExpressionRewrite.java
index acc433db52..951fed9ed9 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/ExpressionRewrite.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/ExpressionRewrite.java
@@ -115,7 +115,7 @@ public class ExpressionRewrite implements 
RewriteRuleFactory {
                 List<NamedExpression> outputExpressions = 
agg.getOutputExpressions();
                 List<NamedExpression> newOutputExpressions = 
outputExpressions.stream()
                         .map(expr -> (NamedExpression) 
rewriter.rewrite(expr)).collect(Collectors.toList());
-                if (outputExpressions.containsAll(newOutputExpressions)) {
+                if (outputExpressions.containsAll(newOutputExpressions) && 
groupByExprs.containsAll(newGroupByExprs)) {
                     return agg;
                 }
                 return new LogicalAggregate<>(newGroupByExprs, 
newOutputExpressions,
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/PruneAggChildColumns.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/PruneAggChildColumns.java
index 05047c7ad8..53667f1dec 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/PruneAggChildColumns.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/PruneAggChildColumns.java
@@ -56,7 +56,7 @@ public class PruneAggChildColumns extends 
OneRewriteRuleFactory {
     public Rule build() {
         return 
RuleType.COLUMN_PRUNE_AGGREGATION_CHILD.build(logicalAggregate().then(agg -> {
             List<Slot> childOutput = agg.child().getOutput();
-            if (isAggregateWithConstant(agg)) {
+            if (isAggregateWithConstant(agg) && 
agg.getGroupByExpressions().isEmpty()) {
                 Slot slot = ExpressionUtils.selectMinimumColumn(childOutput);
                 if (childOutput.size() == 1 && 
childOutput.get(0).equals(slot)) {
                     return agg;
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/util/TypeCoercionUtils.java 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/util/TypeCoercionUtils.java
index d1cc520bbf..3700a204fa 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/util/TypeCoercionUtils.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/util/TypeCoercionUtils.java
@@ -226,6 +226,9 @@ public class TypeCoercionUtils {
             } else if (left instanceof DateV2Type || right instanceof 
DateV2Type) {
                 tightestCommonType = DateV2Type.INSTANCE;
             }
+        } else if ((left instanceof DateLikeType && right instanceof 
IntegralType)
+                    || (right instanceof DateLikeType && left instanceof 
IntegralType)) {
+            tightestCommonType = BigIntType.INSTANCE;
         }
         return Optional.ofNullable(tightestCommonType);
     }
diff --git a/regression-test/data/query_p0/keyword/order_group.out 
b/regression-test/data/query_p0/keyword/order_group.out
index b3b3ceb32a..89177bcedf 100644
--- a/regression-test/data/query_p0/keyword/order_group.out
+++ b/regression-test/data/query_p0/keyword/order_group.out
@@ -63,17 +63,17 @@
 
 -- !orderBy5 --
 1      123.123
-2      1243.5
+2      1243.500
 3      24453.325
 
 -- !orderBy6 --
 1      123.123
-2      1243.5
+2      1243.500
 3      24453.325
 
 -- !orderBy7 --
 1      123.123
-2      1243.5
+2      1243.500
 3      24453.325
 
 -- !orderBy5 --
@@ -182,17 +182,17 @@
 1989   11011902
 
 -- !orderBy5 --
-1986   1243.5
+1986   1243.500
 1989   123.123
 1989   24453.325
 
 -- !orderBy6 --
-1986   1243.5
+1986   1243.500
 1989   123.123
 1989   24453.325
 
 -- !orderBy7 --
-1986   1243.5
+1986   1243.500
 1989   24453.325
 1989   123.123
 
@@ -303,16 +303,16 @@
 
 -- !orderBy5 --
 1001   123.123
-1001   1243.5
+1001   1243.500
 1002   24453.325
 
 -- !orderBy6 --
 1001   123.123
-1001   1243.5
+1001   1243.500
 1002   24453.325
 
 -- !orderBy7 --
-1001   1243.5
+1001   1243.500
 1001   123.123
 1002   24453.325
 
@@ -423,17 +423,17 @@
 
 -- !orderBy5 --
 11011902       123.123
-11011903       1243.5
+11011903       1243.500
 11011905       24453.325
 
 -- !orderBy6 --
 11011902       123.123
-11011903       1243.5
+11011903       1243.500
 11011905       24453.325
 
 -- !orderBy7 --
 11011902       123.123
-11011903       1243.5
+11011903       1243.500
 11011905       24453.325
 
 -- !orderBy5 --
@@ -498,122 +498,122 @@
 
 -- !orderBy5 --
 123.123        1
-1243.5 2
+1243.500       2
 24453.325      3
 
 -- !orderBy6 --
 123.123        1
-1243.5 2
+1243.500       2
 24453.325      3
 
 -- !orderBy7 --
 123.123        1
-1243.5 2
+1243.500       2
 24453.325      3
 
 -- !orderBy5 --
 123.123        1989
-1243.5 1986
+1243.500       1986
 24453.325      1989
 
 -- !orderBy6 --
 123.123        1989
-1243.5 1986
+1243.500       1986
 24453.325      1989
 
 -- !orderBy7 --
 123.123        1989
-1243.5 1986
+1243.500       1986
 24453.325      1989
 
 -- !orderBy5 --
 123.123        1001
-1243.5 1001
+1243.500       1001
 24453.325      1002
 
 -- !orderBy6 --
 123.123        1001
-1243.5 1001
+1243.500       1001
 24453.325      1002
 
 -- !orderBy7 --
 123.123        1001
-1243.5 1001
+1243.500       1001
 24453.325      1002
 
 -- !orderBy5 --
 123.123        11011902
-1243.5 11011903
+1243.500       11011903
 24453.325      11011905
 
 -- !orderBy6 --
 123.123        11011902
-1243.5 11011903
+1243.500       11011903
 24453.325      11011905
 
 -- !orderBy7 --
 123.123        11011902
-1243.5 11011903
+1243.500       11011903
 24453.325      11011905
 
 -- !orderBy5 --
 123.123        0.1
-1243.5 20.268
+1243.500       20.268
 24453.325      78945.0
 
 -- !orderBy6 --
 123.123        0.1
-1243.5 20.268
+1243.500       20.268
 24453.325      78945.0
 
 -- !orderBy7 --
 123.123        0.1
-1243.5 20.268
+1243.500       20.268
 24453.325      78945.0
 
 -- !orderBy5 --
 123.123        6.333
-1243.5 789.25
+1243.500       789.25
 24453.325      3654.0
 
 -- !orderBy6 --
 123.123        6.333
-1243.5 789.25
+1243.500       789.25
 24453.325      3654.0
 
 -- !orderBy7 --
 123.123        6.333
-1243.5 789.25
+1243.500       789.25
 24453.325      3654.0
 
 -- !orderBy5 --
 123.123        1989-03-21
-1243.5 1901-12-31
+1243.500       1901-12-31
 24453.325      2012-03-14
 
 -- !orderBy6 --
 123.123        1989-03-21
-1243.5 1901-12-31
+1243.500       1901-12-31
 24453.325      2012-03-14
 
 -- !orderBy7 --
 123.123        1989-03-21
-1243.5 1901-12-31
+1243.500       1901-12-31
 24453.325      2012-03-14
 
 -- !orderBy5 --
 123.123        1989-03-21T13:00
-1243.5 1989-03-21T13:00
+1243.500       1989-03-21T13:00
 24453.325      2000-01-01T00:00
 
 -- !orderBy6 --
 123.123        1989-03-21T13:00
-1243.5 1989-03-21T13:00
+1243.500       1989-03-21T13:00
 24453.325      2000-01-01T00:00
 
 -- !orderBy7 --
 123.123        1989-03-21T13:00
-1243.5 1989-03-21T13:00
+1243.500       1989-03-21T13:00
 24453.325      2000-01-01T00:00
 
 -- !orderBy5 --
@@ -678,17 +678,17 @@
 
 -- !orderBy5 --
 0.1    123.123
-20.268 1243.5
+20.268 1243.500
 78945.0        24453.325
 
 -- !orderBy6 --
 0.1    123.123
-20.268 1243.5
+20.268 1243.500
 78945.0        24453.325
 
 -- !orderBy7 --
 0.1    123.123
-20.268 1243.5
+20.268 1243.500
 78945.0        24453.325
 
 -- !orderBy5 --
@@ -798,17 +798,17 @@
 
 -- !orderBy5 --
 6.333  123.123
-789.25 1243.5
+789.25 1243.500
 3654.0 24453.325
 
 -- !orderBy6 --
 6.333  123.123
-789.25 1243.5
+789.25 1243.500
 3654.0 24453.325
 
 -- !orderBy7 --
 6.333  123.123
-789.25 1243.5
+789.25 1243.500
 3654.0 24453.325
 
 -- !orderBy5 --
@@ -917,17 +917,17 @@
 2012-03-14     11011905
 
 -- !orderBy5 --
-1901-12-31     1243.5
+1901-12-31     1243.500
 1989-03-21     123.123
 2012-03-14     24453.325
 
 -- !orderBy6 --
-1901-12-31     1243.5
+1901-12-31     1243.500
 1989-03-21     123.123
 2012-03-14     24453.325
 
 -- !orderBy7 --
-1901-12-31     1243.5
+1901-12-31     1243.500
 1989-03-21     123.123
 2012-03-14     24453.325
 
@@ -1038,16 +1038,16 @@
 
 -- !orderBy5 --
 1989-03-21T13:00       123.123
-1989-03-21T13:00       1243.5
+1989-03-21T13:00       1243.500
 2000-01-01T00:00       24453.325
 
 -- !orderBy6 --
 1989-03-21T13:00       123.123
-1989-03-21T13:00       1243.5
+1989-03-21T13:00       1243.500
 2000-01-01T00:00       24453.325
 
 -- !orderBy7 --
-1989-03-21T13:00       1243.5
+1989-03-21T13:00       1243.500
 1989-03-21T13:00       123.123
 2000-01-01T00:00       24453.325
 
@@ -1097,38 +1097,38 @@
 2000-01-01T00:00       2012-03-14
 
 -- !group1 --
-123.123
+123.123000000
 
 -- !group2 --
-24453.325
+24453.325000000
 
 -- !group3 --
 8606.649333333
 
 -- !group4 --
-25819.948
+25819.948000000
 
 -- !group5 --
 3
 
 -- !group6 --
-123.123
-1243.5
+123.123000000
+1243.500000000
 
 -- !group7 --
-123.123
-1243.5
-24453.325
+123.123000000
+1243.500000000
+24453.325000000
 
 -- !group8 --
-123.123
-1243.5
-24453.325
+123.123000000
+1243.500000000
+24453.325000000
 
 -- !group9 --
-123.123
-1243.5
-24453.325
+123.123000000
+1243.500000000
+24453.325000000
 
 -- !group10 --
 1
@@ -1200,9 +1200,9 @@ true      0.1
 1
 
 -- !group28 --
-123.123        246.246 1
-1243.5 2487    1
-24453.325      48906.65        1
+123.123        246.246000000   1
+1243.500       2487.000000000  1
+24453.325      48906.650000000 1
 
 -- !group29 --
 0      0       1
@@ -1245,9 +1245,9 @@ true      0.1
 -- !group40 --
 
 -- !group41 --
-123.123
-1243.5
-24453.325
+123.123000000
+1243.500000000
+24453.325000000
 
 -- !group42 --
 
@@ -1317,16 +1317,14 @@ true    0.1
 11
 12
 
--- !order16 --
-
 -- !orderBy_withNull_1 --
-11012025.123
-11013146.5
-11036358.325
+11012025.123000000
+11013146.500000000
+11036358.325000000
 
 -- !orderBy_withNull_2 --
 123.123        \N
-1243.5 \N
+1243.500       \N
 24453.325      \N
 
 -- !orderBy_withNull_3 --
@@ -1348,9 +1346,9 @@ true      0.1
 \N     15
 
 -- !orderBy_withNull_4 --
-11012025.123   1
-11013146.5     2
-11036358.325   3
+11012025.123000000     1
+11013146.500000000     2
+11036358.325000000     3
 
 -- !orderBy_withNull_5 --
 \N
@@ -1362,14 +1360,14 @@ true    0.1
 \N     3
 
 -- !orderBy_withNull_8 --
-11012025.123   \N
-11013146.5     \N
-11036358.325   \N
+11012025.123000000     \N
+11013146.500000000     \N
+11036358.325000000     \N
 
 -- !orderBy_withNull_9 --
-11012025.123
-11013146.5
-11036358.325
+11012025.123000000
+11013146.500000000
+11036358.325000000
 
 -- !orderBy_withNull_10 --
 \N     \N
@@ -1389,3 +1387,6 @@ true      0.1
 \N     14
 \N     15
 
+-- !group31 --
+1
+
diff --git a/regression-test/suites/query_p0/keyword/order_group.groovy 
b/regression-test/suites/query_p0/keyword/order_group.groovy
index e625abfe40..0f7775ddcf 100644
--- a/regression-test/suites/query_p0/keyword/order_group.groovy
+++ b/regression-test/suites/query_p0/keyword/order_group.groovy
@@ -205,4 +205,10 @@ suite("order_group", "query,p0") {
         sum(k2) over (partition by k5 + k6)\
         as ss from ${tableName2}  where k5 > 2000 )s order by k1,k2 "
     check2_doris(res7, res8)
+
+    sql 'set enable_vectorized_engine=true;'
+    sql 'set enable_nereids_planner=true'
+    sql 'set enable_fallback_to_original_planner=false'
+    qt_group31 "select count(*) from ${tableName1} where (k11='2015-03-13 
12:36:38' or k11 = '2000-01-01 00:00:00')\
+                   and k5 is not null group by k1%2, k2%2, k3%3, k4%3, k11%2 
order by count(*)"
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to