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);