From e36f3901341cb0ba22f8dd586952c83ec486e663 Mon Sep 17 00:00:00 2001 From: starocean999 <40539150+starocean999@users.noreply.github.com> Date: Mon, 29 Jan 2024 16:45:35 +0800 Subject: [PATCH] [fix](nereids)window expression's window frame may lost in NormalizeToSlot (#30378) --- .../apache/doris/nereids/rules/rewrite/NormalizeToSlot.java | 3 +++ .../suites/nereids_p0/aggregate/agg_window_project.groovy | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/NormalizeToSlot.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/NormalizeToSlot.java index 1cd56ad129..efad94c665 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/NormalizeToSlot.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/NormalizeToSlot.java @@ -185,6 +185,9 @@ public interface NormalizeToSlot { } newChildren.add(newChild); } + if (windowExpression.getWindowFrame().isPresent()) { + newChildren.add(windowExpression.getWindowFrame().get()); + } return hasNewChildren ? windowExpression.withChildren(newChildren) : windowExpression; } } 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 605f4da5ff..0c9ea9d9fd 100644 --- a/regression-test/suites/nereids_p0/aggregate/agg_window_project.groovy +++ b/regression-test/suites/nereids_p0/aggregate/agg_window_project.groovy @@ -96,5 +96,10 @@ suite("agg_window_project") { order_qt_select4 """select a, c, sum(sum(b)) over(partition by c order by c rows between unbounded preceding and current row) from test_window_table2 group by a, c having a > 1;""" + explain { + sql("select a, c, sum(sum(b)) over(partition by c order by c rows between unbounded preceding and current row) from test_window_table2 group by a, c having a > 1;") + contains "ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW" + } + sql "DROP TABLE IF EXISTS test_window_table2;" }