You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by st...@apache.org on 2017/11/09 01:32:24 UTC

[03/14] hive git commit: HIVE-17472: Drop-partition for multi-level partition fails, if data does not exist. (Chris Drome, reviewed by Mithun Radhakrishnan)

HIVE-17472: Drop-partition for multi-level partition fails, if data does not exist. (Chris Drome, reviewed by Mithun Radhakrishnan)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/f3dc6a97
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/f3dc6a97
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/f3dc6a97

Branch: refs/heads/branch-2.3
Commit: f3dc6a9774912257bb9ecdc9fe19ee32698fded0
Parents: b8bd459
Author: Mithun RK <mi...@apache.org>
Authored: Wed Sep 6 17:25:04 2017 -0700
Committer: Sahil Takiar <st...@cloudera.com>
Committed: Tue Nov 7 08:15:47 2017 -0800

----------------------------------------------------------------------
 .../hadoop/hive/metastore/HiveMetaStore.java    |  6 +-
 .../clientpositive/drop_deleted_partitions.q    | 18 +++++
 .../drop_deleted_partitions.q.out               | 74 ++++++++++++++++++++
 3 files changed, 96 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/f3dc6a97/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
----------------------------------------------------------------------
diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
index 6f2b727..616314c 100644
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
@@ -3158,8 +3158,10 @@ public class HiveMetaStore extends ThriftHiveMetastore {
 
     }
     private void deleteParentRecursive(Path parent, int depth, boolean mustPurge) throws IOException, MetaException {
-      if (depth > 0 && parent != null && wh.isWritable(parent) && wh.isEmpty(parent)) {
-        wh.deleteDir(parent, true, mustPurge);
+      if (depth > 0 && parent != null && wh.isWritable(parent)) {
+        if (wh.isDir(parent) && wh.isEmpty(parent)) {
+          wh.deleteDir(parent, true, mustPurge);
+        }
         deleteParentRecursive(parent.getParent(), depth - 1, mustPurge);
       }
     }

http://git-wip-us.apache.org/repos/asf/hive/blob/f3dc6a97/ql/src/test/queries/clientpositive/drop_deleted_partitions.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/drop_deleted_partitions.q b/ql/src/test/queries/clientpositive/drop_deleted_partitions.q
new file mode 100644
index 0000000..a758b1b
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/drop_deleted_partitions.q
@@ -0,0 +1,18 @@
+create database dmp;
+
+create table dmp.mp (a string) partitioned by (b string, c string) location '/tmp/dmp_mp';
+
+alter table dmp.mp add partition (b='1', c='1');
+
+show partitions dmp.mp;
+
+dfs -rm -R /tmp/dmp_mp/b=1;
+
+explain extended alter table dmp.mp drop partition (b='1');
+alter table dmp.mp drop partition (b='1');
+
+show partitions dmp.mp;
+
+drop table dmp.mp;
+
+drop database dmp;

http://git-wip-us.apache.org/repos/asf/hive/blob/f3dc6a97/ql/src/test/results/clientpositive/drop_deleted_partitions.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/drop_deleted_partitions.q.out b/ql/src/test/results/clientpositive/drop_deleted_partitions.q.out
new file mode 100644
index 0000000..e543158
--- /dev/null
+++ b/ql/src/test/results/clientpositive/drop_deleted_partitions.q.out
@@ -0,0 +1,74 @@
+PREHOOK: query: create database dmp
+PREHOOK: type: CREATEDATABASE
+PREHOOK: Output: database:dmp
+POSTHOOK: query: create database dmp
+POSTHOOK: type: CREATEDATABASE
+POSTHOOK: Output: database:dmp
+#### A masked pattern was here ####
+PREHOOK: type: CREATETABLE
+#### A masked pattern was here ####
+PREHOOK: Output: database:dmp
+PREHOOK: Output: dmp@mp
+#### A masked pattern was here ####
+POSTHOOK: type: CREATETABLE
+#### A masked pattern was here ####
+POSTHOOK: Output: database:dmp
+POSTHOOK: Output: dmp@mp
+PREHOOK: query: alter table dmp.mp add partition (b='1', c='1')
+PREHOOK: type: ALTERTABLE_ADDPARTS
+PREHOOK: Output: dmp@mp
+POSTHOOK: query: alter table dmp.mp add partition (b='1', c='1')
+POSTHOOK: type: ALTERTABLE_ADDPARTS
+POSTHOOK: Output: dmp@mp
+POSTHOOK: Output: dmp@mp@b=1/c=1
+PREHOOK: query: show partitions dmp.mp
+PREHOOK: type: SHOWPARTITIONS
+PREHOOK: Input: dmp@mp
+POSTHOOK: query: show partitions dmp.mp
+POSTHOOK: type: SHOWPARTITIONS
+POSTHOOK: Input: dmp@mp
+b=1/c=1
+#### A masked pattern was here ####
+PREHOOK: query: explain extended alter table dmp.mp drop partition (b='1')
+PREHOOK: type: ALTERTABLE_DROPPARTS
+POSTHOOK: query: explain extended alter table dmp.mp drop partition (b='1')
+POSTHOOK: type: ALTERTABLE_DROPPARTS
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+      Drop Table Operator:
+        Drop Table
+          table: dmp.mp
+
+PREHOOK: query: alter table dmp.mp drop partition (b='1')
+PREHOOK: type: ALTERTABLE_DROPPARTS
+PREHOOK: Input: dmp@mp
+PREHOOK: Output: dmp@mp@b=1/c=1
+POSTHOOK: query: alter table dmp.mp drop partition (b='1')
+POSTHOOK: type: ALTERTABLE_DROPPARTS
+POSTHOOK: Input: dmp@mp
+POSTHOOK: Output: dmp@mp@b=1/c=1
+PREHOOK: query: show partitions dmp.mp
+PREHOOK: type: SHOWPARTITIONS
+PREHOOK: Input: dmp@mp
+POSTHOOK: query: show partitions dmp.mp
+POSTHOOK: type: SHOWPARTITIONS
+POSTHOOK: Input: dmp@mp
+PREHOOK: query: drop table dmp.mp
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: dmp@mp
+PREHOOK: Output: dmp@mp
+POSTHOOK: query: drop table dmp.mp
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: dmp@mp
+POSTHOOK: Output: dmp@mp
+PREHOOK: query: drop database dmp
+PREHOOK: type: DROPDATABASE
+PREHOOK: Input: database:dmp
+PREHOOK: Output: database:dmp
+POSTHOOK: query: drop database dmp
+POSTHOOK: type: DROPDATABASE
+POSTHOOK: Input: database:dmp
+POSTHOOK: Output: database:dmp