From 40428248a1b4824777cf09c9b487533a53b21f10 Mon Sep 17 00:00:00 2001 From: vkorukanti Date: Fri, 14 Nov 2014 16:44:41 -0800 Subject: [PATCH] HIVE-5664: Drop cascade database fails when the db has any tables with indexes --- .../hadoop/hive/metastore/HiveMetaStoreClient.java | 2 +- ql/src/test/queries/clientpositive/database_drop.q | 6 ++++ .../results/clientpositive/database_drop.q.out | 40 ++++++++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) diff --git metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java index 6a0cb96..b331754 100644 --- metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java +++ metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java @@ -695,7 +695,7 @@ public void dropDatabase(String name, boolean deleteData, boolean ignoreUnknownD for (String table : tableList) { try { // Subclasses can override this step (for example, for temporary tables) - dropTable(name, table, deleteData, false); + dropTable(name, table, deleteData, true); } catch (UnsupportedOperationException e) { // Ignore Index tables, those will be dropped with parent tables } diff --git ql/src/test/queries/clientpositive/database_drop.q ql/src/test/queries/clientpositive/database_drop.q index 1371273..c8f6b0a 100644 --- ql/src/test/queries/clientpositive/database_drop.q +++ ql/src/test/queries/clientpositive/database_drop.q @@ -75,6 +75,12 @@ CREATE EXTERNAL TABLE extab1(id INT, name STRING) ROW FORMAT STORED AS TEXTFILE LOCATION 'file:${system:test.tmp.dir}/dbcascade/extab1'; +-- add a table, create index (give a name for index table) +CREATE TABLE temp_tbl3 (id INT, name STRING); +LOAD DATA LOCAL INPATH '../../data/files/kv1.txt' into table temp_tbl3; +CREATE INDEX temp_tbl3_idx ON TABLE temp_tbl3(id) AS 'COMPACT' with DEFERRED REBUILD IN TABLE temp_tbl3_idx_tbl; +ALTER INDEX temp_tbl3_idx ON temp_tbl3 REBUILD; + -- drop the database with cascade DROP DATABASE db5 CASCADE; diff --git ql/src/test/results/clientpositive/database_drop.q.out ql/src/test/results/clientpositive/database_drop.q.out index f483c06..225104f 100644 --- ql/src/test/results/clientpositive/database_drop.q.out +++ ql/src/test/results/clientpositive/database_drop.q.out @@ -352,6 +352,42 @@ POSTHOOK: type: CREATETABLE #### A masked pattern was here #### POSTHOOK: Output: database:db5 POSTHOOK: Output: db5@extab1 +PREHOOK: query: -- add a table, create index (give a name for index table) +CREATE TABLE temp_tbl3 (id INT, name STRING) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:db5 +PREHOOK: Output: db5@temp_tbl3 +POSTHOOK: query: -- add a table, create index (give a name for index table) +CREATE TABLE temp_tbl3 (id INT, name STRING) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:db5 +POSTHOOK: Output: db5@temp_tbl3 +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv1.txt' into table temp_tbl3 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: db5@temp_tbl3 +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv1.txt' into table temp_tbl3 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: db5@temp_tbl3 +PREHOOK: query: CREATE INDEX temp_tbl3_idx ON TABLE temp_tbl3(id) AS 'COMPACT' with DEFERRED REBUILD IN TABLE temp_tbl3_idx_tbl +PREHOOK: type: CREATEINDEX +PREHOOK: Input: db5@temp_tbl3 +POSTHOOK: query: CREATE INDEX temp_tbl3_idx ON TABLE temp_tbl3(id) AS 'COMPACT' with DEFERRED REBUILD IN TABLE temp_tbl3_idx_tbl +POSTHOOK: type: CREATEINDEX +POSTHOOK: Input: db5@temp_tbl3 +POSTHOOK: Output: db5@temp_tbl3_idx_tbl +PREHOOK: query: ALTER INDEX temp_tbl3_idx ON temp_tbl3 REBUILD +PREHOOK: type: ALTERINDEX_REBUILD +PREHOOK: Input: db5@temp_tbl3 +PREHOOK: Output: db5@temp_tbl3_idx_tbl +POSTHOOK: query: ALTER INDEX temp_tbl3_idx ON temp_tbl3 REBUILD +POSTHOOK: type: ALTERINDEX_REBUILD +POSTHOOK: Input: db5@temp_tbl3 +POSTHOOK: Output: db5@temp_tbl3_idx_tbl +POSTHOOK: Lineage: temp_tbl3_idx_tbl._bucketname SIMPLE [(temp_tbl3)temp_tbl3.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ] +POSTHOOK: Lineage: temp_tbl3_idx_tbl._offsets EXPRESSION [(temp_tbl3)temp_tbl3.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ] +POSTHOOK: Lineage: temp_tbl3_idx_tbl.id SIMPLE [(temp_tbl3)temp_tbl3.FieldSchema(name:id, type:int, comment:null), ] PREHOOK: query: -- drop the database with cascade DROP DATABASE db5 CASCADE PREHOOK: type: DROPDATABASE @@ -369,6 +405,8 @@ PREHOOK: Output: db5@part_tab3 PREHOOK: Output: db5@temp_tbl PREHOOK: Output: db5@temp_tbl2 PREHOOK: Output: db5@temp_tbl2_view +PREHOOK: Output: db5@temp_tbl3 +PREHOOK: Output: db5@temp_tbl3_idx_tbl PREHOOK: Output: db5@temp_tbl_view POSTHOOK: query: -- drop the database with cascade DROP DATABASE db5 CASCADE @@ -387,5 +425,7 @@ POSTHOOK: Output: db5@part_tab3 POSTHOOK: Output: db5@temp_tbl POSTHOOK: Output: db5@temp_tbl2 POSTHOOK: Output: db5@temp_tbl2_view +POSTHOOK: Output: db5@temp_tbl3 +POSTHOOK: Output: db5@temp_tbl3_idx_tbl POSTHOOK: Output: db5@temp_tbl_view #### A masked pattern was here #### -- 1.8.5.2 (Apple Git-48)