[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)

2016-04-26 Thread jdere
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 Subramaniyan 
Authored: 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)

2016-04-25 Thread harisankar
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 Subramaniyan 
Authored: 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;