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]