Return-Path: Delivered-To: apmail-hadoop-hive-commits-archive@minotaur.apache.org Received: (qmail 77935 invoked from network); 9 Nov 2009 02:22:55 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 9 Nov 2009 02:22:55 -0000 Received: (qmail 10174 invoked by uid 500); 9 Nov 2009 02:22:55 -0000 Delivered-To: apmail-hadoop-hive-commits-archive@hadoop.apache.org Received: (qmail 10130 invoked by uid 500); 9 Nov 2009 02:22:55 -0000 Mailing-List: contact hive-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: hive-dev@hadoop.apache.org Delivered-To: mailing list hive-commits@hadoop.apache.org Received: (qmail 10120 invoked by uid 99); 9 Nov 2009 02:22:54 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 09 Nov 2009 02:22:54 +0000 X-ASF-Spam-Status: No, hits=-1999.6 required=10.0 tests=ALL_TRUSTED,SUBJECT_FUZZY_TION X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 09 Nov 2009 02:22:51 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 269E723888D8; Mon, 9 Nov 2009 02:22:29 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r833965 - in /hadoop/hive/trunk: CHANGES.txt ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java ql/src/test/queries/clientpositive/drop_multi_partitions.q ql/src/test/results/clientpositive/drop_multi_partitions.q.out Date: Mon, 09 Nov 2009 02:22:29 -0000 To: hive-commits@hadoop.apache.org From: namit@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20091109022229.269E723888D8@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: namit Date: Mon Nov 9 02:22:28 2009 New Revision: 833965 URL: http://svn.apache.org/viewvc?rev=833965&view=rev Log: HIVE-804. Support deletion of partitions based on a prefix partition spefication (Zheng Shao via namit) Added: hadoop/hive/trunk/ql/src/test/queries/clientpositive/drop_multi_partitions.q hadoop/hive/trunk/ql/src/test/results/clientpositive/drop_multi_partitions.q.out Modified: hadoop/hive/trunk/CHANGES.txt hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java Modified: hadoop/hive/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/CHANGES.txt?rev=833965&r1=833964&r2=833965&view=diff ============================================================================== --- hadoop/hive/trunk/CHANGES.txt (original) +++ hadoop/hive/trunk/CHANGES.txt Mon Nov 9 02:22:28 2009 @@ -247,6 +247,9 @@ HIVE-910. NULL value is not correctly handled by ColumnarStruct (He Yongqiang via namit) + HIVE-804 Support deletion of partitions based on a prefix partition spefication + (Zheng Shao via namit) + Release 0.4.0 - Unreleased INCOMPATIBLE CHANGES Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java?rev=833965&r1=833964&r2=833965&view=diff ============================================================================== --- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java (original) +++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java Mon Nov 9 02:22:28 2009 @@ -27,6 +27,7 @@ import java.io.Writer; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; @@ -1001,18 +1002,39 @@ if (tbl != null) work.getOutputs().add(new WriteEntity(tbl)); } else { + // get all partitions of the table + List partitionNames = db.getPartitionNames(MetaStoreUtils.DEFAULT_DATABASE_NAME, dropTbl.getTableName(), (short)-1); + Set> partitions = new HashSet>(); + for (int i = 0; i < partitionNames.size(); i++) { + try { + partitions.add(Warehouse.makeSpecFromName(partitionNames.get(i))); + } catch (MetaException e) { + LOG.warn("Unrecognized partition name from metastore: " + partitionNames.get(i)); + } + } // drop partitions in the list - List parts = new ArrayList(); + List partsToDelete = new ArrayList(); for (Map partSpec : dropTbl.getPartSpecs()) { - Partition part = db.getPartition(tbl, partSpec, false); - if (part == null) { - console.printInfo("Partition " + partSpec + " does not exist."); - } else { - parts.add(part); + Iterator> it = partitions.iterator(); + while (it.hasNext()) { + Map part = it.next(); + // test if partSpec matches part + boolean match = true; + for (Map.Entry item: partSpec.entrySet()) { + if (!item.getValue().equals(part.get(item.getKey()))) { + match = false; + break; + } + } + if (match) { + partsToDelete.add(db.getPartition(tbl, part, false)); + it.remove(); + } } } + // drop all existing partitions from the list - for (Partition partition : parts) { + for (Partition partition : partsToDelete) { console.printInfo("Dropping the partition " + partition.getName()); db.dropPartition(MetaStoreUtils.DEFAULT_DATABASE_NAME, dropTbl .getTableName(), partition.getValues(), true); // drop data for the Added: hadoop/hive/trunk/ql/src/test/queries/clientpositive/drop_multi_partitions.q URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/test/queries/clientpositive/drop_multi_partitions.q?rev=833965&view=auto ============================================================================== --- hadoop/hive/trunk/ql/src/test/queries/clientpositive/drop_multi_partitions.q (added) +++ hadoop/hive/trunk/ql/src/test/queries/clientpositive/drop_multi_partitions.q Mon Nov 9 02:22:28 2009 @@ -0,0 +1,15 @@ +create table mp (a string) partitioned by (b string, c string); + +alter table mp add partition (b='1', c='1'); +alter table mp add partition (b='1', c='2'); +alter table mp add partition (b='2', c='2'); + +show partitions mp; + +explain extended alter table mp drop partition (b='1'); +alter table mp drop partition (b='1'); + +show partitions mp; + +drop table mp; + Added: hadoop/hive/trunk/ql/src/test/results/clientpositive/drop_multi_partitions.q.out URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/test/results/clientpositive/drop_multi_partitions.q.out?rev=833965&view=auto ============================================================================== --- hadoop/hive/trunk/ql/src/test/results/clientpositive/drop_multi_partitions.q.out (added) +++ hadoop/hive/trunk/ql/src/test/results/clientpositive/drop_multi_partitions.q.out Mon Nov 9 02:22:28 2009 @@ -0,0 +1,60 @@ +PREHOOK: query: create table mp (a string) partitioned by (b string, c string) +PREHOOK: type: CREATETABLE +POSTHOOK: query: create table mp (a string) partitioned by (b string, c string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@mp +PREHOOK: query: alter table mp add partition (b='1', c='1') +PREHOOK: type: ALTERTABLE_ADDPARTS +POSTHOOK: query: alter table mp add partition (b='1', c='1') +POSTHOOK: type: ALTERTABLE_ADDPARTS +POSTHOOK: Output: default@mp@b=1/c=1 +PREHOOK: query: alter table mp add partition (b='1', c='2') +PREHOOK: type: ALTERTABLE_ADDPARTS +POSTHOOK: query: alter table mp add partition (b='1', c='2') +POSTHOOK: type: ALTERTABLE_ADDPARTS +POSTHOOK: Output: default@mp@b=1/c=2 +PREHOOK: query: alter table mp add partition (b='2', c='2') +PREHOOK: type: ALTERTABLE_ADDPARTS +POSTHOOK: query: alter table mp add partition (b='2', c='2') +POSTHOOK: type: ALTERTABLE_ADDPARTS +POSTHOOK: Output: default@mp@b=2/c=2 +PREHOOK: query: show partitions mp +PREHOOK: type: SHOWPARTITIONS +POSTHOOK: query: show partitions mp +POSTHOOK: type: SHOWPARTITIONS +b=1/c=1 +b=1/c=2 +b=2/c=2 +PREHOOK: query: explain extended alter table mp drop partition (b='1') +PREHOOK: type: ALTERTABLE_DROPPARTS +POSTHOOK: query: explain extended alter table mp drop partition (b='1') +POSTHOOK: type: ALTERTABLE_DROPPARTS +ABSTRACT SYNTAX TREE: + (TOK_ALTERTABLE_DROPPARTS mp (TOK_PARTSPEC (TOK_PARTVAL b '1'))) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Drop Table Operator: + Drop Table + table: mp + + +PREHOOK: query: alter table mp drop partition (b='1') +PREHOOK: type: ALTERTABLE_DROPPARTS +POSTHOOK: query: alter table mp drop partition (b='1') +POSTHOOK: type: ALTERTABLE_DROPPARTS +POSTHOOK: Output: default@mp@b=1/c=1 +POSTHOOK: Output: default@mp@b=1/c=2 +PREHOOK: query: show partitions mp +PREHOOK: type: SHOWPARTITIONS +POSTHOOK: query: show partitions mp +POSTHOOK: type: SHOWPARTITIONS +b=2/c=2 +PREHOOK: query: drop table mp +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table mp +POSTHOOK: type: DROPTABLE +POSTHOOK: Output: default@mp