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