diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java index a1b19a6..ae08761 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java @@ -709,25 +709,27 @@ private void analyzeAlterDatabase(ASTNode ast) throws SemanticException { } private void analyzeExchangePartition(ASTNode ast) throws SemanticException { - Table sourceTable = getTable(getUnescapedName((ASTNode)ast.getChild(0))); - Table destTable = getTable(getUnescapedName((ASTNode)ast.getChild(2))); + Table destTable = getTable(getUnescapedName((ASTNode)ast.getChild(0))); + Table sourceTable = getTable(getUnescapedName((ASTNode)ast.getChild(2))); // Get the partition specs Map partSpecs = getPartSpec((ASTNode) ast.getChild(1)); validatePartitionValues(partSpecs); boolean sameColumns = MetaStoreUtils.compareFieldColumns( - sourceTable.getAllCols(), destTable.getAllCols()); + destTable.getAllCols(), sourceTable.getAllCols()); boolean samePartitions = MetaStoreUtils.compareFieldColumns( - sourceTable.getPartitionKeys(), destTable.getPartitionKeys()); + destTable.getPartitionKeys(), sourceTable.getPartitionKeys()); if (!sameColumns || !samePartitions) { throw new SemanticException(ErrorMsg.TABLES_INCOMPATIBLE_SCHEMAS.getMsg()); } - List partitions = getPartitions(sourceTable, partSpecs, true); + // check if source partition exists + getPartitions(sourceTable, partSpecs, true); // Verify that the partitions specified are continuous // If a subpartition value is specified without specifying a partition's value // then we throw an exception - if (!isPartitionValueContinuous(sourceTable.getPartitionKeys(), partSpecs)) { + int counter = isPartitionValueContinuous(sourceTable.getPartitionKeys(), partSpecs); + if (counter < 0) { throw new SemanticException( ErrorMsg.PARTITION_VALUE_NOT_CONTINUOUS.getMsg(partSpecs.toString())); } @@ -751,24 +753,20 @@ private void analyzeExchangePartition(ASTNode ast) throws SemanticException { /** * @param partitionKeys the list of partition keys of the table * @param partSpecs the partition specs given by the user - * @return true if no subpartition value is specified without a partition's - * value being specified else it returns false + * @return >=0 if no subpartition value is specified without a partition's + * value being specified else it returns -1 */ - private boolean isPartitionValueContinuous(List partitionKeys, + private int isPartitionValueContinuous(List partitionKeys, Map partSpecs) { - boolean partitionMissing = false; - for (FieldSchema partitionKey: partitionKeys) { - if (!partSpecs.containsKey(partitionKey.getName())) { - partitionMissing = true; - } else { - if (partitionMissing) { - // A subpartition value exists after a missing partition - // The partition value specified are not continuous, return false - return false; - } + int counter = 0; + for (FieldSchema partitionKey : partitionKeys) { + if (partSpecs.containsKey(partitionKey.getName())) { + counter++; + continue; } + return partSpecs.size() == counter ? counter : -1; } - return true; + return counter; } private void analyzeCreateDatabase(ASTNode ast) throws SemanticException { diff --git ql/src/test/queries/clientnegative/exchange_partition_neg_incomplete_partition.q ql/src/test/queries/clientnegative/exchange_partition_neg_incomplete_partition.q index e4f0dac..ca60d04 100644 --- ql/src/test/queries/clientnegative/exchange_partition_neg_incomplete_partition.q +++ ql/src/test/queries/clientnegative/exchange_partition_neg_incomplete_partition.q @@ -3,8 +3,8 @@ CREATE TABLE exchange_part_test2 (f1 string) PARTITIONED BY (ds STRING, hr STRIN SHOW PARTITIONS exchange_part_test1; SHOW PARTITIONS exchange_part_test2; -ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05', hr='h1'); -ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05', hr='h2'); +ALTER TABLE exchange_part_test2 ADD PARTITION (ds='2013-04-05', hr='h1'); +ALTER TABLE exchange_part_test2 ADD PARTITION (ds='2013-04-05', hr='h2'); SHOW PARTITIONS exchange_part_test1; SHOW PARTITIONS exchange_part_test2; diff --git ql/src/test/queries/clientnegative/exchange_partition_neg_partition_exists.q ql/src/test/queries/clientnegative/exchange_partition_neg_partition_exists.q index 4d1e0a6..7083edc 100644 --- ql/src/test/queries/clientnegative/exchange_partition_neg_partition_exists.q +++ ql/src/test/queries/clientnegative/exchange_partition_neg_partition_exists.q @@ -8,5 +8,5 @@ ALTER TABLE exchange_part_test2 ADD PARTITION (ds='2013-04-05'); SHOW PARTITIONS exchange_part_test1; SHOW PARTITIONS exchange_part_test2; --- exchange_part_test2 table partition (ds='2013-04-05') already exists thus this query will fail +-- exchange_part_test1 table partition (ds='2013-04-05') already exists thus this query will fail alter table exchange_part_test1 exchange partition (ds='2013-04-05') with table exchange_part_test2; diff --git ql/src/test/queries/clientnegative/exchange_partition_neg_partition_exists2.q ql/src/test/queries/clientnegative/exchange_partition_neg_partition_exists2.q index 23777db..6dfe81a 100644 --- ql/src/test/queries/clientnegative/exchange_partition_neg_partition_exists2.q +++ ql/src/test/queries/clientnegative/exchange_partition_neg_partition_exists2.q @@ -9,5 +9,5 @@ ALTER TABLE exchange_part_test2 ADD PARTITION (ds='2013-04-05', hr='3'); SHOW PARTITIONS exchange_part_test1; SHOW PARTITIONS exchange_part_test2; --- exchange_part_test2 table partition (ds='2013-04-05', hr='3') already exists thus this query will fail +-- exchange_part_test1 table partition (ds='2013-04-05') already exists thus this query will fail alter table exchange_part_test1 exchange partition (ds='2013-04-05') with table exchange_part_test2; diff --git ql/src/test/queries/clientnegative/exchange_partition_neg_partition_exists3.q ql/src/test/queries/clientnegative/exchange_partition_neg_partition_exists3.q index 350bf24..60671e5 100644 --- ql/src/test/queries/clientnegative/exchange_partition_neg_partition_exists3.q +++ ql/src/test/queries/clientnegative/exchange_partition_neg_partition_exists3.q @@ -9,5 +9,5 @@ ALTER TABLE exchange_part_test2 ADD PARTITION (ds='2013-04-05', hr='1'); SHOW PARTITIONS exchange_part_test1; SHOW PARTITIONS exchange_part_test2; --- exchange_part_test2 table partition (ds='2013-04-05', hr='1') already exists thus this query will fail +-- exchange_part_test2 table partition (ds='2013-04-05') already exists thus this query will fail alter table exchange_part_test1 exchange partition (ds='2013-04-05') with table exchange_part_test2; diff --git ql/src/test/queries/clientnegative/exchange_partition_neg_partition_missing.q ql/src/test/queries/clientnegative/exchange_partition_neg_partition_missing.q index 81944b3..38c0eda 100644 --- ql/src/test/queries/clientnegative/exchange_partition_neg_partition_missing.q +++ ql/src/test/queries/clientnegative/exchange_partition_neg_partition_missing.q @@ -2,5 +2,5 @@ CREATE TABLE exchange_part_test1 (f1 string) PARTITIONED BY (ds STRING); CREATE TABLE exchange_part_test2 (f1 string) PARTITIONED BY (ds STRING); SHOW PARTITIONS exchange_part_test1; --- exchange_part_test1 partition (ds='2013-04-05') does not exist thus this query will fail +-- exchange_part_test2 partition (ds='2013-04-05') does not exist thus this query will fail alter table exchange_part_test1 exchange partition (ds='2013-04-05') with table exchange_part_test2; diff --git ql/src/test/queries/clientpositive/exchange_partition.q ql/src/test/queries/clientpositive/exchange_partition.q index 6e8bf8e..4be6e3f 100644 --- ql/src/test/queries/clientpositive/exchange_partition.q +++ ql/src/test/queries/clientpositive/exchange_partition.q @@ -3,7 +3,7 @@ CREATE TABLE exchange_part_test2 (f1 string) PARTITIONED BY (ds STRING); SHOW PARTITIONS exchange_part_test1; SHOW PARTITIONS exchange_part_test2; -ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05'); +ALTER TABLE exchange_part_test2 ADD PARTITION (ds='2013-04-05'); SHOW PARTITIONS exchange_part_test1; SHOW PARTITIONS exchange_part_test2; diff --git ql/src/test/queries/clientpositive/exchange_partition2.q ql/src/test/queries/clientpositive/exchange_partition2.q index 27b335a..f346dde 100644 --- ql/src/test/queries/clientpositive/exchange_partition2.q +++ ql/src/test/queries/clientpositive/exchange_partition2.q @@ -3,7 +3,7 @@ CREATE TABLE exchange_part_test2 (f1 string) PARTITIONED BY (ds STRING, hr STRIN SHOW PARTITIONS exchange_part_test1; SHOW PARTITIONS exchange_part_test2; -ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05', hr='1'); +ALTER TABLE exchange_part_test2 ADD PARTITION (ds='2013-04-05', hr='1'); SHOW PARTITIONS exchange_part_test1; SHOW PARTITIONS exchange_part_test2; diff --git ql/src/test/queries/clientpositive/exchange_partition3.q ql/src/test/queries/clientpositive/exchange_partition3.q index 7b9060d..7c076ce 100644 --- ql/src/test/queries/clientpositive/exchange_partition3.q +++ ql/src/test/queries/clientpositive/exchange_partition3.q @@ -3,8 +3,9 @@ CREATE TABLE exchange_part_test2 (f1 string) PARTITIONED BY (ds STRING, hr STRIN SHOW PARTITIONS exchange_part_test1; SHOW PARTITIONS exchange_part_test2; -ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05', hr='1'); -ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05', hr='2'); +ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2014-01-03', hr='1'); +ALTER TABLE exchange_part_test2 ADD PARTITION (ds='2013-04-05', hr='1'); +ALTER TABLE exchange_part_test2 ADD PARTITION (ds='2013-04-05', hr='2'); SHOW PARTITIONS exchange_part_test1; SHOW PARTITIONS exchange_part_test2; diff --git ql/src/test/results/clientnegative/exchange_partition_neg_incomplete_partition.q.out ql/src/test/results/clientnegative/exchange_partition_neg_incomplete_partition.q.out index 8499427..86a1726 100644 --- ql/src/test/results/clientnegative/exchange_partition_neg_incomplete_partition.q.out +++ ql/src/test/results/clientnegative/exchange_partition_neg_incomplete_partition.q.out @@ -16,28 +16,28 @@ PREHOOK: query: SHOW PARTITIONS exchange_part_test2 PREHOOK: type: SHOWPARTITIONS POSTHOOK: query: SHOW PARTITIONS exchange_part_test2 POSTHOOK: type: SHOWPARTITIONS -PREHOOK: query: ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05', hr='h1') +PREHOOK: query: ALTER TABLE exchange_part_test2 ADD PARTITION (ds='2013-04-05', hr='h1') PREHOOK: type: ALTERTABLE_ADDPARTS -PREHOOK: Input: default@exchange_part_test1 -POSTHOOK: query: ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05', hr='h1') +PREHOOK: Input: default@exchange_part_test2 +POSTHOOK: query: ALTER TABLE exchange_part_test2 ADD PARTITION (ds='2013-04-05', hr='h1') POSTHOOK: type: ALTERTABLE_ADDPARTS -POSTHOOK: Input: default@exchange_part_test1 -POSTHOOK: Output: default@exchange_part_test1@ds=2013-04-05/hr=h1 -PREHOOK: query: ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05', hr='h2') +POSTHOOK: Input: default@exchange_part_test2 +POSTHOOK: Output: default@exchange_part_test2@ds=2013-04-05/hr=h1 +PREHOOK: query: ALTER TABLE exchange_part_test2 ADD PARTITION (ds='2013-04-05', hr='h2') PREHOOK: type: ALTERTABLE_ADDPARTS -PREHOOK: Input: default@exchange_part_test1 -POSTHOOK: query: ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05', hr='h2') +PREHOOK: Input: default@exchange_part_test2 +POSTHOOK: query: ALTER TABLE exchange_part_test2 ADD PARTITION (ds='2013-04-05', hr='h2') POSTHOOK: type: ALTERTABLE_ADDPARTS -POSTHOOK: Input: default@exchange_part_test1 -POSTHOOK: Output: default@exchange_part_test1@ds=2013-04-05/hr=h2 +POSTHOOK: Input: default@exchange_part_test2 +POSTHOOK: Output: default@exchange_part_test2@ds=2013-04-05/hr=h2 PREHOOK: query: SHOW PARTITIONS exchange_part_test1 PREHOOK: type: SHOWPARTITIONS POSTHOOK: query: SHOW PARTITIONS exchange_part_test1 POSTHOOK: type: SHOWPARTITIONS -ds=2013-04-05/hr=h1 -ds=2013-04-05/hr=h2 PREHOOK: query: SHOW PARTITIONS exchange_part_test2 PREHOOK: type: SHOWPARTITIONS POSTHOOK: query: SHOW PARTITIONS exchange_part_test2 POSTHOOK: type: SHOWPARTITIONS +ds=2013-04-05/hr=h1 +ds=2013-04-05/hr=h2 FAILED: SemanticException [Error 10234]: Parition values specifed are not continuous. A subpartition value is specified without specififying the parent partition's value {hr=h1} diff --git ql/src/test/results/clientnegative/exchange_partition_neg_partition_exists.q.out ql/src/test/results/clientnegative/exchange_partition_neg_partition_exists.q.out index b8c3c139..754156d 100644 --- ql/src/test/results/clientnegative/exchange_partition_neg_partition_exists.q.out +++ ql/src/test/results/clientnegative/exchange_partition_neg_partition_exists.q.out @@ -40,4 +40,4 @@ PREHOOK: type: SHOWPARTITIONS POSTHOOK: query: SHOW PARTITIONS exchange_part_test2 POSTHOOK: type: SHOWPARTITIONS ds=2013-04-05 -FAILED: SemanticException [Error 10118]: Partition already exists [exchange_part_test2(ds=2013-04-05)] +FAILED: SemanticException [Error 10118]: Partition already exists [exchange_part_test1(ds=2013-04-05)] diff --git ql/src/test/results/clientnegative/exchange_partition_neg_partition_exists2.q.out ql/src/test/results/clientnegative/exchange_partition_neg_partition_exists2.q.out index 93c3406..7ce0e85 100644 --- ql/src/test/results/clientnegative/exchange_partition_neg_partition_exists2.q.out +++ ql/src/test/results/clientnegative/exchange_partition_neg_partition_exists2.q.out @@ -48,4 +48,4 @@ PREHOOK: type: SHOWPARTITIONS POSTHOOK: query: SHOW PARTITIONS exchange_part_test2 POSTHOOK: type: SHOWPARTITIONS ds=2013-04-05/hr=3 -FAILED: SemanticException [Error 10118]: Partition already exists [exchange_part_test2(ds=2013-04-05/hr=3)] +FAILED: SemanticException [Error 10118]: Partition already exists [exchange_part_test1(ds=2013-04-05/hr=1), exchange_part_test1(ds=2013-04-05/hr=2)] diff --git ql/src/test/results/clientnegative/exchange_partition_neg_partition_exists3.q.out ql/src/test/results/clientnegative/exchange_partition_neg_partition_exists3.q.out index d0959ef..b0b7fbc 100644 --- ql/src/test/results/clientnegative/exchange_partition_neg_partition_exists3.q.out +++ ql/src/test/results/clientnegative/exchange_partition_neg_partition_exists3.q.out @@ -48,4 +48,4 @@ PREHOOK: type: SHOWPARTITIONS POSTHOOK: query: SHOW PARTITIONS exchange_part_test2 POSTHOOK: type: SHOWPARTITIONS ds=2013-04-05/hr=1 -FAILED: SemanticException [Error 10118]: Partition already exists [exchange_part_test2(ds=2013-04-05/hr=1)] +FAILED: SemanticException [Error 10118]: Partition already exists [exchange_part_test1(ds=2013-04-05/hr=1), exchange_part_test1(ds=2013-04-05/hr=2)] diff --git ql/src/test/results/clientpositive/exchange_partition.q.out ql/src/test/results/clientpositive/exchange_partition.q.out index bbc6d5b..8cf4bfb 100644 --- ql/src/test/results/clientpositive/exchange_partition.q.out +++ ql/src/test/results/clientpositive/exchange_partition.q.out @@ -16,22 +16,22 @@ PREHOOK: query: SHOW PARTITIONS exchange_part_test2 PREHOOK: type: SHOWPARTITIONS POSTHOOK: query: SHOW PARTITIONS exchange_part_test2 POSTHOOK: type: SHOWPARTITIONS -PREHOOK: query: ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05') +PREHOOK: query: ALTER TABLE exchange_part_test2 ADD PARTITION (ds='2013-04-05') PREHOOK: type: ALTERTABLE_ADDPARTS -PREHOOK: Input: default@exchange_part_test1 -POSTHOOK: query: ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05') +PREHOOK: Input: default@exchange_part_test2 +POSTHOOK: query: ALTER TABLE exchange_part_test2 ADD PARTITION (ds='2013-04-05') POSTHOOK: type: ALTERTABLE_ADDPARTS -POSTHOOK: Input: default@exchange_part_test1 -POSTHOOK: Output: default@exchange_part_test1@ds=2013-04-05 +POSTHOOK: Input: default@exchange_part_test2 +POSTHOOK: Output: default@exchange_part_test2@ds=2013-04-05 PREHOOK: query: SHOW PARTITIONS exchange_part_test1 PREHOOK: type: SHOWPARTITIONS POSTHOOK: query: SHOW PARTITIONS exchange_part_test1 POSTHOOK: type: SHOWPARTITIONS -ds=2013-04-05 PREHOOK: query: SHOW PARTITIONS exchange_part_test2 PREHOOK: type: SHOWPARTITIONS POSTHOOK: query: SHOW PARTITIONS exchange_part_test2 POSTHOOK: type: SHOWPARTITIONS +ds=2013-04-05 PREHOOK: query: ALTER TABLE exchange_part_test1 EXCHANGE PARTITION (ds='2013-04-05') WITH TABLE exchange_part_test2 PREHOOK: type: null POSTHOOK: query: ALTER TABLE exchange_part_test1 EXCHANGE PARTITION (ds='2013-04-05') WITH TABLE exchange_part_test2 @@ -40,8 +40,8 @@ PREHOOK: query: SHOW PARTITIONS exchange_part_test1 PREHOOK: type: SHOWPARTITIONS POSTHOOK: query: SHOW PARTITIONS exchange_part_test1 POSTHOOK: type: SHOWPARTITIONS +ds=2013-04-05 PREHOOK: query: SHOW PARTITIONS exchange_part_test2 PREHOOK: type: SHOWPARTITIONS POSTHOOK: query: SHOW PARTITIONS exchange_part_test2 POSTHOOK: type: SHOWPARTITIONS -ds=2013-04-05 diff --git ql/src/test/results/clientpositive/exchange_partition2.q.out ql/src/test/results/clientpositive/exchange_partition2.q.out index 5136106..2b65c6c 100644 --- ql/src/test/results/clientpositive/exchange_partition2.q.out +++ ql/src/test/results/clientpositive/exchange_partition2.q.out @@ -16,22 +16,22 @@ PREHOOK: query: SHOW PARTITIONS exchange_part_test2 PREHOOK: type: SHOWPARTITIONS POSTHOOK: query: SHOW PARTITIONS exchange_part_test2 POSTHOOK: type: SHOWPARTITIONS -PREHOOK: query: ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05', hr='1') +PREHOOK: query: ALTER TABLE exchange_part_test2 ADD PARTITION (ds='2013-04-05', hr='1') PREHOOK: type: ALTERTABLE_ADDPARTS -PREHOOK: Input: default@exchange_part_test1 -POSTHOOK: query: ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05', hr='1') +PREHOOK: Input: default@exchange_part_test2 +POSTHOOK: query: ALTER TABLE exchange_part_test2 ADD PARTITION (ds='2013-04-05', hr='1') POSTHOOK: type: ALTERTABLE_ADDPARTS -POSTHOOK: Input: default@exchange_part_test1 -POSTHOOK: Output: default@exchange_part_test1@ds=2013-04-05/hr=1 +POSTHOOK: Input: default@exchange_part_test2 +POSTHOOK: Output: default@exchange_part_test2@ds=2013-04-05/hr=1 PREHOOK: query: SHOW PARTITIONS exchange_part_test1 PREHOOK: type: SHOWPARTITIONS POSTHOOK: query: SHOW PARTITIONS exchange_part_test1 POSTHOOK: type: SHOWPARTITIONS -ds=2013-04-05/hr=1 PREHOOK: query: SHOW PARTITIONS exchange_part_test2 PREHOOK: type: SHOWPARTITIONS POSTHOOK: query: SHOW PARTITIONS exchange_part_test2 POSTHOOK: type: SHOWPARTITIONS +ds=2013-04-05/hr=1 PREHOOK: query: ALTER TABLE exchange_part_test1 EXCHANGE PARTITION (ds='2013-04-05', hr='1') WITH TABLE exchange_part_test2 PREHOOK: type: null POSTHOOK: query: ALTER TABLE exchange_part_test1 EXCHANGE PARTITION (ds='2013-04-05', hr='1') WITH TABLE exchange_part_test2 @@ -40,8 +40,8 @@ PREHOOK: query: SHOW PARTITIONS exchange_part_test1 PREHOOK: type: SHOWPARTITIONS POSTHOOK: query: SHOW PARTITIONS exchange_part_test1 POSTHOOK: type: SHOWPARTITIONS +ds=2013-04-05/hr=1 PREHOOK: query: SHOW PARTITIONS exchange_part_test2 PREHOOK: type: SHOWPARTITIONS POSTHOOK: query: SHOW PARTITIONS exchange_part_test2 POSTHOOK: type: SHOWPARTITIONS -ds=2013-04-05/hr=1 diff --git ql/src/test/results/clientpositive/exchange_partition3.q.out ql/src/test/results/clientpositive/exchange_partition3.q.out index 72ac6bd..3b9bf20 100644 --- ql/src/test/results/clientpositive/exchange_partition3.q.out +++ ql/src/test/results/clientpositive/exchange_partition3.q.out @@ -16,30 +16,38 @@ PREHOOK: query: SHOW PARTITIONS exchange_part_test2 PREHOOK: type: SHOWPARTITIONS POSTHOOK: query: SHOW PARTITIONS exchange_part_test2 POSTHOOK: type: SHOWPARTITIONS -PREHOOK: query: ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05', hr='1') +PREHOOK: query: ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2014-01-03', hr='1') PREHOOK: type: ALTERTABLE_ADDPARTS PREHOOK: Input: default@exchange_part_test1 -POSTHOOK: query: ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05', hr='1') +POSTHOOK: query: ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2014-01-03', hr='1') POSTHOOK: type: ALTERTABLE_ADDPARTS POSTHOOK: Input: default@exchange_part_test1 -POSTHOOK: Output: default@exchange_part_test1@ds=2013-04-05/hr=1 -PREHOOK: query: ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05', hr='2') +POSTHOOK: Output: default@exchange_part_test1@ds=2014-01-03/hr=1 +PREHOOK: query: ALTER TABLE exchange_part_test2 ADD PARTITION (ds='2013-04-05', hr='1') PREHOOK: type: ALTERTABLE_ADDPARTS -PREHOOK: Input: default@exchange_part_test1 -POSTHOOK: query: ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05', hr='2') +PREHOOK: Input: default@exchange_part_test2 +POSTHOOK: query: ALTER TABLE exchange_part_test2 ADD PARTITION (ds='2013-04-05', hr='1') POSTHOOK: type: ALTERTABLE_ADDPARTS -POSTHOOK: Input: default@exchange_part_test1 -POSTHOOK: Output: default@exchange_part_test1@ds=2013-04-05/hr=2 +POSTHOOK: Input: default@exchange_part_test2 +POSTHOOK: Output: default@exchange_part_test2@ds=2013-04-05/hr=1 +PREHOOK: query: ALTER TABLE exchange_part_test2 ADD PARTITION (ds='2013-04-05', hr='2') +PREHOOK: type: ALTERTABLE_ADDPARTS +PREHOOK: Input: default@exchange_part_test2 +POSTHOOK: query: ALTER TABLE exchange_part_test2 ADD PARTITION (ds='2013-04-05', hr='2') +POSTHOOK: type: ALTERTABLE_ADDPARTS +POSTHOOK: Input: default@exchange_part_test2 +POSTHOOK: Output: default@exchange_part_test2@ds=2013-04-05/hr=2 PREHOOK: query: SHOW PARTITIONS exchange_part_test1 PREHOOK: type: SHOWPARTITIONS POSTHOOK: query: SHOW PARTITIONS exchange_part_test1 POSTHOOK: type: SHOWPARTITIONS -ds=2013-04-05/hr=1 -ds=2013-04-05/hr=2 +ds=2014-01-03/hr=1 PREHOOK: query: SHOW PARTITIONS exchange_part_test2 PREHOOK: type: SHOWPARTITIONS POSTHOOK: query: SHOW PARTITIONS exchange_part_test2 POSTHOOK: type: SHOWPARTITIONS +ds=2013-04-05/hr=1 +ds=2013-04-05/hr=2 PREHOOK: query: -- This will exchange both partitions hr=1 and hr=2 ALTER TABLE exchange_part_test1 EXCHANGE PARTITION (ds='2013-04-05') WITH TABLE exchange_part_test2 PREHOOK: type: null @@ -50,9 +58,10 @@ PREHOOK: query: SHOW PARTITIONS exchange_part_test1 PREHOOK: type: SHOWPARTITIONS POSTHOOK: query: SHOW PARTITIONS exchange_part_test1 POSTHOOK: type: SHOWPARTITIONS +ds=2013-04-05/hr=1 +ds=2013-04-05/hr=2 +ds=2014-01-03/hr=1 PREHOOK: query: SHOW PARTITIONS exchange_part_test2 PREHOOK: type: SHOWPARTITIONS POSTHOOK: query: SHOW PARTITIONS exchange_part_test2 POSTHOOK: type: SHOWPARTITIONS -ds=2013-04-05/hr=1 -ds=2013-04-05/hr=2