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 ####