You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2017/04/04 16:50:34 UTC

hive git commit: HIVE-15724 : getPrimaryKeys and getForeignKeys in metastore does not normalize db and table name (Daniel Dai via Pengcheng Xiong)

Repository: hive
Updated Branches:
  refs/heads/master 4e162e01f -> 90f2a047a


HIVE-15724 : getPrimaryKeys and getForeignKeys in metastore does not normalize db and table name (Daniel Dai via Pengcheng Xiong)

Signed-off-by: Ashutosh Chauhan <ha...@apache.org>


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

Branch: refs/heads/master
Commit: 90f2a047af1788c070900c999a181a4863bfe045
Parents: 4e162e0
Author: Daniel Dai <da...@hortonworks.com>
Authored: Tue Jan 24 23:22:00 2017 -0800
Committer: Ashutosh Chauhan <ha...@apache.org>
Committed: Tue Apr 4 09:49:58 2017 -0700

----------------------------------------------------------------------
 .../hadoop/hive/metastore/ObjectStore.java      | 19 +++++--
 .../hadoop/hive/metastore/hbase/HBaseStore.java | 22 ++++++++
 .../clientpositive/create_with_constraints.q    | 24 ++++-----
 .../create_with_constraints.q.out               | 56 ++++++++++----------
 4 files changed, 76 insertions(+), 45 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/90f2a047/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
