Index: ql/src/test/results/clientnegative/create_table_failure1.q.out =================================================================== --- ql/src/test/results/clientnegative/create_table_failure1.q.out (revision 0) +++ ql/src/test/results/clientnegative/create_table_failure1.q.out (revision 0) @@ -0,0 +1 @@ +FAILED: Error in semantic analysis: org.apache.hadoop.hive.ql.parse.SemanticException: ERROR: The database table_in_database_creation_not_exist does not exist. Index: ql/src/test/results/clientnegative/create_table_failure3.q.out =================================================================== --- ql/src/test/results/clientnegative/create_table_failure3.q.out (revision 0) +++ ql/src/test/results/clientnegative/create_table_failure3.q.out (revision 0) @@ -0,0 +1,4 @@ +PREHOOK: query: create table table_in_database_creation_not_exist.test (a string) +PREHOOK: type: CREATETABLE +FAILED: Error in metadata: InvalidObjectException(message:The database table_in_database_creation_not_exist does not exist) +FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask Index: ql/src/test/results/clientnegative/create_table_failure2.q.out =================================================================== --- ql/src/test/results/clientnegative/create_table_failure2.q.out (revision 0) +++ ql/src/test/results/clientnegative/create_table_failure2.q.out (revision 0) @@ -0,0 +1 @@ +FAILED: Error in semantic analysis: org.apache.hadoop.hive.ql.parse.SemanticException: ERROR: The database table_in_database_creation_not_exist does not exist. Index: ql/src/test/results/clientnegative/create_table_failure4.q.out =================================================================== --- ql/src/test/results/clientnegative/create_table_failure4.q.out (revision 0) +++ ql/src/test/results/clientnegative/create_table_failure4.q.out (revision 0) @@ -0,0 +1,4 @@ +PREHOOK: query: create table `table_in_database_creation_not_exist.test` (a string) +PREHOOK: type: CREATETABLE +FAILED: Error in metadata: InvalidObjectException(message:The database table_in_database_creation_not_exist does not exist) +FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask Index: ql/src/test/results/clientpositive/input45.q.out =================================================================== --- ql/src/test/results/clientpositive/input45.q.out (revision 0) +++ ql/src/test/results/clientpositive/input45.q.out (revision 0) @@ -0,0 +1,32 @@ +PREHOOK: query: create database if not exists table_in_database_creation +PREHOOK: type: CREATEDATABASE +POSTHOOK: query: create database if not exists table_in_database_creation +POSTHOOK: type: CREATEDATABASE +PREHOOK: query: create table table_in_database_creation.test1 as select * from src limit 1 +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@src +POSTHOOK: query: create table table_in_database_creation.test1 as select * from src limit 1 +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@src +POSTHOOK: Output: table_in_database_creation@test1 +PREHOOK: query: create table `table_in_database_creation.test2` as select * from src limit 1 +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@src +POSTHOOK: query: create table `table_in_database_creation.test2` as select * from src limit 1 +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@src +POSTHOOK: Output: table_in_database_creation@test2 +PREHOOK: query: create table table_in_database_creation.test3 (a string) +PREHOOK: type: CREATETABLE +POSTHOOK: query: create table table_in_database_creation.test3 (a string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: table_in_database_creation@test3 +PREHOOK: query: create table `table_in_database_creation.test4` (a string) +PREHOOK: type: CREATETABLE +POSTHOOK: query: create table `table_in_database_creation.test4` (a string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: table_in_database_creation@test4 +PREHOOK: query: drop database table_in_database_creation cascade +PREHOOK: type: DROPDATABASE +POSTHOOK: query: drop database table_in_database_creation cascade +POSTHOOK: type: DROPDATABASE Index: ql/src/test/queries/clientpositive/input45.q =================================================================== --- ql/src/test/queries/clientpositive/input45.q (revision 0) +++ ql/src/test/queries/clientpositive/input45.q (revision 0) @@ -0,0 +1,6 @@ +create database if not exists table_in_database_creation; +create table table_in_database_creation.test1 as select * from src limit 1; +create table `table_in_database_creation.test2` as select * from src limit 1; +create table table_in_database_creation.test3 (a string); +create table `table_in_database_creation.test4` (a string); +drop database table_in_database_creation cascade; \ No newline at end of file Index: ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java (revision 1188369) +++ ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java (working copy) @@ -6919,6 +6919,10 @@ Path targetPath; try { dumpTable = db.newTable(qb.getTableDesc().getTableName()); + if (!db.databaseExists(dumpTable.getDbName())) { + throw new SemanticException("ERROR: The database " + dumpTable.getDbName() + + " does not exist."); + } Warehouse wh = new Warehouse(conf); targetPath = wh.getTablePath(db.getDatabase(dumpTable.getDbName()), dumpTable .getTableName()); Index: metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java =================================================================== --- metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java (revision 1188369) +++ metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java (working copy) @@ -971,6 +971,10 @@ try { ms.openTransaction(); + if(ms.getDatabase(tbl.getDbName()) == null){ + throw new NoSuchObjectException("The database " + tbl.getDbName() + " does not exist"); + } + // get_table checks whether database exists, it should be moved here if (is_table_exists(ms, tbl.getDbName(), tbl.getTableName())) { throw new AlreadyExistsException("Table " + tbl.getTableName() @@ -1043,6 +1047,8 @@ throw e; } catch (InvalidObjectException e) { throw e; + }catch (NoSuchObjectException e) { + throw new InvalidObjectException(e.getMessage()); } catch (Exception e) { assert(e instanceof RuntimeException); throw (RuntimeException)e; Index: ql/src/test/queries/clientnegative/create_table_failure3.q =================================================================== --- ql/src/test/queries/clientnegative/create_table_failure3.q (revision 0) +++ ql/src/test/queries/clientnegative/create_table_failure3.q (revision 0) @@ -0,0 +1 @@ +create table table_in_database_creation_not_exist.test (a string); \ No newline at end of file Index: ql/src/test/queries/clientnegative/create_table_failure4.q =================================================================== --- ql/src/test/queries/clientnegative/create_table_failure4.q (revision 0) +++ ql/src/test/queries/clientnegative/create_table_failure4.q (revision 0) @@ -0,0 +1 @@ +create table `table_in_database_creation_not_exist.test` (a string); \ No newline at end of file Index: ql/src/test/queries/clientnegative/create_table_failure1.q =================================================================== --- ql/src/test/queries/clientnegative/create_table_failure1.q (revision 0) +++ ql/src/test/queries/clientnegative/create_table_failure1.q (revision 0) @@ -0,0 +1 @@ +create table table_in_database_creation_not_exist.test as select * from src limit 1; \ No newline at end of file Index: ql/src/test/queries/clientnegative/create_table_failure2.q =================================================================== --- ql/src/test/queries/clientnegative/create_table_failure2.q (revision 0) +++ ql/src/test/queries/clientnegative/create_table_failure2.q (revision 0) @@ -0,0 +1 @@ +create table `table_in_database_creation_not_exist.test` as select * from src limit 1; \ No newline at end of file