You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by vi...@apache.org on 2017/10/25 01:22:27 UTC

hive git commit: HIVE-17832 : Allow hive.metastore.disallow.incompatible.col.type.changes to be changed in metastore (Janaki Lahorani, reviewed by Andrew Sherman, Zachary Amsden, Sergey Shelukhin and Vihang Karajgaonkar)

Repository: hive
Updated Branches:
  refs/heads/master 42e70a3df -> 70c7f1c6e


HIVE-17832 : Allow hive.metastore.disallow.incompatible.col.type.changes to be changed in metastore (Janaki Lahorani, reviewed by Andrew Sherman, Zachary Amsden, Sergey Shelukhin and Vihang Karajgaonkar)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/70c7f1c6
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/70c7f1c6
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/70c7f1c6

Branch: refs/heads/master
Commit: 70c7f1c6e4ddfe1c5bf5ea9484c4c9746201f7df
Parents: 42e70a3
Author: Vihang Karajgaonkar <vi...@cloudera.com>
Authored: Tue Oct 24 18:14:31 2017 -0700
Committer: Vihang Karajgaonkar <vi...@cloudera.com>
Committed: Tue Oct 24 18:20:47 2017 -0700

----------------------------------------------------------------------
 .../org/apache/hadoop/hive/conf/HiveConf.java   |  3 ++-
 .../allow_change_col_type_par_neg.q             | 17 +++++++++++++++++
 .../clientpositive/allow_change_col_type_par.q  | 16 ++++++++++++++++
 .../allow_change_col_type_par_neg.q.out         | 18 ++++++++++++++++++
 .../allow_change_col_type_par.q.out             | 20 ++++++++++++++++++++
 .../hive/metastore/conf/MetastoreConf.java      |  3 ++-
 6 files changed, 75 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/70c7f1c6/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
