Index: ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java (revision 1489269) +++ ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java (working copy) @@ -40,10 +40,10 @@ import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; -import java.util.Map.Entry; import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang.StringUtils; @@ -113,8 +113,9 @@ import org.apache.hadoop.hive.ql.plan.AlterIndexDesc; import org.apache.hadoop.hive.ql.plan.AlterTableAlterPartDesc; import org.apache.hadoop.hive.ql.plan.AlterTableDesc; +import org.apache.hadoop.hive.ql.plan.AlterTableDesc.AlterTableTypes; +import org.apache.hadoop.hive.ql.plan.AlterTableExchangePartition; import org.apache.hadoop.hive.ql.plan.AlterTableSimpleDesc; -import org.apache.hadoop.hive.ql.plan.AlterTableExchangePartition; import org.apache.hadoop.hive.ql.plan.CreateDatabaseDesc; import org.apache.hadoop.hive.ql.plan.CreateIndexDesc; import org.apache.hadoop.hive.ql.plan.CreateTableDesc; @@ -152,7 +153,6 @@ import org.apache.hadoop.hive.ql.plan.SwitchDatabaseDesc; import org.apache.hadoop.hive.ql.plan.TruncateTableDesc; import org.apache.hadoop.hive.ql.plan.UnlockTableDesc; -import org.apache.hadoop.hive.ql.plan.AlterTableDesc.AlterTableTypes; import org.apache.hadoop.hive.ql.plan.api.StageType; import org.apache.hadoop.hive.ql.security.authorization.Privilege; import org.apache.hadoop.hive.serde.serdeConstants; @@ -3024,7 +3024,9 @@ Table oldTbl = tbl.copy(); if (alterTbl.getOp() == AlterTableDesc.AlterTableTypes.RENAME) { - tbl.setTableName(alterTbl.getNewName()); + Table tmpTbl = db.newTable(alterTbl.getNewName()); + tbl.setDbName(tmpTbl.getDbName()); + tbl.setTableName(tmpTbl.getTableName()); } else if (alterTbl.getOp() == AlterTableDesc.AlterTableTypes.ADDCOLS) { List newCols = alterTbl.getNewCols(); List oldCols = tbl.getCols(); Index: ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java (revision 1489269) +++ ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java (working copy) @@ -3240,14 +3240,8 @@ } private Table getTable(String tblName, boolean throwException) throws SemanticException { - return getTable(db.getCurrentDatabase(), tblName, throwException); - } - - private Table getTable(String database, String tblName, boolean throwException) - throws SemanticException { try { - Table tab = database == null ? db.getTable(tblName, false) - : db.getTable(database, tblName, false); + Table tab = db.getTable(tblName, false); if (tab == null && throwException) { throw new SemanticException(ErrorMsg.INVALID_TABLE.getMsg(tblName)); } @@ -3257,6 +3251,15 @@ } } + private Table getTable(String database, String tblName, boolean throwException) + throws SemanticException { + String fullTblName = tblName; + if (database != null) { + fullTblName = database + "." + tblName; + } + return getTable(fullTblName, throwException); + } + private Partition getPartition(Table table, Map partSpec, boolean throwException) throws SemanticException { try { Index: ql/src/java/org/apache/hadoop/hive/ql/parse/HiveLexer.g =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/parse/HiveLexer.g (revision 1489269) +++ ql/src/java/org/apache/hadoop/hive/ql/parse/HiveLexer.g (working copy) @@ -373,7 +373,7 @@ Identifier : - (Letter | Digit) (Letter | Digit | '_')* + (Letter | Digit) (Letter | Digit | '_' | '.')* | '`' RegexComponent+ '`' ;