diff --git metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java index 8aa0640..d1cfc42 100644 --- metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java +++ metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java @@ -1864,8 +1864,6 @@ private boolean drop_partition_common(RawStore ms, String db_name, String tbl_na ms.openTransaction(); part = ms.getPartition(db_name, tbl_name, part_vals); - firePreEvent(new PreDropPartitionEvent(part, this)); - if (part == null) { throw new NoSuchObjectException("Partition doesn't exist. " + part_vals); @@ -1893,6 +1891,7 @@ private boolean drop_partition_common(RawStore ms, String db_name, String tbl_na } } tbl = get_table(db_name, tbl_name); + firePreEvent(new PreDropPartitionEvent(tbl, part, this)); } finally { if (!success) { ms.rollbackTransaction(); diff --git metastore/src/java/org/apache/hadoop/hive/metastore/events/PreDropPartitionEvent.java metastore/src/java/org/apache/hadoop/hive/metastore/events/PreDropPartitionEvent.java index 2c4b7b8..b1e9386 100644 --- metastore/src/java/org/apache/hadoop/hive/metastore/events/PreDropPartitionEvent.java +++ metastore/src/java/org/apache/hadoop/hive/metastore/events/PreDropPartitionEvent.java @@ -20,14 +20,24 @@ import org.apache.hadoop.hive.metastore.HiveMetaStore.HMSHandler; import org.apache.hadoop.hive.metastore.api.Partition; +import org.apache.hadoop.hive.metastore.api.Table; public class PreDropPartitionEvent extends PreEventContext { private final Partition partition; + private final Table table; public PreDropPartitionEvent (Partition partition, HMSHandler handler) { super (PreEventType.DROP_PARTITION, handler); this.partition = partition; + this.table = null; + } + + + public PreDropPartitionEvent (Table table, Partition partition, HMSHandler handler) { + super (PreEventType.DROP_PARTITION, handler); + this.partition = partition; + this.table = table; } /** @@ -37,4 +47,11 @@ public Partition getPartition() { return partition; } + + /** + * @return the table + */ + public Table getTable() { + return table; + } } diff --git metastore/src/test/org/apache/hadoop/hive/metastore/TestMetaStoreEventListener.java metastore/src/test/org/apache/hadoop/hive/metastore/TestMetaStoreEventListener.java index 3de7ab6..ee02d32 100644 --- metastore/src/test/org/apache/hadoop/hive/metastore/TestMetaStoreEventListener.java +++ metastore/src/test/org/apache/hadoop/hive/metastore/TestMetaStoreEventListener.java @@ -331,6 +331,7 @@ public void testListener() throws Exception { PreDropPartitionEvent preDropPart = (PreDropPartitionEvent)preNotifyList.get(listSize - 1); validateDropPartition(part, preDropPart.getPartition()); + validateTableInDropPartition(tbl, preDropPart.getTable()); driver.run("drop table " + tblName); listSize++;