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;" }