}
// drop the table
db.dropTable(dropTbl.getTableName());
if (tbl != null) {
work.getOutputs().add(new WriteEntity(tbl));
}
} else {
// This is actually an ALTER TABLE DROP PARTITION
if (tbl != null) {
validateAlterTableType(
tbl, AlterTableDesc.AlterTableTypes.DROPPARTITION,
dropTbl.getExpectView());
}
List<Partition> partsToDelete = new ArrayList<Partition>();
for (Map<String, String> partSpec : dropTbl.getPartSpecs()) {
List<Partition> partitions = db.getPartitions(tbl, partSpec);
for (Partition p : partitions) {
if (!p.canDrop()) {
throw new HiveException("Table " + tbl.getTableName() +
" Partition " + p.getName() +
" is protected from being dropped");
}
partsToDelete.add(p);
}
}
// drop all existing partitions from the list
for (Partition partition : partsToDelete) {
console.printInfo("Dropping the partition " + partition.getName());
db.dropPartition(dropTbl.getTableName(), partition.getValues(), true);
work.getOutputs().add(new WriteEntity(partition));
}
}
return 0;
}