You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by kg...@apache.org on 2018/09/04 15:04:31 UTC

hive git commit: HIVE-19993: Using a table alias which also appears as a column name is not possible (Jaume M via Zoltan Haindrich)

Repository: hive
Updated Branches:
  refs/heads/master 3287a097e -> 8b73fbb47


HIVE-19993: Using a table alias which also appears as a column name is not possible (Jaume M via Zoltan Haindrich)

Signed-off-by: Zoltan Haindrich <ki...@rxd.hu>


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/8b73fbb4
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/8b73fbb4
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/8b73fbb4

Branch: refs/heads/master
Commit: 8b73fbb4762714a46832efed939311f1564f8edf
Parents: 3287a09
Author: Jaume M <ja...@gmail.com>
Authored: Tue Sep 4 17:03:22 2018 +0200
Committer: Zoltan Haindrich <ki...@rxd.hu>
Committed: Tue Sep 4 17:03:22 2018 +0200

----------------------------------------------------------------------
 .../test/resources/testconfiguration.properties |  1 +
 .../hive/ql/parse/TypeCheckProcFactory.java     | 10 ++++--
 .../clientpositive/column_name_is_table_alias.q |  7 ++++
 .../llap/column_name_is_table_alias.q.out       | 34 ++++++++++++++++++++
 4 files changed, 50 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/8b73fbb4/itests/src/test/resources/testconfiguration.properties
----------------------------------------------------------------------
diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties
index 983d5a7..27080e0 100644
--- a/itests/src/test/resources/testconfiguration.properties
+++ b/itests/src/test/resources/testconfiguration.properties
@@ -478,6 +478,7 @@ minillaplocal.query.files=\
   cbo_rp_unionDistinct_2.q,\
   cbo_rp_windowing_2.q,\
   cbo_subq_not_in.q,\
+  column_name_is_table_alias.q,\
   column_table_stats.q,\
   column_table_stats_orc.q,\
   colstats_date_min_max.q,\

http://git-wip-us.apache.org/repos/asf/hive/blob/8b73fbb4/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java
index a8c9832..4968d16 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java
@@ -657,8 +657,14 @@ public class TypeCheckProcFactory {
           .getChild(0).getText());
 
       boolean isTableAlias = input.hasTableAlias(tableOrCol);
-      ColumnInfo colInfo = input.get(null, tableOrCol);
-
+      ColumnInfo colInfo = null;
+      try {
+        colInfo = input.get(null, tableOrCol);
+      } catch (SemanticException semanticException) {
+        if (!isTableAlias || parent == null || parent.getType() != HiveParser.DOT) {
+          throw semanticException;
+        }
+      }
       // try outer row resolver
       if(ctx.getOuterRR() != null && colInfo == null && !isTableAlias) {
         RowResolver outerRR = ctx.getOuterRR();

http://git-wip-us.apache.org/repos/asf/hive/blob/8b73fbb4/ql/src/test/queries/clientpositive/column_name_is_table_alias.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/column_name_is_table_alias.q b/ql/src/test/queries/clientpositive/column_name_is_table_alias.q
new file mode 100644
index 0000000..8821b5c
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/column_name_is_table_alias.q
@@ -0,0 +1,7 @@
+DROP TABLE IF EXISTS tableA;
+DROP TABLE IF EXISTS tableB;
+
+CREATE TABLE tableA (a INTEGER,z INTEGER);
+CREATE TABLE tableB (a INTEGER,b INTEGER,z INTEGER);
+
+SELECT a.z, b.b FROM tableB AS b JOIN tableA AS a ON a.a=b.b;

http://git-wip-us.apache.org/repos/asf/hive/blob/8b73fbb4/ql/src/test/results/clientpositive/llap/column_name_is_table_alias.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/column_name_is_table_alias.q.out b/ql/src/test/results/clientpositive/llap/column_name_is_table_alias.q.out
new file mode 100644
index 0000000..3b79e33
--- /dev/null
+++ b/ql/src/test/results/clientpositive/llap/column_name_is_table_alias.q.out
@@ -0,0 +1,34 @@
+PREHOOK: query: DROP TABLE IF EXISTS tableA
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: DROP TABLE IF EXISTS tableA
+POSTHOOK: type: DROPTABLE
+PREHOOK: query: DROP TABLE IF EXISTS tableB
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: DROP TABLE IF EXISTS tableB
+POSTHOOK: type: DROPTABLE
+PREHOOK: query: CREATE TABLE tableA (a INTEGER,z INTEGER)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@tableA
+POSTHOOK: query: CREATE TABLE tableA (a INTEGER,z INTEGER)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@tableA
+PREHOOK: query: CREATE TABLE tableB (a INTEGER,b INTEGER,z INTEGER)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@tableB
+POSTHOOK: query: CREATE TABLE tableB (a INTEGER,b INTEGER,z INTEGER)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@tableB
+PREHOOK: query: SELECT a.z, b.b FROM tableB AS b JOIN tableA AS a ON a.a=b.b
+PREHOOK: type: QUERY
+PREHOOK: Input: default@tablea
+PREHOOK: Input: default@tableb
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT a.z, b.b FROM tableB AS b JOIN tableA AS a ON a.a=b.b
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@tablea
+POSTHOOK: Input: default@tableb
+#### A masked pattern was here ####