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 59ae5b39578 [fix](Nereids) should not fold constant when do ordinal 
group by (#29976)
59ae5b39578 is described below

commit 59ae5b395783150feed8540b753f7bb6d73a9e81
Author: morrySnow <101034200+morrys...@users.noreply.github.com>
AuthorDate: Tue Jan 16 14:31:04 2024 +0800

    [fix](Nereids) should not fold constant when do ordinal group by (#29976)
---
 .../rules/analysis/ResolveOrdinalInOrderByAndGroupBy.java    | 12 +++---------
 regression-test/data/nereids_syntax_p0/group_by_constant.out |  3 +++
 .../suites/nereids_syntax_p0/group_by_constant.groovy        |  2 ++
 3 files changed, 8 insertions(+), 9 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/ResolveOrdinalInOrderByAndGroupBy.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/ResolveOrdinalInOrderByAndGroupBy.java
index 7e6cecd6f3a..1cefd203ff7 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/ResolveOrdinalInOrderByAndGroupBy.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/ResolveOrdinalInOrderByAndGroupBy.java
@@ -20,8 +20,6 @@ package org.apache.doris.nereids.rules.analysis;
 import org.apache.doris.nereids.properties.OrderKey;
 import org.apache.doris.nereids.rules.Rule;
 import org.apache.doris.nereids.rules.RuleType;
-import org.apache.doris.nereids.rules.expression.ExpressionRewriteContext;
-import org.apache.doris.nereids.rules.expression.rules.FoldConstantRule;
 import org.apache.doris.nereids.trees.expressions.Alias;
 import org.apache.doris.nereids.trees.expressions.Expression;
 import org.apache.doris.nereids.trees.expressions.NamedExpression;
@@ -51,10 +49,8 @@ public class ResolveOrdinalInOrderByAndGroupBy implements 
AnalysisRuleFactory {
                             List<Slot> childOutput = sort.child().getOutput();
                             List<OrderKey> orderKeys = sort.getOrderKeys();
                             List<OrderKey> orderKeysWithoutOrd = new 
ArrayList<>();
-                            ExpressionRewriteContext context = new 
ExpressionRewriteContext(ctx.cascadesContext);
                             for (OrderKey k : orderKeys) {
                                 Expression expression = k.getExpr();
-                                expression = 
FoldConstantRule.INSTANCE.rewrite(expression, context);
                                 if (expression instanceof IntegerLikeLiteral) {
                                     IntegerLikeLiteral i = 
(IntegerLikeLiteral) expression;
                                     int ord = i.getIntValue();
@@ -69,14 +65,12 @@ public class ResolveOrdinalInOrderByAndGroupBy implements 
AnalysisRuleFactory {
                         })
                 ))
                 .add(RuleType.RESOLVE_ORDINAL_IN_GROUP_BY.build(
-                        logicalAggregate().whenNot(agg -> 
agg.isOrdinalIsResolved()).thenApply(ctx -> {
+                        
logicalAggregate().whenNot(LogicalAggregate::isOrdinalIsResolved).thenApply(ctx 
-> {
                             LogicalAggregate<Plan> agg = ctx.root;
                             List<NamedExpression> aggOutput = 
agg.getOutputExpressions();
                             List<Expression> groupByWithoutOrd = new 
ArrayList<>();
-                            ExpressionRewriteContext context = new 
ExpressionRewriteContext(ctx.cascadesContext);
                             boolean ordExists = false;
                             for (Expression groupByExpr : 
agg.getGroupByExpressions()) {
-                                groupByExpr = 
FoldConstantRule.INSTANCE.rewrite(groupByExpr, context);
                                 if (groupByExpr instanceof IntegerLikeLiteral) 
{
                                     IntegerLikeLiteral i = 
(IntegerLikeLiteral) groupByExpr;
                                     int ord = i.getIntValue();
@@ -92,8 +86,8 @@ public class ResolveOrdinalInOrderByAndGroupBy implements 
AnalysisRuleFactory {
                                 }
                             }
                             if (ordExists) {
-                                return new LogicalAggregate(groupByWithoutOrd, 
agg.getOutputExpressions(), true,
-                                        agg.child());
+                                return new 
LogicalAggregate<>(groupByWithoutOrd, agg.getOutputExpressions(),
+                                        true, agg.child());
                             } else {
                                 return agg;
                             }
diff --git a/regression-test/data/nereids_syntax_p0/group_by_constant.out 
b/regression-test/data/nereids_syntax_p0/group_by_constant.out
index d41d1aa3407..803d8e53f56 100644
--- a/regression-test/data/nereids_syntax_p0/group_by_constant.out
+++ b/regression-test/data/nereids_syntax_p0/group_by_constant.out
@@ -43,3 +43,6 @@ str   24      1310179 10      1
 -- !sql --
 2
 
+-- !sql --
+1
+
diff --git a/regression-test/suites/nereids_syntax_p0/group_by_constant.groovy 
b/regression-test/suites/nereids_syntax_p0/group_by_constant.groovy
index 3cdce346431..30a24e5fdb8 100644
--- a/regression-test/suites/nereids_syntax_p0/group_by_constant.groovy
+++ b/regression-test/suites/nereids_syntax_p0/group_by_constant.groovy
@@ -55,4 +55,6 @@ suite("group_by_constant") {
     qt_sql """select SUM(if(lo_tax=1,lo_tax,0)) FROM lineorder where false;"""
 
     qt_sql """select 2 FROM lineorder group by 1;"""
+
+    qt_sql """select 1 from lineorder group by 1 + 1"""
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to