diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/rules/FoldConstantRule.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/rules/FoldConstantRule.java index 175e40b0aa..9ec497c576 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/rules/FoldConstantRule.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/rules/FoldConstantRule.java @@ -31,7 +31,7 @@ public class FoldConstantRule extends AbstractExpressionRewriteRule { @Override public Expression rewrite(Expression expr, ExpressionRewriteContext ctx) { if (ctx.connectContext != null && ctx.connectContext.getSessionVariable().isEnableFoldConstantByBe()) { - return FoldConstantRuleOnBE.INSTANCE.rewrite(expr, ctx); + return new FoldConstantRuleOnBE().rewrite(expr, ctx); } return FoldConstantRuleOnFE.INSTANCE.rewrite(expr, ctx); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/rules/FoldConstantRuleOnBE.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/rules/FoldConstantRuleOnBE.java index 09751d7d21..284313035b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/rules/FoldConstantRuleOnBE.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/rules/FoldConstantRuleOnBE.java @@ -30,6 +30,7 @@ import org.apache.doris.common.util.VectorizedUtil; import org.apache.doris.nereids.glue.translator.ExpressionTranslator; import org.apache.doris.nereids.rules.expression.rewrite.AbstractExpressionRewriteRule; import org.apache.doris.nereids.rules.expression.rewrite.ExpressionRewriteContext; +import org.apache.doris.nereids.trees.expressions.Alias; import org.apache.doris.nereids.trees.expressions.Between; import org.apache.doris.nereids.trees.expressions.Cast; import org.apache.doris.nereids.trees.expressions.Expression; @@ -66,7 +67,6 @@ import java.util.concurrent.TimeUnit; * Constant evaluation of an expression. */ public class FoldConstantRuleOnBE extends AbstractExpressionRewriteRule { - public static final FoldConstantRuleOnBE INSTANCE = new FoldConstantRuleOnBE(); private static final Logger LOG = LogManager.getLogger(FoldConstantRuleOnBE.class); private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); private final IdGenerator idGenerator = ExprId.createGenerator(); @@ -80,7 +80,11 @@ public class FoldConstantRuleOnBE extends AbstractExpressionRewriteRule { private Expression foldByBE(Expression root, ExpressionRewriteContext context) { Map constMap = Maps.newHashMap(); Map staleConstTExprMap = Maps.newHashMap(); - collectConst(root, constMap, staleConstTExprMap); + Expression rootWithoutAlias = root; + if (root instanceof Alias) { + rootWithoutAlias = ((Alias) root).child(); + } + collectConst(rootWithoutAlias, constMap, staleConstTExprMap); if (constMap.isEmpty()) { return root; }