This is an automated email from the ASF dual-hosted git repository.

krisztiankasa pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git


The following commit(s) were added to refs/heads/master by this push:
     new 8961f415d9f HIVE-28881: Ambiguous column reference is not detected in 
GROUP BY query. (Krisztian Kasa, reviewed by Sourabh Badhya, Soumyakanti Das)
8961f415d9f is described below

commit 8961f415d9fb2ff7838875ed9202f1814a3fdd89
Author: Krisztian Kasa <[email protected]>
AuthorDate: Mon Apr 14 05:54:52 2025 +0200

    HIVE-28881: Ambiguous column reference is not detected in GROUP BY query. 
(Krisztian Kasa, reviewed by Sourabh Badhya, Soumyakanti Das)
---
 ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java  | 5 +++--
 ql/src/test/queries/clientnegative/cbo_ambiguous_colref_in_gby.q | 7 +++++++
 .../results/clientnegative/cbo_ambiguous_colref_in_gby.q.out     | 9 +++++++++
 3 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java 
b/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
index e40b0761eb9..9e0a222047e 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
@@ -3800,9 +3800,9 @@ private RelNode genGBLogicalPlan(QB qb, RelNode srcRel) 
throws SemanticException
         groupByOutputRowResolver.setIsExprResolver(true);
 
         if (hasGrpByAstExprs) {
+          groupByInputRowResolver.setCheckForAmbiguity(true);
           // 4. Construct GB Keys (ExprNode)
-          for (int i = 0; i < groupByNodes.size(); ++i) {
-            ASTNode groupByNode = groupByNodes.get(i);
+          for (ASTNode groupByNode : groupByNodes) {
             Map<ASTNode, RexNode> astToRexNodeMap = genAllRexNode(
                 groupByNode, groupByInputRowResolver, cluster.getRexBuilder());
             RexNode groupByExpression = astToRexNodeMap.get(groupByNode);
@@ -3814,6 +3814,7 @@ private RelNode genGBLogicalPlan(QB qb, RelNode srcRel) 
throws SemanticException
             addToGBExpr(groupByOutputRowResolver, groupByInputRowResolver, 
groupByNode,
                 groupByExpression, groupByExpressions, outputColumnNames);
           }
+          groupByInputRowResolver.setCheckForAmbiguity(false);
         }
 
         // 5. GroupingSets, Cube, Rollup
diff --git a/ql/src/test/queries/clientnegative/cbo_ambiguous_colref_in_gby.q 
b/ql/src/test/queries/clientnegative/cbo_ambiguous_colref_in_gby.q
new file mode 100644
index 00000000000..15e4f5f70d2
--- /dev/null
+++ b/ql/src/test/queries/clientnegative/cbo_ambiguous_colref_in_gby.q
@@ -0,0 +1,7 @@
+create table t1 (a int);
+
+explain cbo
+select s.a from
+  (select a, a from t1) s
+group by s.a
+;
diff --git 
a/ql/src/test/results/clientnegative/cbo_ambiguous_colref_in_gby.q.out 
b/ql/src/test/results/clientnegative/cbo_ambiguous_colref_in_gby.q.out
new file mode 100644
index 00000000000..c3b7baacdf1
--- /dev/null
+++ b/ql/src/test/results/clientnegative/cbo_ambiguous_colref_in_gby.q.out
@@ -0,0 +1,9 @@
+PREHOOK: query: create table t1 (a int)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@t1
+POSTHOOK: query: create table t1 (a int)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@t1
+FAILED: SemanticException Ambiguous column reference: s.a

Reply via email to