diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index af7f089975..ee30f1447c 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,\ 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 a8c98326fc..4968d16876 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 Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, .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(); 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 0000000000..8821b5c092 --- /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;