This is an automated email from the ASF dual-hosted git repository. morningman pushed a commit to branch branch-1.2-lts in repository https://gitbox.apache.org/repos/asf/doris.git
commit f3434230303bebf696e8712693b097fddb178067 Author: mch_ucchi <41606806+sohardforan...@users.noreply.github.com> AuthorDate: Mon Jul 24 11:40:00 2023 +0800 [Fix](planner) fix rewritten alias function's original function is not analyzed again (#21497) fn is null because the alias function's original function is analyzed again, we fix it by add an analysis phase. --- .../src/main/java/org/apache/doris/analysis/FunctionCallExpr.java | 5 +++-- .../main/java/org/apache/doris/rewrite/RewriteAliasFunctionRule.java | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java index 1dee954964..05474da81a 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java @@ -1645,7 +1645,7 @@ public class FunctionCallExpr extends Expr { * @return * @throws AnalysisException */ - public Expr rewriteExpr() throws AnalysisException { + public Expr rewriteExpr(Analyzer analyzer) throws AnalysisException { if (isRewrote) { return this; } @@ -1674,13 +1674,14 @@ public class FunctionCallExpr extends Expr { retExpr.fnParams = new FunctionParams(oriExpr.fnParams.isDistinct(), oriParamsExprs); - // retExpr changed to original function, so the fn should be null. + // retExpr changed to original function, should be analyzed again. retExpr.fn = null; // reset children retExpr.children.clear(); retExpr.children.addAll(oriExpr.getChildren()); retExpr.isRewrote = true; + retExpr.analyze(analyzer); return retExpr; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/rewrite/RewriteAliasFunctionRule.java b/fe/fe-core/src/main/java/org/apache/doris/rewrite/RewriteAliasFunctionRule.java index faa9fa2cac..1e9dfc026b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/rewrite/RewriteAliasFunctionRule.java +++ b/fe/fe-core/src/main/java/org/apache/doris/rewrite/RewriteAliasFunctionRule.java @@ -38,7 +38,7 @@ public class RewriteAliasFunctionRule implements ExprRewriteRule { if (fn instanceof AliasFunction) { Expr originFn = ((AliasFunction) fn).getOriginFunction(); if (originFn instanceof FunctionCallExpr) { - return ((FunctionCallExpr) expr).rewriteExpr(); + return ((FunctionCallExpr) expr).rewriteExpr(analyzer); } else if (originFn instanceof CastExpr) { return ((CastExpr) originFn).rewriteExpr(((AliasFunction) fn).getParameters(), ((FunctionCallExpr) expr).getParams().exprs()); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org