diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java index d634b4021600fd8b980dc5d56b77e3192eba5d9f..3a13eeb3e5ade12879cf3de553c700e0b9752429 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java @@ -940,6 +940,10 @@ private int renamePartition(Hive db, RenamePartitionDesc renamePartitionDesc) th Table tbl = db.getTable(renamePartitionDesc.getTableName()); Partition oldPart = db.getPartition(tbl, renamePartitionDesc.getOldPartSpec(), false); + if (oldPart == null) { + throw new HiveException("Renamed partition does not exist in " + + renamePartitionDesc.getTableName()); + } Partition part = db.getPartition(tbl, renamePartitionDesc.getOldPartSpec(), false); part.setValues(renamePartitionDesc.getNewPartSpec()); db.renamePartition(tbl, renamePartitionDesc.getOldPartSpec(), part); diff --git a/ql/src/test/results/clientnegative/alter_rename_partition_failure.q.out b/ql/src/test/results/clientnegative/alter_rename_partition_failure.q.out index f1640be1d2728d971517afdfc4f36efe1e5bb508..8820da602934286dd729c00c7baffbfb5b57a362 100644 --- a/ql/src/test/results/clientnegative/alter_rename_partition_failure.q.out +++ b/ql/src/test/results/clientnegative/alter_rename_partition_failure.q.out @@ -34,4 +34,4 @@ POSTHOOK: Lineage: alter_rename_partition PARTITION(pcol1=old_part1:,pcol2=old_p PREHOOK: query: alter table alter_rename_partition partition (pCol1='nonexist_part1:', pcol2='nonexist_part2:') rename to partition (pCol1='new_part1:', pcol2='new_part2:') PREHOOK: type: ALTERTABLE_RENAMEPART PREHOOK: Input: default@alter_rename_partition -FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. null +FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Renamed partition does not exist in default.alter_rename_partition