commit 530cd6dbb3e53e8c97d5f93257bf26d8d983f299 Author: Andrew Sherman Date: Tue Jul 3 16:15:08 2018 -0700 HIVE-18852: Misleading error message in alter table validation diff --git ql/src/test/queries/clientnegative/alter_table_wrong_db.q ql/src/test/queries/clientnegative/alter_table_wrong_db.q new file mode 100644 index 0000000000000000000000000000000000000000..da8ee48b6992865f068ac540e2fce548a7f09b06 --- /dev/null +++ ql/src/test/queries/clientnegative/alter_table_wrong_db.q @@ -0,0 +1,4 @@ +create database bad_rename1; +use bad_rename1; +create table rename1(a int); +alter table bad_rename1.rename1 rename to bad_db_notexists.rename1; diff --git ql/src/test/queries/clientnegative/alter_table_wrong_table.q ql/src/test/queries/clientnegative/alter_table_wrong_table.q new file mode 100644 index 0000000000000000000000000000000000000000..110b35027cd2670c45e72f6f466269158b2509e5 --- /dev/null +++ ql/src/test/queries/clientnegative/alter_table_wrong_table.q @@ -0,0 +1,4 @@ +create database bad_rename1; +use bad_rename1; +create table rename1(a int); +alter table bad_rename1.rename_not_exists rename to bad_db_notexists.rename1; diff --git ql/src/test/results/clientnegative/alter_table_wrong_db.q.out ql/src/test/results/clientnegative/alter_table_wrong_db.q.out new file mode 100644 index 0000000000000000000000000000000000000000..641e09f22130f06fe0b820b8c20a8bb17295d105 --- /dev/null +++ ql/src/test/results/clientnegative/alter_table_wrong_db.q.out @@ -0,0 +1,25 @@ +PREHOOK: query: create database bad_rename1 +PREHOOK: type: CREATEDATABASE +PREHOOK: Output: database:bad_rename1 +POSTHOOK: query: create database bad_rename1 +POSTHOOK: type: CREATEDATABASE +POSTHOOK: Output: database:bad_rename1 +PREHOOK: query: use bad_rename1 +PREHOOK: type: SWITCHDATABASE +PREHOOK: Input: database:bad_rename1 +POSTHOOK: query: use bad_rename1 +POSTHOOK: type: SWITCHDATABASE +POSTHOOK: Input: database:bad_rename1 +PREHOOK: query: create table rename1(a int) +PREHOOK: type: CREATETABLE +PREHOOK: Output: bad_rename1@rename1 +PREHOOK: Output: database:bad_rename1 +POSTHOOK: query: create table rename1(a int) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: bad_rename1@rename1 +POSTHOOK: Output: database:bad_rename1 +PREHOOK: query: alter table bad_rename1.rename1 rename to bad_db_notexists.rename1 +PREHOOK: type: ALTERTABLE_RENAME +PREHOOK: Input: bad_rename1@rename1 +PREHOOK: Output: bad_rename1@rename1 +FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Unable to alter table. Unable to change partition or table. Object bad_db_notexists does not exist. Check metastore logs for detailed stack. diff --git ql/src/test/results/clientnegative/alter_table_wrong_table.q.out ql/src/test/results/clientnegative/alter_table_wrong_table.q.out new file mode 100644 index 0000000000000000000000000000000000000000..54d53327b87c2d3a09f7493a402e5a562f6cb71a --- /dev/null +++ ql/src/test/results/clientnegative/alter_table_wrong_table.q.out @@ -0,0 +1,21 @@ +PREHOOK: query: create database bad_rename1 +PREHOOK: type: CREATEDATABASE +PREHOOK: Output: database:bad_rename1 +POSTHOOK: query: create database bad_rename1 +POSTHOOK: type: CREATEDATABASE +POSTHOOK: Output: database:bad_rename1 +PREHOOK: query: use bad_rename1 +PREHOOK: type: SWITCHDATABASE +PREHOOK: Input: database:bad_rename1 +POSTHOOK: query: use bad_rename1 +POSTHOOK: type: SWITCHDATABASE +POSTHOOK: Input: database:bad_rename1 +PREHOOK: query: create table rename1(a int) +PREHOOK: type: CREATETABLE +PREHOOK: Output: bad_rename1@rename1 +PREHOOK: Output: database:bad_rename1 +POSTHOOK: query: create table rename1(a int) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: bad_rename1@rename1 +POSTHOOK: Output: database:bad_rename1 +FAILED: SemanticException [Error 10001]: Table not found bad_rename1.rename_not_exists diff --git standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveAlterHandler.java standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveAlterHandler.java index 93ac74c68b5e14687852a76fdb298557bf79a08a..77b3a9e6b884723ce5457538d4c532544a28468f 100644 --- standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveAlterHandler.java +++ standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveAlterHandler.java @@ -366,8 +366,8 @@ public void alterTable(RawStore msdb, Warehouse wh, String catName, String dbnam } catch (NoSuchObjectException e) { LOG.debug("Object not found in metastore ", e); throw new InvalidOperationException( - "Unable to change partition or table. Database " + dbname + " does not exist" - + " Check metastore logs for detailed stack." + e.getMessage()); + "Unable to change partition or table. Object " + e.getMessage() + " does not exist." + + " Check metastore logs for detailed stack."); } finally { if (!success) { LOG.error("Failed to alter table " + TableName.getQualified(catName, dbname, name));