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 a1728f19d4 [fix](agg)having clause should use alias if there is no 
group by clause (#14874)
a1728f19d4 is described below

commit a1728f19d413ff51273cee3e886afe5504aaef33
Author: starocean999 <[email protected]>
AuthorDate: Wed Dec 7 15:29:22 2022 +0800

    [fix](agg)having clause should use alias if there is no group by clause 
(#14874)
---
 .../java/org/apache/doris/analysis/SelectStmt.java  | 21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 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 63121fb3db..7bf212f84d 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
@@ -969,12 +969,21 @@ public class SelectStmt extends QueryStmt {
              *                     (select min(k1) from table b where 
a.key=b.k2);
              * TODO: the a.key should be replaced by a.k1 instead of unknown 
column 'key' in 'a'
              */
-            try {
-                // use col name from tableRefs first
-                havingClauseAfterAnaylzed = havingClause.clone();
-                havingClauseAfterAnaylzed.analyze(analyzer);
-            } catch (AnalysisException ex) {
-                // then consider alias name
+            if (groupByClause != null) {
+                // according to mysql
+                // if there is a group by clause, the having clause should use 
column name not alias
+                // this is the same as group by clause
+                try {
+                    // use col name from tableRefs first
+                    havingClauseAfterAnaylzed = havingClause.clone();
+                    havingClauseAfterAnaylzed.analyze(analyzer);
+                } catch (AnalysisException ex) {
+                    // then consider alias name
+                    havingClauseAfterAnaylzed = 
havingClause.substitute(aliasSMap, analyzer, false);
+                }
+            } else {
+                // according to mysql
+                // if there is no group by clause, the having clause should 
use alias
                 havingClauseAfterAnaylzed = havingClause.substitute(aliasSMap, 
analyzer, false);
             }
             havingClauseAfterAnaylzed = 
rewriteQueryExprByMvColumnExpr(havingClauseAfterAnaylzed, analyzer);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to