From 294cb1948cc26e36ae15403f9bba7b336a564f88 Mon Sep 17 00:00:00 2001 From: starocean999 <12095047@qq.com> Date: Thu, 6 Jun 2024 14:43:07 +0800 Subject: [PATCH] [fix](nereids)should not push down constant output expr in window expression --- .../rules/rewrite/ExtractAndNormalizeWindowExpression.java | 4 +++- 1 file changed, 3 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 9da34ea5c614d5..6ddbf881ef3175 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 @@ -19,6 +19,7 @@ import org.apache.doris.nereids.rules.Rule; import org.apache.doris.nereids.rules.RuleType; +import org.apache.doris.nereids.rules.rewrite.NormalizeToSlot.NormalizeToSlotContext; import org.apache.doris.nereids.trees.expressions.Alias; import org.apache.doris.nereids.trees.expressions.Expression; import org.apache.doris.nereids.trees.expressions.NamedExpression; @@ -65,7 +66,8 @@ public Rule build() { // 1. handle bottom projects Set existedAlias = ExpressionUtils.collect(outputs, Alias.class::isInstance); - Set toBePushedDown = collectExpressionsToBePushedDown(outputs); + Set toBePushedDown = collectExpressionsToBePushedDown( + outputs.stream().filter(expr -> !expr.isConstant()).collect(Collectors.toList())); NormalizeToSlotContext context = NormalizeToSlotContext.buildContext(existedAlias, toBePushedDown); // set toBePushedDown exprs as NamedExpression, e.g. (a+1) -> Alias(a+1) Set bottomProjects = context.pushDownToNamedExpression(toBePushedDown);