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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]