diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java index 136e951..6e6921a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java @@ -343,14 +343,20 @@ public static String getUnescapedName(ASTNode tableOrColumnNode) { public static Map.Entry getDbTableNamePair(ASTNode tableNameNode) { assert(tableNameNode.getToken().getType() == HiveParser.TOK_TABNAME); + String dbName = null; + String tableName; if (tableNameNode.getChildCount() == 2) { - String dbName = unescapeIdentifier(tableNameNode.getChild(0).getText()); - String tableName = unescapeIdentifier(tableNameNode.getChild(1).getText()); - return Pair.of(dbName, tableName); + dbName = unescapeIdentifier(tableNameNode.getChild(0).getText()); + tableName = unescapeIdentifier(tableNameNode.getChild(1).getText()); } else { - String tableName = unescapeIdentifier(tableNameNode.getChild(0).getText()); - return Pair.of(null,tableName); + tableName = unescapeIdentifier(tableNameNode.getChild(0).getText()); + if (tableName.indexOf('.') > 0) { + dbName = tableName.split("\\.")[0]; + tableName = tableName.split("\\.")[1]; + } + } + return Pair.of(dbName,tableName); } public static String getUnescapedName(ASTNode tableOrColumnNode, String currentDatabase) {