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

morrysnow pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-2.0 by this push:
     new 360aef72a9f [fix](nereids)ExtractAndNormalizeWindowExpression should 
only normalize alias in output (#33587)
360aef72a9f is described below

commit 360aef72a9fdf2bbb0faa78d7fc62f8f4d684270
Author: starocean999 <[email protected]>
AuthorDate: Mon Apr 15 14:35:57 2024 +0800

    [fix](nereids)ExtractAndNormalizeWindowExpression should only normalize 
alias in output (#33587)
---
 .../nereids/rules/rewrite/ExtractAndNormalizeWindowExpression.java  | 6 +++++-
 .../suites/nereids_p0/aggregate/agg_window_project.groovy           | 2 ++
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ExtractAndNormalizeWindowExpression.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ExtractAndNormalizeWindowExpression.java
index 4b080fb48fe..9da34ea5c61 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ExtractAndNormalizeWindowExpression.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ExtractAndNormalizeWindowExpression.java
@@ -88,8 +88,12 @@ public class ExtractAndNormalizeWindowExpression extends 
OneRewriteRuleFactory i
                     .collect(Collectors.toMap(expr -> ((Alias) expr).child(), 
expr -> ((Alias) expr).toSlot(),
                             (oldExpr, newExpr) -> oldExpr));
 
+            // customNormalizeMap is only for alias, so we just normalize 
alias in outputs too
             List<NamedExpression> normalizedOutputs = 
context.normalizeToUseSlotRef(outputs,
-                    (ctx, expr) -> customNormalizeMap.getOrDefault(expr, 
null));
+                    (ctx, expr) -> expr instanceof Alias ? 
customNormalizeMap.getOrDefault(expr, null) : null);
+            // replace child exprs in normalizedOutputs by customNormalizeMap
+            normalizedOutputs =
+                    ExpressionUtils.replaceNamedExpressions(normalizedOutputs, 
customNormalizeMap);
             Set<WindowExpression> normalizedWindows =
                     ExpressionUtils.collect(normalizedOutputs, 
WindowExpression.class::isInstance);
 
diff --git 
a/regression-test/suites/nereids_p0/aggregate/agg_window_project.groovy 
b/regression-test/suites/nereids_p0/aggregate/agg_window_project.groovy
index 1026201eca9..6203734d1e8 100644
--- a/regression-test/suites/nereids_p0/aggregate/agg_window_project.groovy
+++ b/regression-test/suites/nereids_p0/aggregate/agg_window_project.groovy
@@ -103,5 +103,7 @@ suite("agg_window_project") {
         contains "ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW"
     }
 
+    sql """select a, a aa, row_number() over (partition by b) from 
test_window_table2;"""
+
     sql "DROP TABLE IF EXISTS test_window_table2;"
 }


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

Reply via email to