----------------------------------------------------------------------
diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java b/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
index a63519a..6b21751 100644
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
@@ -1139,6 +1139,9 @@ public class ObjectStore implements RawStore, Configurable {
 
   private List<MConstraint> listAllTableConstraintsWithOptionalConstraintName
     (String dbName, String tableName, String constraintname) {
+    dbName = HiveStringUtils.normalizeIdentifier(dbName);
+    tableName = HiveStringUtils.normalizeIdentifier(tableName);
+    constraintname = constraintname!=null?HiveStringUtils.normalizeIdentifier(constraintname):null;
     List<MConstraint> mConstraints = null;
     List<String> constraintNames = new ArrayList<String>();
     Query query = null;
@@ -8540,10 +8543,12 @@ public class ObjectStore implements RawStore, Configurable {
     }
   }
 
-  protected List<SQLPrimaryKey> getPrimaryKeysInternal(final String db_name,
-    final String tbl_name,
+  protected List<SQLPrimaryKey> getPrimaryKeysInternal(final String db_name_input,
+    final String tbl_name_input,
     boolean allowSql, boolean allowJdo)
   throws MetaException, NoSuchObjectException {
+    final String db_name = HiveStringUtils.normalizeIdentifier(db_name_input);
+    final String tbl_name = HiveStringUtils.normalizeIdentifier(tbl_name_input);
     return new GetListHelper<SQLPrimaryKey>(db_name, tbl_name, allowSql, allowJdo) {
 
       @Override
@@ -8637,9 +8642,13 @@ public class ObjectStore implements RawStore, Configurable {
     }
   }
 
-  protected List<SQLForeignKey> getForeignKeysInternal(final String parent_db_name,
-    final String parent_tbl_name, final String foreign_db_name, final String foreign_tbl_name,
-    boolean allowSql, boolean allowJdo) throws MetaException, NoSuchObjectException {
+  protected List<SQLForeignKey> getForeignKeysInternal(final String parent_db_name_input,
+    final String parent_tbl_name_input, final String foreign_db_name_input,
+    final String foreign_tbl_name_input, boolean allowSql, boolean allowJdo) throws MetaException, NoSuchObjectException {
+    final String parent_db_name = parent_db_name_input;
+    final String parent_tbl_name = parent_tbl_name_input;
+    final String foreign_db_name = foreign_db_name_input;
+    final String foreign_tbl_name = foreign_tbl_name_input;
     return new GetListHelper<SQLForeignKey>(foreign_db_name, foreign_tbl_name, allowSql, allowJdo) {
 
       @Override

http://git-wip-us.apache.org/repos/asf/hive/blob/90f2a047/metastore/src/java/org/apache/hadoop/hive/metastore/hbase/HBaseStore.java
----------------------------------------------------------------------
diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/hbase/HBaseStore.java b/metastore/src/java/org/apache/hadoop/hive/metastore/hbase/HBaseStore.java
index 6593fa6..f9619e5 100644
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/hbase/HBaseStore.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/hbase/HBaseStore.java
@@ -2692,6 +2692,8 @@ public class HBaseStore implements RawStore {
 
   @Override
   public List<SQLPrimaryKey> getPrimaryKeys(String db_name, String tbl_name) throws MetaException {
+    db_name = HiveStringUtils.normalizeIdentifier(db_name);
+    tbl_name = HiveStringUtils.normalizeIdentifier(tbl_name);
     boolean commit = false;
     openTransaction();
     try {
@@ -2710,6 +2712,10 @@ public class HBaseStore implements RawStore {
   public List<SQLForeignKey> getForeignKeys(String parent_db_name, String parent_tbl_name,
                                             String foreign_db_name, String foreign_tbl_name)
       throws MetaException {
+    parent_db_name = parent_db_name!=null?HiveStringUtils.normalizeIdentifier(parent_db_name):null;
+    parent_tbl_name = parent_tbl_name!=null?HiveStringUtils.normalizeIdentifier(parent_tbl_name):null;
+    foreign_db_name = HiveStringUtils.normalizeIdentifier(foreign_db_name);
+    foreign_tbl_name = HiveStringUtils.normalizeIdentifier(foreign_tbl_name);
     boolean commit = false;
     openTransaction();
     try {
@@ -2754,6 +2760,9 @@ public class HBaseStore implements RawStore {
     // This is something of pain, since we have to search both primary key and foreign key to see
     // which they want to drop.
     boolean commit = false;
+    dbName = HiveStringUtils.normalizeIdentifier(dbName);
+    tableName = HiveStringUtils.normalizeIdentifier(tableName);
+    constraintName = HiveStringUtils.normalizeIdentifier(constraintName);
     openTransaction();
     try {
       List<SQLPrimaryKey> pk = getHBase().getPrimaryKey(dbName, tableName);
@@ -2793,6 +2802,12 @@ public class HBaseStore implements RawStore {
   @Override
   public void addPrimaryKeys(List<SQLPrimaryKey> pks) throws InvalidObjectException, MetaException {
     boolean commit = false;
+    for (SQLPrimaryKey pk : pks) {
+      pk.setTable_db(HiveStringUtils.normalizeIdentifier(pk.getTable_db()));
+      pk.setTable_name(HiveStringUtils.normalizeIdentifier(pk.getTable_name()));
+      pk.setColumn_name(HiveStringUtils.normalizeIdentifier(pk.getColumn_name()));
+      pk.setPk_name(HiveStringUtils.normalizeIdentifier(pk.getPk_name()));
+    }
     openTransaction();
     try {
       List<SQLPrimaryKey> currentPk =
@@ -2814,6 +2829,13 @@ public class HBaseStore implements RawStore {
   @Override
   public void addForeignKeys(List<SQLForeignKey> fks) throws InvalidObjectException, MetaException {
     boolean commit = false;
+    for (SQLForeignKey fk : fks) {
+      fk.setPktable_db(HiveStringUtils.normalizeIdentifier(fk.getPktable_db()));
+      fk.setPktable_name(HiveStringUtils.normalizeIdentifier(fk.getPktable_name()));
+      fk.setFktable_db(HiveStringUtils.normalizeIdentifier(fk.getFktable_db()));
+      fk.setFktable_name(HiveStringUtils.normalizeIdentifier(fk.getFktable_name()));
+      fk.setFk_name(HiveStringUtils.normalizeIdentifier(fk.getFk_name()));
+    }
     openTransaction();
     try {
       // Fetch the existing keys (if any) and add in these new ones

http://git-wip-us.apache.org/repos/asf/hive/blob/90f2a047/ql/src/test/queries/clientpositive/create_with_constraints.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/create_with_constraints.q b/ql/src/test/queries/clientpositive/create_with_constraints.q
index 10cb1c9..7dc15c1 100644
--- a/ql/src/test/queries/clientpositive/create_with_constraints.q
+++ b/ql/src/test/queries/clientpositive/create_with_constraints.q
@@ -57,20 +57,20 @@ DESCRIBE FORMATTED table2;
 DESCRIBE FORMATTED table3;
 DESCRIBE FORMATTED table6;
 
-CREATE DATABASE dbconstraint;
-USE dbconstraint;
-CREATE TABLE table2 (a STRING, b STRING, constraint pk1 primary key (a) disable novalidate);
+CREATE DATABASE DbConstraint;
+USE DbConstraint;
+CREATE TABLE Table2 (a STRING, b STRING, constraint Pk1 primary key (a) disable novalidate);
 USE default;
 
-DESCRIBE EXTENDED dbconstraint.table2;
-DESCRIBE FORMATTED dbconstraint.table2;
+DESCRIBE EXTENDED DbConstraint.Table2;
+DESCRIBE FORMATTED DbConstraint.Table2;
 
-ALTER TABLE dbconstraint.table2 DROP CONSTRAINT pk1;
+ALTER TABLE DbConstraint.Table2 DROP CONSTRAINT Pk1;
 
-DESCRIBE EXTENDED dbconstraint.table2;
-DESCRIBE FORMATTED dbconstraint.table2;
+DESCRIBE EXTENDED DbConstraint.Table2;
+DESCRIBE FORMATTED DbConstraint.Table2;
 
-ALTER TABLE dbconstraint.table2 ADD CONSTRAINT pk1 primary key (a) disable novalidate;
-DESCRIBE FORMATTED dbconstraint.table2;
-ALTER TABLE dbconstraint.table2  ADD CONSTRAINT fkx FOREIGN KEY (b) REFERENCES table1(a)  DISABLE NOVALIDATE;
-DESCRIBE FORMATTED dbconstraint.table2;
+ALTER TABLE DbConstraint.Table2 ADD CONSTRAINT Pk1 primary key (a) disable novalidate;
+DESCRIBE FORMATTED DbConstraint.Table2;
+ALTER TABLE DbConstraint.Table2  ADD CONSTRAINT fkx FOREIGN KEY (b) REFERENCES table1(a)  DISABLE NOVALIDATE;
+DESCRIBE FORMATTED DbConstraint.Table2;

http://git-wip-us.apache.org/repos/asf/hive/blob/90f2a047/ql/src/test/results/clientpositive/create_with_constraints.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/create_with_constraints.q.out b/ql/src/test/results/clientpositive/create_with_constraints.q.out
index 056ca38..64c3ec6 100644
--- a/ql/src/test/results/clientpositive/create_with_constraints.q.out
+++ b/ql/src/test/results/clientpositive/create_with_constraints.q.out
@@ -1039,36 +1039,36 @@ Parent Column Name:default.table1.a	Column Name:y       	Key Sequence:1
 Constraint Name:    	#### A masked pattern was here ####	 
 Parent Column Name:default.table2.a	Column Name:x       	Key Sequence:1      
 	 	 
-PREHOOK: query: CREATE DATABASE dbconstraint
+PREHOOK: query: CREATE DATABASE DbConstraint
 PREHOOK: type: CREATEDATABASE
-PREHOOK: Output: database:dbconstraint
-POSTHOOK: query: CREATE DATABASE dbconstraint
+PREHOOK: Output: database:DbConstraint
+POSTHOOK: query: CREATE DATABASE DbConstraint
 POSTHOOK: type: CREATEDATABASE
-POSTHOOK: Output: database:dbconstraint
-PREHOOK: query: USE dbconstraint
+POSTHOOK: Output: database:DbConstraint
+PREHOOK: query: USE DbConstraint
 PREHOOK: type: SWITCHDATABASE
 PREHOOK: Input: database:dbconstraint
-POSTHOOK: query: USE dbconstraint
+POSTHOOK: query: USE DbConstraint
 POSTHOOK: type: SWITCHDATABASE
 POSTHOOK: Input: database:dbconstraint
-PREHOOK: query: CREATE TABLE table2 (a STRING, b STRING, constraint pk1 primary key (a) disable novalidate)
+PREHOOK: query: CREATE TABLE Table2 (a STRING, b STRING, constraint Pk1 primary key (a) disable novalidate)
 PREHOOK: type: CREATETABLE
+PREHOOK: Output: DbConstraint@Table2
 PREHOOK: Output: database:dbconstraint
-PREHOOK: Output: dbconstraint@table2
-POSTHOOK: query: CREATE TABLE table2 (a STRING, b STRING, constraint pk1 primary key (a) disable novalidate)
+POSTHOOK: query: CREATE TABLE Table2 (a STRING, b STRING, constraint Pk1 primary key (a) disable novalidate)
 POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: DbConstraint@Table2
 POSTHOOK: Output: database:dbconstraint
-POSTHOOK: Output: dbconstraint@table2
 PREHOOK: query: USE default
 PREHOOK: type: SWITCHDATABASE
 PREHOOK: Input: database:default
 POSTHOOK: query: USE default
 POSTHOOK: type: SWITCHDATABASE
 POSTHOOK: Input: database:default
-PREHOOK: query: DESCRIBE EXTENDED dbconstraint.table2
+PREHOOK: query: DESCRIBE EXTENDED DbConstraint.Table2
 PREHOOK: type: DESCTABLE
 PREHOOK: Input: dbconstraint@table2
-POSTHOOK: query: DESCRIBE EXTENDED dbconstraint.table2
+POSTHOOK: query: DESCRIBE EXTENDED DbConstraint.Table2
 POSTHOOK: type: DESCTABLE
 POSTHOOK: Input: dbconstraint@table2
 a                   	string              	                    
@@ -1076,10 +1076,10 @@ b                   	string
 	 	 
 #### A masked pattern was here ####
 Constraints	Primary Key for dbconstraint.table2:[a], Constraint Name: pk1	 
-PREHOOK: query: DESCRIBE FORMATTED dbconstraint.table2
+PREHOOK: query: DESCRIBE FORMATTED DbConstraint.Table2
 PREHOOK: type: DESCTABLE
 PREHOOK: Input: dbconstraint@table2
-POSTHOOK: query: DESCRIBE FORMATTED dbconstraint.table2
+POSTHOOK: query: DESCRIBE FORMATTED DbConstraint.Table2
 POSTHOOK: type: DESCTABLE
 POSTHOOK: Input: dbconstraint@table2
 # col_name            	data_type           	comment             
@@ -1118,24 +1118,24 @@ Storage Desc Params:
 Table:              	dbconstraint.table2 	 
 Constraint Name:    	pk1                 	 
 Column Names:       	a                   	 
-PREHOOK: query: ALTER TABLE dbconstraint.table2 DROP CONSTRAINT pk1
+PREHOOK: query: ALTER TABLE DbConstraint.Table2 DROP CONSTRAINT Pk1
 PREHOOK: type: ALTERTABLE_DROPCONSTRAINT
-POSTHOOK: query: ALTER TABLE dbconstraint.table2 DROP CONSTRAINT pk1
+POSTHOOK: query: ALTER TABLE DbConstraint.Table2 DROP CONSTRAINT Pk1
 POSTHOOK: type: ALTERTABLE_DROPCONSTRAINT
-PREHOOK: query: DESCRIBE EXTENDED dbconstraint.table2
+PREHOOK: query: DESCRIBE EXTENDED DbConstraint.Table2
 PREHOOK: type: DESCTABLE
 PREHOOK: Input: dbconstraint@table2
-POSTHOOK: query: DESCRIBE EXTENDED dbconstraint.table2
+POSTHOOK: query: DESCRIBE EXTENDED DbConstraint.Table2
 POSTHOOK: type: DESCTABLE
 POSTHOOK: Input: dbconstraint@table2
 a                   	string              	                    
 b                   	string              	                    
 	 	 
 #### A masked pattern was here ####
-PREHOOK: query: DESCRIBE FORMATTED dbconstraint.table2
+PREHOOK: query: DESCRIBE FORMATTED DbConstraint.Table2
 PREHOOK: type: DESCTABLE
 PREHOOK: Input: dbconstraint@table2
-POSTHOOK: query: DESCRIBE FORMATTED dbconstraint.table2
+POSTHOOK: query: DESCRIBE FORMATTED DbConstraint.Table2
 POSTHOOK: type: DESCTABLE
 POSTHOOK: Input: dbconstraint@table2
 # col_name            	data_type           	comment             
@@ -1167,14 +1167,14 @@ Bucket Columns:     	[]
 Sort Columns:       	[]                  	 
 Storage Desc Params:	 	 
 	serialization.format	1                   
-PREHOOK: query: ALTER TABLE dbconstraint.table2 ADD CONSTRAINT pk1 primary key (a) disable novalidate
+PREHOOK: query: ALTER TABLE DbConstraint.Table2 ADD CONSTRAINT Pk1 primary key (a) disable novalidate
 PREHOOK: type: ALTERTABLE_ADDCONSTRAINT
-POSTHOOK: query: ALTER TABLE dbconstraint.table2 ADD CONSTRAINT pk1 primary key (a) disable novalidate
+POSTHOOK: query: ALTER TABLE DbConstraint.Table2 ADD CONSTRAINT Pk1 primary key (a) disable novalidate
 POSTHOOK: type: ALTERTABLE_ADDCONSTRAINT
-PREHOOK: query: DESCRIBE FORMATTED dbconstraint.table2
+PREHOOK: query: DESCRIBE FORMATTED DbConstraint.Table2
 PREHOOK: type: DESCTABLE
 PREHOOK: Input: dbconstraint@table2
-POSTHOOK: query: DESCRIBE FORMATTED dbconstraint.table2
+POSTHOOK: query: DESCRIBE FORMATTED DbConstraint.Table2
 POSTHOOK: type: DESCTABLE
 POSTHOOK: Input: dbconstraint@table2
 # col_name            	data_type           	comment             
@@ -1213,14 +1213,14 @@ Storage Desc Params:
 Table:              	dbconstraint.table2 	 
 Constraint Name:    	pk1                 	 
 Column Names:       	a                   	 
-PREHOOK: query: ALTER TABLE dbconstraint.table2  ADD CONSTRAINT fkx FOREIGN KEY (b) REFERENCES table1(a)  DISABLE NOVALIDATE
+PREHOOK: query: ALTER TABLE DbConstraint.Table2  ADD CONSTRAINT fkx FOREIGN KEY (b) REFERENCES table1(a)  DISABLE NOVALIDATE
 PREHOOK: type: ALTERTABLE_ADDCONSTRAINT
-POSTHOOK: query: ALTER TABLE dbconstraint.table2  ADD CONSTRAINT fkx FOREIGN KEY (b) REFERENCES table1(a)  DISABLE NOVALIDATE
+POSTHOOK: query: ALTER TABLE DbConstraint.Table2  ADD CONSTRAINT fkx FOREIGN KEY (b) REFERENCES table1(a)  DISABLE NOVALIDATE
 POSTHOOK: type: ALTERTABLE_ADDCONSTRAINT
-PREHOOK: query: DESCRIBE FORMATTED dbconstraint.table2
+PREHOOK: query: DESCRIBE FORMATTED DbConstraint.Table2
 PREHOOK: type: DESCTABLE
 PREHOOK: Input: dbconstraint@table2
-POSTHOOK: query: DESCRIBE FORMATTED dbconstraint.table2
+POSTHOOK: query: DESCRIBE FORMATTED DbConstraint.Table2
 POSTHOOK: type: DESCTABLE
 POSTHOOK: Input: dbconstraint@table2
 # col_name            	data_type           	comment