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

dataroaring pushed a commit to branch branch-4.0-preview
in repository https://gitbox.apache.org/repos/asf/doris.git

commit a5bd4604b313568e5e6727ad322b080c9a4e796b
Author: starocean999 <40539150+starocean...@users.noreply.github.com>
AuthorDate: Mon Apr 15 18:12:19 2024 +0800

    [fix](nereids)EliminateGroupBy should keep the output's datatype same as 
old ones (#33585)
---
 .../java/org/apache/doris/nereids/rules/rewrite/EliminateGroupBy.java | 4 +++-
 .../org/apache/doris/nereids/rules/rewrite/EliminateGroupByTest.java  | 2 +-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateGroupBy.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateGroupBy.java
index 109cff192f2..48c83ff7c45 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateGroupBy.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateGroupBy.java
@@ -34,6 +34,7 @@ import 
org.apache.doris.nereids.trees.expressions.literal.Literal;
 import org.apache.doris.nereids.trees.plans.Plan;
 import org.apache.doris.nereids.util.ExpressionUtils;
 import org.apache.doris.nereids.util.PlanUtils;
+import org.apache.doris.nereids.util.TypeCoercionUtils;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
@@ -79,7 +80,8 @@ public class EliminateGroupBy extends OneRewriteRuleFactory {
                         if (ne instanceof Alias && ne.child(0) instanceof 
AggregateFunction) {
                             AggregateFunction f = (AggregateFunction) 
ne.child(0);
                             if (f instanceof Sum || f instanceof Min || f 
instanceof Max) {
-                                newOutput.add(new Alias(ne.getExprId(), 
f.child(0), ne.getName()));
+                                newOutput.add(new Alias(ne.getExprId(), 
TypeCoercionUtils
+                                        .castIfNotSameType(f.child(0), 
f.getDataType()), ne.getName()));
                             } else if (f instanceof Count) {
                                 newOutput.add((NamedExpression) 
ne.withChildren(
                                         new If(
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/EliminateGroupByTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/EliminateGroupByTest.java
index 14f62d25f7f..9c8c2babec7 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/EliminateGroupByTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/EliminateGroupByTest.java
@@ -79,7 +79,7 @@ class EliminateGroupByTest extends TestWithFeService 
implements MemoPatternMatch
                 .rewrite()
                 .matches(
                         logicalProject().when(p -> 
p.getProjects().get(0).toSql().equals("id")
-                                && p.getProjects().get(1).toSql().equals("age 
AS `sum(age)`"))
+                                && 
p.getProjects().get(1).toSql().equals("cast(age as BIGINT) AS `sum(age)`"))
                 );
     }
 


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

Reply via email to