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