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

Reply via email to