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

Reply via email to