diff --git ql/src/test/queries/clientpositive/drop_deleted_partitions.q ql/src/test/queries/clientpositive/drop_deleted_partitions.q index a758b1b89e..a44a8f1b60 100644 --- ql/src/test/queries/clientpositive/drop_deleted_partitions.q +++ ql/src/test/queries/clientpositive/drop_deleted_partitions.q @@ -15,4 +15,18 @@ show partitions dmp.mp; drop table dmp.mp; +create table dmp.delete_parent_path (c1 int) partitioned by (year string, month string, day string) location '/tmp/delete_parent_path'; + +alter table dmp.delete_parent_path add partition (year='2019', month='07', day='01'); + +show partitions dmp.delete_parent_path; + +dfs -rm -r /tmp/delete_parent_path/year=2019/month=07; + +alter table dmp.delete_parent_path drop partition (year='2019', month='07', day='01'); + +show partitions dmp.delete_parent_path; + +drop table dmp.delete_parent_path; + drop database dmp; diff --git ql/src/test/results/clientpositive/drop_deleted_partitions.q.out ql/src/test/results/clientpositive/drop_deleted_partitions.q.out index 85f4f53bc4..a27ad3349b 100644 --- ql/src/test/results/clientpositive/drop_deleted_partitions.q.out +++ ql/src/test/results/clientpositive/drop_deleted_partitions.q.out @@ -68,6 +68,53 @@ POSTHOOK: query: drop table dmp.mp POSTHOOK: type: DROPTABLE POSTHOOK: Input: dmp@mp POSTHOOK: Output: dmp@mp +#### A masked pattern was here #### +PREHOOK: type: CREATETABLE +#### A masked pattern was here #### +PREHOOK: Output: database:dmp +PREHOOK: Output: dmp@delete_parent_path +#### A masked pattern was here #### +POSTHOOK: type: CREATETABLE +#### A masked pattern was here #### +POSTHOOK: Output: database:dmp +POSTHOOK: Output: dmp@delete_parent_path +PREHOOK: query: alter table dmp.delete_parent_path add partition (year='2019', month='07', day='01') +PREHOOK: type: ALTERTABLE_ADDPARTS +PREHOOK: Output: dmp@delete_parent_path +POSTHOOK: query: alter table dmp.delete_parent_path add partition (year='2019', month='07', day='01') +POSTHOOK: type: ALTERTABLE_ADDPARTS +POSTHOOK: Output: dmp@delete_parent_path +POSTHOOK: Output: dmp@delete_parent_path@year=2019/month=07/day=01 +PREHOOK: query: show partitions dmp.delete_parent_path +PREHOOK: type: SHOWPARTITIONS +PREHOOK: Input: dmp@delete_parent_path +POSTHOOK: query: show partitions dmp.delete_parent_path +POSTHOOK: type: SHOWPARTITIONS +POSTHOOK: Input: dmp@delete_parent_path +year=2019/month=07/day=01 +#### A masked pattern was here #### +PREHOOK: query: alter table dmp.delete_parent_path drop partition (year='2019', month='07', day='01') +PREHOOK: type: ALTERTABLE_DROPPARTS +PREHOOK: Input: dmp@delete_parent_path +PREHOOK: Output: dmp@delete_parent_path@year=2019/month=07/day=01 +POSTHOOK: query: alter table dmp.delete_parent_path drop partition (year='2019', month='07', day='01') +POSTHOOK: type: ALTERTABLE_DROPPARTS +POSTHOOK: Input: dmp@delete_parent_path +POSTHOOK: Output: dmp@delete_parent_path@year=2019/month=07/day=01 +PREHOOK: query: show partitions dmp.delete_parent_path +PREHOOK: type: SHOWPARTITIONS +PREHOOK: Input: dmp@delete_parent_path +POSTHOOK: query: show partitions dmp.delete_parent_path +POSTHOOK: type: SHOWPARTITIONS +POSTHOOK: Input: dmp@delete_parent_path +PREHOOK: query: drop table dmp.delete_parent_path +PREHOOK: type: DROPTABLE +PREHOOK: Input: dmp@delete_parent_path +PREHOOK: Output: dmp@delete_parent_path +POSTHOOK: query: drop table dmp.delete_parent_path +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: dmp@delete_parent_path +POSTHOOK: Output: dmp@delete_parent_path PREHOOK: query: drop database dmp PREHOOK: type: DROPDATABASE PREHOOK: Input: database:dmp diff --git standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/Warehouse.java standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/Warehouse.java index da5a71cc64..0117d1512d 100755 --- standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/Warehouse.java +++ standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/Warehouse.java @@ -371,8 +371,12 @@ public void recycleDirToCmPath(Path f, boolean ifPurge) throws MetaException { } public boolean isEmpty(Path path) throws IOException, MetaException { - ContentSummary contents = getFs(path).getContentSummary(path); - if (contents != null && contents.getFileCount() == 0 && contents.getDirectoryCount() == 1) { + try { + ContentSummary contents = getFs(path).getContentSummary(path); + if (contents != null && contents.getFileCount() == 0 && contents.getDirectoryCount() == 1) { + return true; + } + } catch(FileNotFoundException fnfe) { return true; } return false;