diff --git itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java index 654bdf8..79e4818 100644 --- itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java +++ itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java @@ -3166,6 +3166,18 @@ private void testInsertOverwrite(HiveStatement stmt) throws SQLException { } @Test + public void testUnionUniqueColumnNames() throws Exception { + HiveStatement stmt = (HiveStatement) con.createStatement(); + + stmt.execute("SET hive.resultset.use.unique.column.names=true"); + ResultSet rs = stmt.executeQuery("select 1 UNION ALL select 2"); + ResultSetMetaData metaData = rs.getMetaData(); + assertEquals("_c0", metaData.getColumnLabel(1)); + assertTrue("There's no . for the UNION column name", !metaData.getColumnLabel(1).contains(".")); + stmt.close(); + } + + @Test public void testGetQueryId() throws Exception { HiveStatement stmt = (HiveStatement) con.createStatement(); HiveStatement stmt1 = (HiveStatement) con.createStatement(); diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index a3da075..c0ce9a2 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -12823,7 +12823,8 @@ protected void saveViewDefinition() throws SemanticException { } qualifiedColName = rr.reverseLookup(colInfo.getInternalName()); - if (useTabAliasIfAvailable && qualifiedColName[0] != null && !qualifiedColName[0].isEmpty()) { + // _u is a UNION ALL placeholder name + if (useTabAliasIfAvailable && qualifiedColName[0] != null && (!qualifiedColName[0].isEmpty()) && (!qualifiedColName[0].startsWith("_u"))) { colName = qualifiedColName[0] + "." + qualifiedColName[1]; } else { colName = qualifiedColName[1];