This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch branch-1.1-lts in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-1.1-lts by this push: new 6e92aa34ca [fix](plan)result exprs should be substituted in the same way as agg exprs (#13757) 6e92aa34ca is described below commit 6e92aa34ca4bf2e351db5c4d6b1d24a344289204 Author: starocean999 <40539150+starocean...@users.noreply.github.com> AuthorDate: Mon Oct 31 08:50:33 2022 +0800 [fix](plan)result exprs should be substituted in the same way as agg exprs (#13757) * [fix](plan)result exprs should be substituted in the same way as agg exprs * remove unused code --- .../java/org/apache/doris/analysis/SelectStmt.java | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java index 2fe58db9ec..2cc192b9d1 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java @@ -1062,6 +1062,9 @@ public class SelectStmt extends QueryStmt { countAllMap = ExprSubstitutionMap.compose(multiCountOrSumDistinctMap, countAllMap, analyzer); List<Expr> substitutedAggs = Expr.substituteList(aggExprs, countAllMap, analyzer, false); + // the resultExprs must substitute in the same way as aggExprs + // then resultExprs can be substitute correctly using combinedSmap + resultExprs = Expr.substituteList(resultExprs, countAllMap, analyzer, false); aggExprs.clear(); TreeNode.collect(substitutedAggs, Expr.isAggregatePredicate(), aggExprs); @@ -1395,7 +1398,11 @@ public class SelectStmt extends QueryStmt { // we must make sure the expr is analyzed before rewrite try { for (Expr expr : oriGroupingExprs) { - expr.analyze(analyzer); + if (!(expr instanceof SlotRef)) { + // if group expr is not a slotRef, it should be analyzed in the same way as result expr + // otherwise, the group expr is either a simple column or an alias, no need to analyze + expr.analyze(analyzer); + } } } catch (AnalysisException ex) { //ignore any exception @@ -1403,7 +1410,9 @@ public class SelectStmt extends QueryStmt { rewriter.rewriteList(oriGroupingExprs, analyzer); // after rewrite, need reset the analyze status for later re-analyze for (Expr expr : oriGroupingExprs) { - expr.reset(); + if (!(expr instanceof SlotRef)) { + expr.reset(); + } } } } @@ -1411,13 +1420,20 @@ public class SelectStmt extends QueryStmt { for (OrderByElement orderByElem : orderByElements) { // we must make sure the expr is analyzed before rewrite try { - orderByElem.getExpr().analyze(analyzer); + if (!(orderByElem.getExpr() instanceof SlotRef)) { + // if sort expr is not a slotRef, it should be analyzed in the same way as result expr + // otherwise, the sort expr is either a simple column or an alias, no need to analyze + orderByElem.getExpr().analyze(analyzer); + } } catch (AnalysisException ex) { //ignore any exception } orderByElem.setExpr(rewriter.rewrite(orderByElem.getExpr(), analyzer)); // after rewrite, need reset the analyze status for later re-analyze orderByElem.getExpr().reset(); + if (!(orderByElem.getExpr() instanceof SlotRef)) { + orderByElem.getExpr().reset(); + } } } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org