[38/50] [abbrv] hive git commit: HIVE-13290: Support primary keys/foreign keys constraint as part of create table command in Hive (Hari Subramaniyan, reviewed by Ashutosh Chauhan)
HIVE-13290: Support primary keys/foreign keys constraint as part of create table command in Hive (Hari Subramaniyan, reviewed by Ashutosh Chauhan) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/53249a35 Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/53249a35 Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/53249a35 Branch: refs/heads/llap Commit: 53249a3579dce000736a05348b64faed32fb610c Parents: caa3ec7 Author: Hari SubramaniyanAuthored: Mon Apr 25 13:57:17 2016 -0700 Committer: Hari Subramaniyan Committed: Mon Apr 25 13:57:17 2016 -0700 -- .../hadoop/hive/metastore/ObjectStore.java | 41 +++- .../org/apache/hadoop/hive/ql/ErrorMsg.java | 3 +- .../org/apache/hadoop/hive/ql/exec/DDLTask.java | 11 +- .../apache/hadoop/hive/ql/metadata/Hive.java| 24 ++- .../hive/ql/parse/BaseSemanticAnalyzer.java | 209 +-- .../org/apache/hadoop/hive/ql/parse/HiveLexer.g | 9 + .../apache/hadoop/hive/ql/parse/HiveParser.g| 92 +++- .../hadoop/hive/ql/parse/IdentifiersParser.g| 11 +- .../hive/ql/parse/ImportSemanticAnalyzer.java | 2 +- .../hadoop/hive/ql/parse/SemanticAnalyzer.java | 10 +- .../hadoop/hive/ql/plan/CreateTableDesc.java| 43 +++- .../hive/ql/parse/TestHiveDecimalParse.java | 2 +- .../create_with_constraints_duplicate_name.q| 2 + .../create_with_constraints_enable.q| 1 + .../create_with_constraints_validate.q | 1 + .../clientpositive/create_with_constraints.q| 12 ++ ...create_with_constraints_duplicate_name.q.out | 13 ++ .../create_with_constraints_enable.q.out| 1 + .../create_with_constraints_validate.q.out | 1 + .../create_with_constraints.q.out | 68 ++ 20 files changed, 520 insertions(+), 36 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hive/blob/53249a35/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 ae6f084..24fbf70 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java @@ -1022,6 +1022,11 @@ public class ObjectStore implements RawStore, Configurable { " table " + tableName + " record to delete"); } +List tabConstraints = listAllTableConstraints(dbName, tableName); +if (tabConstraints != null && tabConstraints.size() > 0) { + pm.deletePersistentAll(tabConstraints); +} + preDropStorageDescriptor(tbl.getSd()); // then remove the table pm.deletePersistentAll(tbl); @@ -1035,7 +1040,41 @@ public class ObjectStore implements RawStore, Configurable { return success; } - @Override + private List listAllTableConstraints(String dbName, String tableName) { +List mConstraints = null; +List constraintNames = new ArrayList(); +Query query = null; + +try { + query = pm.newQuery("select constraintName from org.apache.hadoop.hive.metastore.model.MConstraint where " ++ "(parentTable.tableName == ptblname && parentTable.database.name == pdbname) || " ++ "(childTable != null && childTable.tableName == ctblname && childTable.database.name == cdbname)"); + query.declareParameters("java.lang.String ptblname, java.lang.String pdbname," + + "java.lang.String ctblname, java.lang.String cdbname"); + Collection constraintNamesColl = (Collection) query. +executeWithArray(tableName, dbName, tableName, dbName); + for (Iterator i = constraintNamesColl.iterator(); i.hasNext();) { +String currName = (String) i.next(); +constraintNames.add(currName); + } + query = pm.newQuery(MConstraint.class); + query.setFilter("param.contains(constraintName)"); + query.declareParameters("java.util.Collection param"); + Collection constraints = (Collection)query.execute(constraintNames); + mConstraints = new ArrayList(); + for (Iterator i = constraints.iterator(); i.hasNext();) { +MConstraint currConstraint = (MConstraint) i.next(); +mConstraints.add(currConstraint); + } +} finally { + if (query != null) { +query.closeAll(); + } +} +return mConstraints; + } + +@Override public Table getTable(String dbName, String tableName) throws MetaException { boolean commited = false; Table tbl = null;
hive git commit: HIVE-13290: Support primary keys/foreign keys constraint as part of create table command in Hive (Hari Subramaniyan, reviewed by Ashutosh Chauhan)
Repository: hive Updated Branches: refs/heads/master caa3ec761 -> 53249a357 HIVE-13290: Support primary keys/foreign keys constraint as part of create table command in Hive (Hari Subramaniyan, reviewed by Ashutosh Chauhan) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/53249a35 Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/53249a35 Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/53249a35 Branch: refs/heads/master Commit: 53249a3579dce000736a05348b64faed32fb610c Parents: caa3ec7 Author: Hari SubramaniyanAuthored: Mon Apr 25 13:57:17 2016 -0700 Committer: Hari Subramaniyan Committed: Mon Apr 25 13:57:17 2016 -0700 -- .../hadoop/hive/metastore/ObjectStore.java | 41 +++- .../org/apache/hadoop/hive/ql/ErrorMsg.java | 3 +- .../org/apache/hadoop/hive/ql/exec/DDLTask.java | 11 +- .../apache/hadoop/hive/ql/metadata/Hive.java| 24 ++- .../hive/ql/parse/BaseSemanticAnalyzer.java | 209 +-- .../org/apache/hadoop/hive/ql/parse/HiveLexer.g | 9 + .../apache/hadoop/hive/ql/parse/HiveParser.g| 92 +++- .../hadoop/hive/ql/parse/IdentifiersParser.g| 11 +- .../hive/ql/parse/ImportSemanticAnalyzer.java | 2 +- .../hadoop/hive/ql/parse/SemanticAnalyzer.java | 10 +- .../hadoop/hive/ql/plan/CreateTableDesc.java| 43 +++- .../hive/ql/parse/TestHiveDecimalParse.java | 2 +- .../create_with_constraints_duplicate_name.q| 2 + .../create_with_constraints_enable.q| 1 + .../create_with_constraints_validate.q | 1 + .../clientpositive/create_with_constraints.q| 12 ++ ...create_with_constraints_duplicate_name.q.out | 13 ++ .../create_with_constraints_enable.q.out| 1 + .../create_with_constraints_validate.q.out | 1 + .../create_with_constraints.q.out | 68 ++ 20 files changed, 520 insertions(+), 36 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hive/blob/53249a35/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 ae6f084..24fbf70 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java @@ -1022,6 +1022,11 @@ public class ObjectStore implements RawStore, Configurable { " table " + tableName + " record to delete"); } +List tabConstraints = listAllTableConstraints(dbName, tableName); +if (tabConstraints != null && tabConstraints.size() > 0) { + pm.deletePersistentAll(tabConstraints); +} + preDropStorageDescriptor(tbl.getSd()); // then remove the table pm.deletePersistentAll(tbl); @@ -1035,7 +1040,41 @@ public class ObjectStore implements RawStore, Configurable { return success; } - @Override + private List listAllTableConstraints(String dbName, String tableName) { +List mConstraints = null; +List constraintNames = new ArrayList(); +Query query = null; + +try { + query = pm.newQuery("select constraintName from org.apache.hadoop.hive.metastore.model.MConstraint where " ++ "(parentTable.tableName == ptblname && parentTable.database.name == pdbname) || " ++ "(childTable != null && childTable.tableName == ctblname && childTable.database.name == cdbname)"); + query.declareParameters("java.lang.String ptblname, java.lang.String pdbname," + + "java.lang.String ctblname, java.lang.String cdbname"); + Collection constraintNamesColl = (Collection) query. +executeWithArray(tableName, dbName, tableName, dbName); + for (Iterator i = constraintNamesColl.iterator(); i.hasNext();) { +String currName = (String) i.next(); +constraintNames.add(currName); + } + query = pm.newQuery(MConstraint.class); + query.setFilter("param.contains(constraintName)"); + query.declareParameters("java.util.Collection param"); + Collection constraints = (Collection)query.execute(constraintNames); + mConstraints = new ArrayList(); + for (Iterator i = constraints.iterator(); i.hasNext();) { +MConstraint currConstraint = (MConstraint) i.next(); +mConstraints.add(currConstraint); + } +} finally { + if (query != null) { +query.closeAll(); + } +} +return mConstraints; + } + +@Override public Table getTable(String dbName, String tableName) throws MetaException { boolean commited = false; Table tbl = null;