----------------------------------------------------------------------
diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
index 0b4abb8..2eaf553 100644
--- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
+++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
@@ -299,7 +299,8 @@ public class HiveConf extends Configuration {
       HiveConf.ConfVars.METASTORE_TRY_DIRECT_SQL_DDL,
       HiveConf.ConfVars.METASTORE_CLIENT_SOCKET_TIMEOUT,
       HiveConf.ConfVars.METASTORE_PARTITION_NAME_WHITELIST_PATTERN,
-      HiveConf.ConfVars.METASTORE_CAPABILITY_CHECK
+      HiveConf.ConfVars.METASTORE_CAPABILITY_CHECK,
+      HiveConf.ConfVars.METASTORE_DISALLOW_INCOMPATIBLE_COL_TYPE_CHANGES
   };
 
   static {

http://git-wip-us.apache.org/repos/asf/hive/blob/70c7f1c6/ql/src/test/queries/clientnegative/allow_change_col_type_par_neg.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientnegative/allow_change_col_type_par_neg.q b/ql/src/test/queries/clientnegative/allow_change_col_type_par_neg.q
new file mode 100644
index 0000000..f619ccf
--- /dev/null
+++ b/ql/src/test/queries/clientnegative/allow_change_col_type_par_neg.q
@@ -0,0 +1,17 @@
+-- Setup
+create table t1 (c1 int);
+
+-- Check value of parameter
+set hive.metastore.disallow.incompatible.col.type.changes;
+set metaconf:hive.metastore.disallow.incompatible.col.type.changes;
+
+-- Change parameter to disallow column type changes in metastore
+set hive.metastore.disallow.incompatible.col.type.changes=false;
+set metaconf:hive.metastore.disallow.incompatible.col.type.changes=true;
+
+-- check value of parameter
+set hive.metastore.disallow.incompatible.col.type.changes;
+set metaconf:hive.metastore.disallow.incompatible.col.type.changes;
+
+-- Change int to small int now not allowed.
+alter table t1 change column c1 c1 smallint;

http://git-wip-us.apache.org/repos/asf/hive/blob/70c7f1c6/ql/src/test/queries/clientpositive/allow_change_col_type_par.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/allow_change_col_type_par.q b/ql/src/test/queries/clientpositive/allow_change_col_type_par.q
new file mode 100644
index 0000000..dba4e70
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/allow_change_col_type_par.q
@@ -0,0 +1,16 @@
+-- Setup
+create table t1 (c1 int);
+
+-- Check value of parameter
+set hive.metastore.disallow.incompatible.col.type.changes;
+set metaconf:hive.metastore.disallow.incompatible.col.type.changes;
+
+-- Change parameter to allow column type changes in metastore
+set metaconf:hive.metastore.disallow.incompatible.col.type.changes=false;
+
+-- check value of parameter
+set hive.metastore.disallow.incompatible.col.type.changes;
+set metaconf:hive.metastore.disallow.incompatible.col.type.changes;
+
+-- Change int to small int now allowed.
+alter table t1 change column c1 c1 smallint;

http://git-wip-us.apache.org/repos/asf/hive/blob/70c7f1c6/ql/src/test/results/clientnegative/allow_change_col_type_par_neg.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientnegative/allow_change_col_type_par_neg.q.out b/ql/src/test/results/clientnegative/allow_change_col_type_par_neg.q.out
new file mode 100644
index 0000000..3f91e85
--- /dev/null
+++ b/ql/src/test/results/clientnegative/allow_change_col_type_par_neg.q.out
@@ -0,0 +1,18 @@
+PREHOOK: query: create table t1 (c1 int)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@t1
+POSTHOOK: query: create table t1 (c1 int)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@t1
+hive.metastore.disallow.incompatible.col.type.changes=true
+metaconf:hive.metastore.disallow.incompatible.col.type.changes=true
+hive.metastore.disallow.incompatible.col.type.changes=false
+metaconf:hive.metastore.disallow.incompatible.col.type.changes=true
+PREHOOK: query: alter table t1 change column c1 c1 smallint
+PREHOOK: type: ALTERTABLE_RENAMECOL
+PREHOOK: Input: default@t1
+PREHOOK: Output: default@t1
+FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Unable to alter table. The following columns have types incompatible with the existing columns in their respective positions :
+c1

http://git-wip-us.apache.org/repos/asf/hive/blob/70c7f1c6/ql/src/test/results/clientpositive/allow_change_col_type_par.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/allow_change_col_type_par.q.out b/ql/src/test/results/clientpositive/allow_change_col_type_par.q.out
new file mode 100644
index 0000000..d24dfdb
--- /dev/null
+++ b/ql/src/test/results/clientpositive/allow_change_col_type_par.q.out
@@ -0,0 +1,20 @@
+PREHOOK: query: create table t1 (c1 int)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@t1
+POSTHOOK: query: create table t1 (c1 int)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@t1
+hive.metastore.disallow.incompatible.col.type.changes=true
+metaconf:hive.metastore.disallow.incompatible.col.type.changes=true
+hive.metastore.disallow.incompatible.col.type.changes=true
+metaconf:hive.metastore.disallow.incompatible.col.type.changes=false
+PREHOOK: query: alter table t1 change column c1 c1 smallint
+PREHOOK: type: ALTERTABLE_RENAMECOL
+PREHOOK: Input: default@t1
+PREHOOK: Output: default@t1
+POSTHOOK: query: alter table t1 change column c1 c1 smallint
+POSTHOOK: type: ALTERTABLE_RENAMECOL
+POSTHOOK: Input: default@t1
+POSTHOOK: Output: default@t1

http://git-wip-us.apache.org/repos/asf/hive/blob/70c7f1c6/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/conf/MetastoreConf.java
----------------------------------------------------------------------
diff --git a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/conf/MetastoreConf.java b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/conf/MetastoreConf.java
index ba58ae4..ac81912 100644
--- a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/conf/MetastoreConf.java
+++ b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/conf/MetastoreConf.java
@@ -176,7 +176,8 @@ public class MetastoreConf {
       ConfVars.TRY_DIRECT_SQL_DDL,
       ConfVars.CLIENT_SOCKET_TIMEOUT,
       ConfVars.PARTITION_NAME_WHITELIST_PATTERN,
-      ConfVars.CAPABILITY_CHECK
+      ConfVars.CAPABILITY_CHECK,
+      ConfVars.DISALLOW_INCOMPATIBLE_COL_TYPE_CHANGES
   };
 
   static {