Repository: hive Updated Branches: refs/heads/master db21c3ff6 -> 309cb0d43
HIVE-16877 : NPE when issue query like alter table ... cascade onto non-partitioned table (Wang Haihua via Ashutosh Chauhan) Signed-off-by: Ashutosh Chauhan <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/309cb0d4 Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/309cb0d4 Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/309cb0d4 Branch: refs/heads/master Commit: 309cb0d432653be4ef8b1028ccc4ed5d5f5ae7e6 Parents: db21c3f Author: Wang Haihua <[email protected]> Authored: Sat Jun 10 07:25:00 2017 -0700 Committer: Ashutosh Chauhan <[email protected]> Committed: Mon Jun 26 08:02:36 2017 -0700 ---------------------------------------------------------------------- .../org/apache/hadoop/hive/ql/ErrorMsg.java | 2 ++ .../hive/ql/parse/DDLSemanticAnalyzer.java | 6 ++++++ .../alter_table_non_partitioned_table_cascade.q | 4 ++++ ...er_table_non_partitioned_table_cascade.q.out | 21 ++++++++++++++++++++ 4 files changed, 33 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/309cb0d4/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java b/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java index 4af09f0..226ba18 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java @@ -471,6 +471,8 @@ public enum ErrorMsg { INVALID_JOIN_CONDITION(10407, "Error parsing condition in join"), INVALID_TARGET_COLUMN_IN_SET_CLAUSE(10408, "Target column \"{0}\" of set clause is not found in table \"{1}\".", true), HIVE_GROUPING_FUNCTION_EXPR_NOT_IN_GROUPBY(10409, "Expression in GROUPING function not present in GROUP BY"), + ALTER_TABLE_NON_PARTITIONED_TABLE_CASCADE_NOT_SUPPORTED(10410, + "Alter table with non-partitioned table does not support cascade"), //========================== 20000 range starts here ========================// SCRIPT_INIT_ERROR(20000, "Unable to initialize custom script."), SCRIPT_IO_ERROR(20001, "An error occurred while reading or writing to your custom script. " http://git-wip-us.apache.org/repos/asf/hive/blob/309cb0d4/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java index e9a4ff0..55f07af 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java @@ -1494,6 +1494,12 @@ public class DDLSemanticAnalyzer extends BaseSemanticAnalyzer { } Table tab = getTable(tableName, true); + // cascade only occurs with partitioned table + if (isCascade && !tab.isPartitioned()) { + throw new SemanticException( + ErrorMsg.ALTER_TABLE_NON_PARTITIONED_TABLE_CASCADE_NOT_SUPPORTED); + } + // Determine the lock type to acquire WriteEntity.WriteType writeType = WriteEntity.determineAlterTableWriteType(op); http://git-wip-us.apache.org/repos/asf/hive/blob/309cb0d4/ql/src/test/queries/clientnegative/alter_table_non_partitioned_table_cascade.q ---------------------------------------------------------------------- diff --git a/ql/src/test/queries/clientnegative/alter_table_non_partitioned_table_cascade.q b/ql/src/test/queries/clientnegative/alter_table_non_partitioned_table_cascade.q new file mode 100644 index 0000000..47ce383 --- /dev/null +++ b/ql/src/test/queries/clientnegative/alter_table_non_partitioned_table_cascade.q @@ -0,0 +1,4 @@ +drop table if exists alter_table_non_partition_cascade; +create table alter_table_non_partitioned_cascade(c1 string, c2 string); +describe alter_table_non_partitioned_cascade; +alter table alter_table_non_partitioned_cascade add columns (c3 string) cascade; \ No newline at end of file http://git-wip-us.apache.org/repos/asf/hive/blob/309cb0d4/ql/src/test/results/clientnegative/alter_table_non_partitioned_table_cascade.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientnegative/alter_table_non_partitioned_table_cascade.q.out b/ql/src/test/results/clientnegative/alter_table_non_partitioned_table_cascade.q.out new file mode 100644 index 0000000..afa648d --- /dev/null +++ b/ql/src/test/results/clientnegative/alter_table_non_partitioned_table_cascade.q.out @@ -0,0 +1,21 @@ +PREHOOK: query: drop table if exists alter_table_non_partition_cascade +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists alter_table_non_partition_cascade +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table alter_table_non_partitioned_cascade(c1 string, c2 string) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@alter_table_non_partitioned_cascade +POSTHOOK: query: create table alter_table_non_partitioned_cascade(c1 string, c2 string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@alter_table_non_partitioned_cascade +PREHOOK: query: describe alter_table_non_partitioned_cascade +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@alter_table_non_partitioned_cascade +POSTHOOK: query: describe alter_table_non_partitioned_cascade +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@alter_table_non_partitioned_cascade +c1 string +c2 string +FAILED: SemanticException [Error 10410]: Alter table with non-partitioned table does not support cascade
