You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by sa...@apache.org on 2020/10/25 09:01:52 UTC
[hive] branch master updated: HIVE-24258: [CachedStore] Data
mismatch between CachedStore and ObjectStore (Ashish Sharma,
reviewed by Sankar Hariappan)
This is an automated email from the ASF dual-hosted git repository.
sankarh pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/master by this push:
new db895f3 HIVE-24258: [CachedStore] Data mismatch between CachedStore and ObjectStore (Ashish Sharma, reviewed by Sankar Hariappan)
db895f3 is described below
commit db895f374bf63b77b683574fdf678bfac91a5ac6
Author: Ashish Kumar Sharma <as...@gmail.com>
AuthorDate: Sun Oct 25 09:01:42 2020 +0000
HIVE-24258: [CachedStore] Data mismatch between CachedStore and ObjectStore (Ashish Sharma, reviewed by Sankar Hariappan)
Signed-off-by: Sankar Hariappan <sa...@apache.org>
Closes (#1587)
---
.../hcatalog/listener/DummyRawStoreFailEvent.java | 20 +-
.../cache/TestCachedStoreUpdateUsingEvents.java | 73 ++---
.../hadoop/hive/metastore/HiveMetaStore.java | 320 +++++++--------------
.../apache/hadoop/hive/metastore/ObjectStore.java | 260 ++++++++++-------
.../org/apache/hadoop/hive/metastore/RawStore.java | 24 +-
.../hadoop/hive/metastore/cache/CacheUtils.java | 9 +-
.../hadoop/hive/metastore/cache/CachedStore.java | 100 ++++---
.../hadoop/hive/metastore/cache/SharedCache.java | 52 ++--
.../metastore/DummyRawStoreControlledCommit.java | 19 +-
.../metastore/DummyRawStoreForJdoConnection.java | 19 +-
.../metastore/InjectableBehaviourObjectStore.java | 4 +-
.../hive/metastore/cache/TestCachedStore.java | 102 +------
.../hive/metastore/client/TestCheckConstraint.java | 57 +---
.../metastore/client/TestDefaultConstraint.java | 55 +---
.../hive/metastore/client/TestForeignKey.java | 93 +-----
.../client/TestGetAllTableConstraints.java | 293 ++++---------------
.../metastore/client/TestNotNullConstraint.java | 51 +---
.../hive/metastore/client/TestPrimaryKey.java | 68 +----
.../metastore/client/TestUniqueConstraint.java | 56 +---
19 files changed, 560 insertions(+), 1115 deletions(-)
diff --git a/itests/hcatalog-unit/src/test/java/org/apache/hive/hcatalog/listener/DummyRawStoreFailEvent.java b/itests/hcatalog-unit/src/test/java/org/apache/hive/hcatalog/listener/DummyRawStoreFailEvent.java
index 8b5577f..ebebc02 100644
--- a/itests/hcatalog-unit/src/test/java/org/apache/hive/hcatalog/listener/DummyRawStoreFailEvent.java
+++ b/itests/hcatalog-unit/src/test/java/org/apache/hive/hcatalog/listener/DummyRawStoreFailEvent.java
@@ -1091,12 +1091,8 @@ public class DummyRawStoreFailEvent implements RawStore, Configurable {
}
@Override
- public List<String> createTableWithConstraints(Table tbl,
- List<SQLPrimaryKey> primaryKeys, List<SQLForeignKey> foreignKeys,
- List<SQLUniqueConstraint> uniqueConstraints,
- List<SQLNotNullConstraint> notNullConstraints,
- List<SQLDefaultConstraint> defaultConstraints,
- List<SQLCheckConstraint> checkConstraints)
+ public SQLAllTableConstraints createTableWithConstraints(Table tbl,
+ SQLAllTableConstraints constraints)
throws InvalidObjectException, MetaException {
return null;
}
@@ -1108,37 +1104,37 @@ public class DummyRawStoreFailEvent implements RawStore, Configurable {
}
@Override
- public List<String> addPrimaryKeys(List<SQLPrimaryKey> pks)
+ public List<SQLPrimaryKey> addPrimaryKeys(List<SQLPrimaryKey> pks)
throws InvalidObjectException, MetaException {
return null;
}
@Override
- public List<String> addForeignKeys(List<SQLForeignKey> fks)
+ public List<SQLForeignKey> addForeignKeys(List<SQLForeignKey> fks)
throws InvalidObjectException, MetaException {
return null;
}
@Override
- public List<String> addUniqueConstraints(List<SQLUniqueConstraint> uks)
+ public List<SQLUniqueConstraint> addUniqueConstraints(List<SQLUniqueConstraint> uks)
throws InvalidObjectException, MetaException {
return null;
}
@Override
- public List<String> addNotNullConstraints(List<SQLNotNullConstraint> nns)
+ public List<SQLNotNullConstraint> addNotNullConstraints(List<SQLNotNullConstraint> nns)
throws InvalidObjectException, MetaException {
return null;
}
@Override
- public List<String> addDefaultConstraints(List<SQLDefaultConstraint> nns)
+ public List<SQLDefaultConstraint> addDefaultConstraints(List<SQLDefaultConstraint> nns)
throws InvalidObjectException, MetaException {
return null;
}
@Override
- public List<String> addCheckConstraints(List<SQLCheckConstraint> nns)
+ public List<SQLCheckConstraint> addCheckConstraints(List<SQLCheckConstraint> nns)
throws InvalidObjectException, MetaException {
return null;
}
diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/cache/TestCachedStoreUpdateUsingEvents.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/cache/TestCachedStoreUpdateUsingEvents.java
index 8d50b4b..d32dc00 100644
--- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/cache/TestCachedStoreUpdateUsingEvents.java
+++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/cache/TestCachedStoreUpdateUsingEvents.java
@@ -20,7 +20,6 @@ package org.apache.hadoop.hive.metastore.cache;
import java.util.*;
import com.google.common.collect.Lists;
-import org.apache.commons.collections.CollectionUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hive.common.StatsSetupConst;
import org.apache.hadoop.hive.common.TableName;
@@ -302,26 +301,25 @@ public class TestCachedStoreUpdateUsingEvents {
CachedStore.prewarm(rawStore);
// Add a db via rawStore
- String dbName = "test_table_ops";
+ String dbName = "Test_Table_Ops";
String dbOwner = "user1";
Database db = createTestDb(dbName, dbOwner);
hmsHandler.create_database(db);
db = rawStore.getDatabase(DEFAULT_CATALOG_NAME, dbName);
// Add a table via rawStore
- String parentTableName = "ftbl";
- String tblName = "tbl";
+ String parentTableName = "Ptbl";
+ String tblName = "Tbl";
String tblOwner = "user1";
- FieldSchema col1 = new FieldSchema("col1", "int", "integer column");
- FieldSchema col2 = new FieldSchema("col2", "string", "string column");
- FieldSchema col3 = new FieldSchema("col3", "int", "integer column");
- List<FieldSchema> cols = new ArrayList<FieldSchema>();
+ FieldSchema col1 = new FieldSchema("Col1", "int", "integer column");
+ FieldSchema col2 = new FieldSchema("Col2", "string", "string column");
+ FieldSchema col3 = new FieldSchema("Col3", "int", "integer column");
+ List<FieldSchema> cols = new ArrayList<>();
cols.add(col1);
cols.add(col2);
cols.add(col3);
- List<FieldSchema> ptnCols = new ArrayList<FieldSchema>();
- Table parentTable = createTestTbl(dbName, parentTableName, tblOwner, cols, ptnCols);
- Table tbl = createTestTbl(dbName, tblName, tblOwner, cols, ptnCols);
+ Table parentTable = createTestTbl(dbName, parentTableName, tblOwner, cols, null);
+ Table tbl = createTestTbl(dbName, tblName, tblOwner, cols, null);
// Constraints for parent Table
List<SQLPrimaryKey> parentPkBase =
@@ -329,20 +327,20 @@ public class TestCachedStoreUpdateUsingEvents {
// Constraints for table
List<SQLPrimaryKey> pkBase =
- Arrays.asList(new SQLPrimaryKey(dbName, tblName, col1.getName(), 1, "pk1", false, false, false));
+ Arrays.asList(new SQLPrimaryKey(dbName, tblName, col1.getName(), 1, "pK1", false, false, false));
List<SQLUniqueConstraint> ucBase = Arrays.asList(
- new SQLUniqueConstraint(DEFAULT_CATALOG_NAME, dbName, tblName, col1.getName(), 2, "uc1", false, false, false));
+ new SQLUniqueConstraint(DEFAULT_CATALOG_NAME, dbName, tblName, col1.getName(), 2, "uC1", false, false, false));
List<SQLNotNullConstraint> nnBase = Arrays.asList(
- new SQLNotNullConstraint(DEFAULT_CATALOG_NAME, dbName, tblName, col1.getName(), "nn1", false, false, false));
+ new SQLNotNullConstraint(DEFAULT_CATALOG_NAME, dbName, tblName, col1.getName(), "nN1", false, false, false));
List<SQLDefaultConstraint> dcBase = Arrays.asList(
- new SQLDefaultConstraint(DEFAULT_CATALOG_NAME, tbl.getDbName(), tbl.getTableName(), col2.getName(), "1", "dc1",
+ new SQLDefaultConstraint(DEFAULT_CATALOG_NAME, tbl.getDbName(), tbl.getTableName(), col2.getName(), "1", "dC1",
false, false, false));
List<SQLCheckConstraint> ccBase = Arrays.asList(
- new SQLCheckConstraint(DEFAULT_CATALOG_NAME, tbl.getDbName(), tbl.getTableName(), col2.getName(), "1", "cc1",
+ new SQLCheckConstraint(DEFAULT_CATALOG_NAME, tbl.getDbName(), tbl.getTableName(), col2.getName(), "1", "cC1",
false, false, false));
List<SQLForeignKey> fkBase = Arrays.asList(
new SQLForeignKey(parentPkBase.get(0).getTable_db(), parentPkBase.get(0).getTable_name(),
- parentPkBase.get(0).getColumn_name(), dbName, tblName, col3.getName(), 2, 1, 2, "fk1",
+ parentPkBase.get(0).getColumn_name(), dbName, tblName, col3.getName(), 2, 1, 2, "fK1",
parentPkBase.get(0).getPk_name(), false, false, false));
// Create table and parent table
@@ -386,18 +384,10 @@ public class TestCachedStoreUpdateUsingEvents {
hmsHandler.drop_constraint(dropConstraintRequest);
// Validate cache store constraint is dropped
- Assert
- .assertTrue(CollectionUtils.isEmpty(sharedCache.listCachedPrimaryKeys(DEFAULT_CATALOG_NAME, dbName, tblName)));
- Assert.assertTrue(
- CollectionUtils.isEmpty(sharedCache.listCachedNotNullConstraints(DEFAULT_CATALOG_NAME, dbName, tblName)));
- Assert.assertTrue(
- CollectionUtils.isEmpty(sharedCache.listCachedUniqueConstraint(DEFAULT_CATALOG_NAME, dbName, tblName)));
- Assert.assertTrue(
- CollectionUtils.isEmpty(sharedCache.listCachedDefaultConstraint(DEFAULT_CATALOG_NAME, dbName, tblName)));
- Assert.assertTrue(
- CollectionUtils.isEmpty(sharedCache.listCachedCheckConstraint(DEFAULT_CATALOG_NAME, dbName, tblName)));
- Assert.assertTrue(
- CollectionUtils.isEmpty(sharedCache.listCachedForeignKeys(DEFAULT_CATALOG_NAME, dbName, tblName, null, null)));
+ assertRawStoreAndCachedStoreConstraint(DEFAULT_CATALOG_NAME, dbName, tblName);
+
+ // Validate cache store constraint is dropped
+ assertRawStoreAndCachedStoreConstraint(DEFAULT_CATALOG_NAME, dbName, parentTableName);
// Adding keys back
hmsHandler.add_primary_key(new AddPrimaryKeyRequest(parentPkBase));
@@ -411,6 +401,9 @@ public class TestCachedStoreUpdateUsingEvents {
// Validating constraint values from Cache with rawStore
assertRawStoreAndCachedStoreConstraint(DEFAULT_CATALOG_NAME, dbName, tblName);
+ // Validating constraint values from Cache with rawStore
+ assertRawStoreAndCachedStoreConstraint(DEFAULT_CATALOG_NAME, dbName, parentTableName);
+
sharedCache.getDatabaseCache().clear();
sharedCache.clearTableCache();
sharedCache.getSdCache().clear();
@@ -419,18 +412,14 @@ public class TestCachedStoreUpdateUsingEvents {
public void assertRawStoreAndCachedStoreConstraint(String catName, String dbName, String tblName)
throws MetaException, NoSuchObjectException {
SQLAllTableConstraints rawStoreConstraints = rawStore.getAllTableConstraints(catName, dbName, tblName);
- List<SQLPrimaryKey> primaryKeys = sharedCache.listCachedPrimaryKeys(catName, dbName, tblName);
- List<SQLNotNullConstraint> notNullConstraints = sharedCache.listCachedNotNullConstraints(catName, dbName, tblName);
- List<SQLUniqueConstraint> uniqueConstraints = sharedCache.listCachedUniqueConstraint(catName, dbName, tblName);
- List<SQLDefaultConstraint> defaultConstraints = sharedCache.listCachedDefaultConstraint(catName, dbName, tblName);
- List<SQLCheckConstraint> checkConstraints = sharedCache.listCachedCheckConstraint(catName, dbName, tblName);
- List<SQLForeignKey> foreignKeys = sharedCache.listCachedForeignKeys(catName, dbName, tblName, null, null);
- Assert.assertEquals(rawStoreConstraints.getPrimaryKeys(), primaryKeys);
- Assert.assertEquals(rawStoreConstraints.getNotNullConstraints(), notNullConstraints);
- Assert.assertEquals(rawStoreConstraints.getUniqueConstraints(), uniqueConstraints);
- Assert.assertEquals(rawStoreConstraints.getDefaultConstraints(), defaultConstraints);
- Assert.assertEquals(rawStoreConstraints.getCheckConstraints(), checkConstraints);
- Assert.assertEquals(rawStoreConstraints.getForeignKeys(), foreignKeys);
+ SQLAllTableConstraints cachedStoreConstraints = new SQLAllTableConstraints();
+ cachedStoreConstraints.setPrimaryKeys(sharedCache.listCachedPrimaryKeys(catName, dbName, tblName));
+ cachedStoreConstraints.setForeignKeys(sharedCache.listCachedForeignKeys(catName, dbName, tblName, null, null));
+ cachedStoreConstraints.setNotNullConstraints(sharedCache.listCachedNotNullConstraints(catName, dbName, tblName));
+ cachedStoreConstraints.setDefaultConstraints(sharedCache.listCachedDefaultConstraint(catName, dbName, tblName));
+ cachedStoreConstraints.setCheckConstraints(sharedCache.listCachedCheckConstraint(catName, dbName, tblName));
+ cachedStoreConstraints.setUniqueConstraints(sharedCache.listCachedUniqueConstraint(catName, dbName, tblName));
+ Assert.assertEquals(rawStoreConstraints, cachedStoreConstraints);
}
@Test
@@ -443,7 +432,7 @@ public class TestCachedStoreUpdateUsingEvents {
CachedStore.prewarm(rawStore);
// Add a db via rawStore
- String dbName = "test_partition_ops";
+ String dbName = "Test_Partition_ops";
String dbOwner = "user1";
Database db = createTestDb(dbName, dbOwner);
hmsHandler.create_database(db);
diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
index a159db8..5c264a0 100644
--- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
+++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
@@ -78,6 +78,7 @@ import com.google.common.base.Suppliers;
import com.google.common.collect.Lists;
import org.apache.commons.cli.OptionBuilder;
+import org.apache.commons.collections.CollectionUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
@@ -2139,12 +2140,13 @@ public class HiveMetaStore extends ThriftHiveMetastore {
ColumnStatistics colStats = null;
Table tbl = req.getTable();
EnvironmentContext envContext = req.getEnvContext();
- List<SQLPrimaryKey> primaryKeys = req.getPrimaryKeys();
- List<SQLForeignKey> foreignKeys = req.getForeignKeys();
- List<SQLUniqueConstraint> uniqueConstraints = req.getUniqueConstraints();
- List<SQLNotNullConstraint> notNullConstraints = req.getNotNullConstraints();
- List<SQLDefaultConstraint> defaultConstraints = req.getDefaultConstraints();
- List<SQLCheckConstraint> checkConstraints = req.getCheckConstraints();
+ SQLAllTableConstraints constraints = new SQLAllTableConstraints();
+ constraints.setPrimaryKeys(req.getPrimaryKeys());
+ constraints.setForeignKeys(req.getForeignKeys());
+ constraints.setUniqueConstraints(req.getUniqueConstraints());
+ constraints.setDefaultConstraints(req.getDefaultConstraints());
+ constraints.setCheckConstraints(req.getCheckConstraints());
+ constraints.setNotNullConstraints(req.getNotNullConstraints());
List<String> processorCapabilities = req.getProcessorCapabilities();
String processorId = req.getProcessorIdentifier();
@@ -2255,121 +2257,62 @@ public class HiveMetaStore extends ThriftHiveMetastore {
tbl.putToParameters(hive_metastoreConstants.DDL_TIME, Long.toString(time));
}
- if (primaryKeys == null && foreignKeys == null
- && uniqueConstraints == null && notNullConstraints == null && defaultConstraints == null
- && checkConstraints == null) {
+ if (CollectionUtils.isEmpty(constraints.getPrimaryKeys()) && CollectionUtils.isEmpty(constraints.getForeignKeys())
+ && CollectionUtils.isEmpty(constraints.getUniqueConstraints())&& CollectionUtils.isEmpty(constraints.getNotNullConstraints())&& CollectionUtils.isEmpty(constraints.getDefaultConstraints())
+ && CollectionUtils.isEmpty(constraints.getCheckConstraints())) {
ms.createTable(tbl);
} else {
+ final String catName = tbl.getCatName();
// Check that constraints have catalog name properly set first
- if (primaryKeys != null && !primaryKeys.isEmpty() && !primaryKeys.get(0).isSetCatName()) {
- for (SQLPrimaryKey pkcol : primaryKeys) pkcol.setCatName(tbl.getCatName());
+ if (CollectionUtils.isNotEmpty(constraints.getPrimaryKeys()) && !constraints.getPrimaryKeys().get(0).isSetCatName()) {
+ constraints.getPrimaryKeys().forEach(constraint -> constraint.setCatName(catName));
}
- if (foreignKeys != null && !foreignKeys.isEmpty() && !foreignKeys.get(0).isSetCatName()) {
- for (SQLForeignKey fkcol : foreignKeys) fkcol.setCatName(tbl.getCatName());
+ if (CollectionUtils.isNotEmpty(constraints.getForeignKeys()) && !constraints.getForeignKeys().get(0).isSetCatName()) {
+ constraints.getForeignKeys().forEach(constraint -> constraint.setCatName(catName));
}
- if (uniqueConstraints != null && !uniqueConstraints.isEmpty() && !uniqueConstraints.get(0).isSetCatName()) {
- for (SQLUniqueConstraint uccol : uniqueConstraints) uccol.setCatName(tbl.getCatName());
+ if (CollectionUtils.isNotEmpty(constraints.getUniqueConstraints()) && !constraints.getUniqueConstraints().get(0).isSetCatName()) {
+ constraints.getUniqueConstraints().forEach(constraint -> constraint.setCatName(catName));
}
- if (notNullConstraints != null && !notNullConstraints.isEmpty() && !notNullConstraints.get(0).isSetCatName()) {
- for (SQLNotNullConstraint nncol : notNullConstraints) nncol.setCatName(tbl.getCatName());
+ if (CollectionUtils.isNotEmpty(constraints.getNotNullConstraints()) && !constraints.getNotNullConstraints().get(0).isSetCatName()) {
+ constraints.getNotNullConstraints().forEach(constraint -> constraint.setCatName(catName));
}
- if (defaultConstraints != null && !defaultConstraints.isEmpty() && !defaultConstraints.get(0).isSetCatName()) {
- for (SQLDefaultConstraint dccol : defaultConstraints) dccol.setCatName(tbl.getCatName());
+ if (CollectionUtils.isNotEmpty(constraints.getDefaultConstraints()) && !constraints.getDefaultConstraints().get(0).isSetCatName()) {
+ constraints.getDefaultConstraints().forEach(constraint -> constraint.setCatName(catName));
}
- if (checkConstraints != null && !checkConstraints.isEmpty() && !checkConstraints.get(0).isSetCatName()) {
- for (SQLCheckConstraint cccol : checkConstraints) cccol.setCatName(tbl.getCatName());
+ if (CollectionUtils.isNotEmpty(constraints.getCheckConstraints()) && !constraints.getCheckConstraints().get(0).isSetCatName()) {
+ constraints.getCheckConstraints().forEach(constraint -> constraint.setCatName(catName));
}
// Set constraint name if null before sending to listener
- List<String> constraintNames = ms.createTableWithConstraints(tbl, primaryKeys, foreignKeys,
- uniqueConstraints, notNullConstraints, defaultConstraints, checkConstraints);
- int primaryKeySize = 0;
- if (primaryKeys != null) {
- primaryKeySize = primaryKeys.size();
- for (int i = 0; i < primaryKeys.size(); i++) {
- if (primaryKeys.get(i).getPk_name() == null) {
- primaryKeys.get(i).setPk_name(constraintNames.get(i));
- }
- if (!primaryKeys.get(i).isSetCatName()) primaryKeys.get(i).setCatName(tbl.getCatName());
- }
- }
- int foreignKeySize = 0;
- if (foreignKeys != null) {
- foreignKeySize = foreignKeys.size();
- for (int i = 0; i < foreignKeySize; i++) {
- if (foreignKeys.get(i).getFk_name() == null) {
- foreignKeys.get(i).setFk_name(constraintNames.get(primaryKeySize + i));
- }
- if (!foreignKeys.get(i).isSetCatName()) foreignKeys.get(i).setCatName(tbl.getCatName());
- }
- }
- int uniqueConstraintSize = 0;
- if (uniqueConstraints != null) {
- uniqueConstraintSize = uniqueConstraints.size();
- for (int i = 0; i < uniqueConstraintSize; i++) {
- if (uniqueConstraints.get(i).getUk_name() == null) {
- uniqueConstraints.get(i).setUk_name(constraintNames.get(primaryKeySize + foreignKeySize + i));
- }
- if (!uniqueConstraints.get(i).isSetCatName()) uniqueConstraints.get(i).setCatName(tbl.getCatName());
- }
- }
- int notNullConstraintSize = 0;
- if (notNullConstraints != null) {
- for (int i = 0; i < notNullConstraints.size(); i++) {
- if (notNullConstraints.get(i).getNn_name() == null) {
- notNullConstraints.get(i).setNn_name(constraintNames.get(primaryKeySize + foreignKeySize + uniqueConstraintSize + i));
- }
- if (!notNullConstraints.get(i).isSetCatName()) notNullConstraints.get(i).setCatName(tbl.getCatName());
- }
- }
- int defaultConstraintSize = 0;
- if (defaultConstraints!= null) {
- for (int i = 0; i < defaultConstraints.size(); i++) {
- if (defaultConstraints.get(i).getDc_name() == null) {
- defaultConstraints.get(i).setDc_name(constraintNames.get(primaryKeySize + foreignKeySize
- + uniqueConstraintSize + notNullConstraintSize + i));
- }
- if (!defaultConstraints.get(i).isSetCatName()) defaultConstraints.get(i).setCatName(tbl.getCatName());
- }
- }
- if (checkConstraints!= null) {
- for (int i = 0; i < checkConstraints.size(); i++) {
- if (checkConstraints.get(i).getDc_name() == null) {
- checkConstraints.get(i).setDc_name(constraintNames.get(primaryKeySize + foreignKeySize
- + uniqueConstraintSize
- + defaultConstraintSize
- + notNullConstraintSize + i));
- }
- if (!checkConstraints.get(i).isSetCatName()) checkConstraints.get(i).setCatName(tbl.getCatName());
- }
- }
+ constraints = ms.createTableWithConstraints(tbl, constraints);
+
}
if (!transactionalListeners.isEmpty()) {
transactionalListenerResponses = MetaStoreListenerNotifier.notifyEvent(transactionalListeners,
EventType.CREATE_TABLE, new CreateTableEvent(tbl, true, this, isReplicated), envContext);
- if (primaryKeys != null && !primaryKeys.isEmpty()) {
+ if (CollectionUtils.isNotEmpty(constraints.getPrimaryKeys())) {
MetaStoreListenerNotifier.notifyEvent(transactionalListeners, EventType.ADD_PRIMARYKEY,
- new AddPrimaryKeyEvent(primaryKeys, true, this), envContext);
+ new AddPrimaryKeyEvent(constraints.getPrimaryKeys(), true, this), envContext);
}
- if (foreignKeys != null && !foreignKeys.isEmpty()) {
+ if (CollectionUtils.isNotEmpty(constraints.getForeignKeys())) {
MetaStoreListenerNotifier.notifyEvent(transactionalListeners, EventType.ADD_FOREIGNKEY,
- new AddForeignKeyEvent(foreignKeys, true, this), envContext);
+ new AddForeignKeyEvent(constraints.getForeignKeys(), true, this), envContext);
}
- if (uniqueConstraints != null && !uniqueConstraints.isEmpty()) {
+ if (CollectionUtils.isNotEmpty(constraints.getUniqueConstraints())) {
MetaStoreListenerNotifier.notifyEvent(transactionalListeners, EventType.ADD_UNIQUECONSTRAINT,
- new AddUniqueConstraintEvent(uniqueConstraints, true, this), envContext);
+ new AddUniqueConstraintEvent(constraints.getUniqueConstraints(), true, this), envContext);
}
- if (notNullConstraints != null && !notNullConstraints.isEmpty()) {
+ if (CollectionUtils.isNotEmpty(constraints.getNotNullConstraints())) {
MetaStoreListenerNotifier.notifyEvent(transactionalListeners, EventType.ADD_NOTNULLCONSTRAINT,
- new AddNotNullConstraintEvent(notNullConstraints, true, this), envContext);
+ new AddNotNullConstraintEvent(constraints.getNotNullConstraints(), true, this), envContext);
}
- if (checkConstraints != null && !checkConstraints.isEmpty()) {
+ if (CollectionUtils.isNotEmpty(constraints.getCheckConstraints())) {
MetaStoreListenerNotifier.notifyEvent(transactionalListeners, EventType.ADD_CHECKCONSTRAINT,
- new AddCheckConstraintEvent(checkConstraints, true, this), envContext);
+ new AddCheckConstraintEvent(constraints.getCheckConstraints(), true, this), envContext);
}
- if (defaultConstraints != null && !defaultConstraints.isEmpty()) {
+ if (CollectionUtils.isNotEmpty(constraints.getDefaultConstraints())) {
MetaStoreListenerNotifier.notifyEvent(transactionalListeners, EventType.ADD_DEFAULTCONSTRAINT,
- new AddDefaultConstraintEvent(defaultConstraints, true, this), envContext);
+ new AddDefaultConstraintEvent(constraints.getDefaultConstraints(), true, this), envContext);
}
}
@@ -2386,29 +2329,29 @@ public class HiveMetaStore extends ThriftHiveMetastore {
MetaStoreListenerNotifier.notifyEvent(listeners, EventType.CREATE_TABLE,
new CreateTableEvent(tbl, success, this, isReplicated), envContext,
transactionalListenerResponses, ms);
- if (primaryKeys != null && !primaryKeys.isEmpty()) {
+ if (CollectionUtils.isNotEmpty(constraints.getPrimaryKeys())) {
MetaStoreListenerNotifier.notifyEvent(listeners, EventType.ADD_PRIMARYKEY,
- new AddPrimaryKeyEvent(primaryKeys, success, this), envContext);
+ new AddPrimaryKeyEvent(constraints.getPrimaryKeys(), success, this), envContext);
}
- if (foreignKeys != null && !foreignKeys.isEmpty()) {
+ if (CollectionUtils.isNotEmpty(constraints.getForeignKeys())) {
MetaStoreListenerNotifier.notifyEvent(listeners, EventType.ADD_FOREIGNKEY,
- new AddForeignKeyEvent(foreignKeys, success, this), envContext);
+ new AddForeignKeyEvent(constraints.getForeignKeys(), success, this), envContext);
}
- if (uniqueConstraints != null && !uniqueConstraints.isEmpty()) {
+ if (CollectionUtils.isNotEmpty(constraints.getUniqueConstraints())) {
MetaStoreListenerNotifier.notifyEvent(listeners, EventType.ADD_UNIQUECONSTRAINT,
- new AddUniqueConstraintEvent(uniqueConstraints, success, this), envContext);
+ new AddUniqueConstraintEvent(constraints.getUniqueConstraints(), success, this), envContext);
}
- if (notNullConstraints != null && !notNullConstraints.isEmpty()) {
+ if (CollectionUtils.isNotEmpty(constraints.getNotNullConstraints())) {
MetaStoreListenerNotifier.notifyEvent(listeners, EventType.ADD_NOTNULLCONSTRAINT,
- new AddNotNullConstraintEvent(notNullConstraints, success, this), envContext);
+ new AddNotNullConstraintEvent(constraints.getNotNullConstraints(), success, this), envContext);
}
- if (defaultConstraints != null && !defaultConstraints.isEmpty()) {
+ if (CollectionUtils.isNotEmpty(constraints.getDefaultConstraints())) {
MetaStoreListenerNotifier.notifyEvent(listeners, EventType.ADD_DEFAULTCONSTRAINT,
- new AddDefaultConstraintEvent(defaultConstraints, success, this), envContext);
+ new AddDefaultConstraintEvent(constraints.getDefaultConstraints(), success, this), envContext);
}
- if (checkConstraints != null && !checkConstraints.isEmpty()) {
+ if (CollectionUtils.isNotEmpty(constraints.getCheckConstraints())) {
MetaStoreListenerNotifier.notifyEvent(listeners, EventType.ADD_CHECKCONSTRAINT,
- new AddCheckConstraintEvent(checkConstraints, success, this), envContext);
+ new AddCheckConstraintEvent(constraints.getCheckConstraints(), success, this), envContext);
}
}
}
@@ -2574,30 +2517,22 @@ public class HiveMetaStore extends ThriftHiveMetastore {
public void add_primary_key(AddPrimaryKeyRequest req)
throws MetaException, InvalidObjectException {
List<SQLPrimaryKey> primaryKeyCols = req.getPrimaryKeyCols();
- String constraintName = (primaryKeyCols != null && primaryKeyCols.size() > 0) ?
+ String constraintName = (CollectionUtils.isNotEmpty(primaryKeyCols)) ?
primaryKeyCols.get(0).getPk_name() : "null";
startFunction("add_primary_key", ": " + constraintName);
boolean success = false;
Exception ex = null;
- if (!primaryKeyCols.isEmpty() && !primaryKeyCols.get(0).isSetCatName()) {
+ if (CollectionUtils.isNotEmpty(primaryKeyCols) && !primaryKeyCols.get(0).isSetCatName()) {
String defaultCat = getDefaultCatalog(conf);
primaryKeyCols.forEach(pk -> pk.setCatName(defaultCat));
}
RawStore ms = getMS();
try {
ms.openTransaction();
- List<String> constraintNames = ms.addPrimaryKeys(primaryKeyCols);
- // Set primary key name if null before sending to listener
- if (primaryKeyCols != null) {
- for (int i = 0; i < primaryKeyCols.size(); i++) {
- if (primaryKeyCols.get(i).getPk_name() == null) {
- primaryKeyCols.get(i).setPk_name(constraintNames.get(i));
- }
- }
- }
+ List<SQLPrimaryKey> primaryKeys = ms.addPrimaryKeys(primaryKeyCols);
if (transactionalListeners.size() > 0) {
- if (primaryKeyCols != null && primaryKeyCols.size() > 0) {
- AddPrimaryKeyEvent addPrimaryKeyEvent = new AddPrimaryKeyEvent(primaryKeyCols, true, this);
+ if (CollectionUtils.isNotEmpty(primaryKeys)) {
+ AddPrimaryKeyEvent addPrimaryKeyEvent = new AddPrimaryKeyEvent(primaryKeys, true, this);
for (MetaStoreEventListener transactionalListener : transactionalListeners) {
transactionalListener.onAddPrimaryKey(addPrimaryKeyEvent);
}
@@ -2626,31 +2561,23 @@ public class HiveMetaStore extends ThriftHiveMetastore {
@Override
public void add_foreign_key(AddForeignKeyRequest req)
throws MetaException, InvalidObjectException {
- List<SQLForeignKey> foreignKeyCols = req.getForeignKeyCols();
- String constraintName = (foreignKeyCols != null && foreignKeyCols.size() > 0) ?
- foreignKeyCols.get(0).getFk_name() : "null";
+ List<SQLForeignKey> foreignKeys = req.getForeignKeyCols();
+ String constraintName = CollectionUtils.isNotEmpty(foreignKeys) ?
+ foreignKeys.get(0).getFk_name() : "null";
startFunction("add_foreign_key", ": " + constraintName);
boolean success = false;
Exception ex = null;
- if (!foreignKeyCols.isEmpty() && !foreignKeyCols.get(0).isSetCatName()) {
+ if (CollectionUtils.isNotEmpty(foreignKeys) && !foreignKeys.get(0).isSetCatName()) {
String defaultCat = getDefaultCatalog(conf);
- foreignKeyCols.forEach(pk -> pk.setCatName(defaultCat));
+ foreignKeys.forEach(pk -> pk.setCatName(defaultCat));
}
RawStore ms = getMS();
try {
ms.openTransaction();
- List<String> constraintNames = ms.addForeignKeys(foreignKeyCols);
- // Set foreign key name if null before sending to listener
- if (foreignKeyCols != null) {
- for (int i = 0; i < foreignKeyCols.size(); i++) {
- if (foreignKeyCols.get(i).getFk_name() == null) {
- foreignKeyCols.get(i).setFk_name(constraintNames.get(i));
- }
- }
- }
+ foreignKeys = ms.addForeignKeys(foreignKeys);
if (transactionalListeners.size() > 0) {
- if (foreignKeyCols != null && foreignKeyCols.size() > 0) {
- AddForeignKeyEvent addForeignKeyEvent = new AddForeignKeyEvent(foreignKeyCols, true, this);
+ if (CollectionUtils.isNotEmpty(foreignKeys)) {
+ AddForeignKeyEvent addForeignKeyEvent = new AddForeignKeyEvent(foreignKeys, true, this);
for (MetaStoreEventListener transactionalListener : transactionalListeners) {
transactionalListener.onAddForeignKey(addForeignKeyEvent);
}
@@ -2666,9 +2593,9 @@ public class HiveMetaStore extends ThriftHiveMetastore {
} finally {
if (!success) {
ms.rollbackTransaction();
- } else if (foreignKeyCols != null && foreignKeyCols.size() > 0) {
+ } else if (CollectionUtils.isNotEmpty(foreignKeys)) {
for (MetaStoreEventListener listener : listeners) {
- AddForeignKeyEvent addForeignKeyEvent = new AddForeignKeyEvent(foreignKeyCols, true, this);
+ AddForeignKeyEvent addForeignKeyEvent = new AddForeignKeyEvent(foreignKeys, true, this);
listener.onAddForeignKey(addForeignKeyEvent);
}
}
@@ -2679,31 +2606,23 @@ public class HiveMetaStore extends ThriftHiveMetastore {
@Override
public void add_unique_constraint(AddUniqueConstraintRequest req)
throws MetaException, InvalidObjectException {
- List<SQLUniqueConstraint> uniqueConstraintCols = req.getUniqueConstraintCols();
- String constraintName = (uniqueConstraintCols != null && uniqueConstraintCols.size() > 0) ?
- uniqueConstraintCols.get(0).getUk_name() : "null";
+ List<SQLUniqueConstraint> uniqueConstraints = req.getUniqueConstraintCols();
+ String constraintName = (uniqueConstraints != null && uniqueConstraints.size() > 0) ?
+ uniqueConstraints.get(0).getUk_name() : "null";
startFunction("add_unique_constraint", ": " + constraintName);
boolean success = false;
Exception ex = null;
- if (!uniqueConstraintCols.isEmpty() && !uniqueConstraintCols.get(0).isSetCatName()) {
+ if (!uniqueConstraints.isEmpty() && !uniqueConstraints.get(0).isSetCatName()) {
String defaultCat = getDefaultCatalog(conf);
- uniqueConstraintCols.forEach(pk -> pk.setCatName(defaultCat));
+ uniqueConstraints.forEach(pk -> pk.setCatName(defaultCat));
}
RawStore ms = getMS();
try {
ms.openTransaction();
- List<String> constraintNames = ms.addUniqueConstraints(uniqueConstraintCols);
- // Set unique constraint name if null before sending to listener
- if (uniqueConstraintCols != null) {
- for (int i = 0; i < uniqueConstraintCols.size(); i++) {
- if (uniqueConstraintCols.get(i).getUk_name() == null) {
- uniqueConstraintCols.get(i).setUk_name(constraintNames.get(i));
- }
- }
- }
+ uniqueConstraints = ms.addUniqueConstraints(uniqueConstraints);
if (transactionalListeners.size() > 0) {
- if (uniqueConstraintCols != null && uniqueConstraintCols.size() > 0) {
- AddUniqueConstraintEvent addUniqueConstraintEvent = new AddUniqueConstraintEvent(uniqueConstraintCols, true, this);
+ if (CollectionUtils.isNotEmpty(uniqueConstraints)) {
+ AddUniqueConstraintEvent addUniqueConstraintEvent = new AddUniqueConstraintEvent(uniqueConstraints, true, this);
for (MetaStoreEventListener transactionalListener : transactionalListeners) {
transactionalListener.onAddUniqueConstraint(addUniqueConstraintEvent);
}
@@ -2719,9 +2638,9 @@ public class HiveMetaStore extends ThriftHiveMetastore {
} finally {
if (!success) {
ms.rollbackTransaction();
- } else if (uniqueConstraintCols != null && uniqueConstraintCols.size() > 0) {
+ } else if (CollectionUtils.isNotEmpty(uniqueConstraints)) {
for (MetaStoreEventListener listener : listeners) {
- AddUniqueConstraintEvent addUniqueConstraintEvent = new AddUniqueConstraintEvent(uniqueConstraintCols, true, this);
+ AddUniqueConstraintEvent addUniqueConstraintEvent = new AddUniqueConstraintEvent(uniqueConstraints, true, this);
listener.onAddUniqueConstraint(addUniqueConstraintEvent);
}
}
@@ -2732,31 +2651,24 @@ public class HiveMetaStore extends ThriftHiveMetastore {
@Override
public void add_not_null_constraint(AddNotNullConstraintRequest req)
throws MetaException, InvalidObjectException {
- List<SQLNotNullConstraint> notNullConstraintCols = req.getNotNullConstraintCols();
- String constraintName = (notNullConstraintCols != null && notNullConstraintCols.size() > 0) ?
- notNullConstraintCols.get(0).getNn_name() : "null";
+ List<SQLNotNullConstraint> notNullConstraints = req.getNotNullConstraintCols();
+ String constraintName = (notNullConstraints != null && notNullConstraints.size() > 0) ?
+ notNullConstraints.get(0).getNn_name() : "null";
startFunction("add_not_null_constraint", ": " + constraintName);
boolean success = false;
Exception ex = null;
- if (!notNullConstraintCols.isEmpty() && !notNullConstraintCols.get(0).isSetCatName()) {
+ if (!notNullConstraints.isEmpty() && !notNullConstraints.get(0).isSetCatName()) {
String defaultCat = getDefaultCatalog(conf);
- notNullConstraintCols.forEach(pk -> pk.setCatName(defaultCat));
+ notNullConstraints.forEach(pk -> pk.setCatName(defaultCat));
}
RawStore ms = getMS();
try {
ms.openTransaction();
- List<String> constraintNames = ms.addNotNullConstraints(notNullConstraintCols);
- // Set not null constraint name if null before sending to listener
- if (notNullConstraintCols != null) {
- for (int i = 0; i < notNullConstraintCols.size(); i++) {
- if (notNullConstraintCols.get(i).getNn_name() == null) {
- notNullConstraintCols.get(i).setNn_name(constraintNames.get(i));
- }
- }
- }
+ notNullConstraints = ms.addNotNullConstraints(notNullConstraints);
+
if (transactionalListeners.size() > 0) {
- if (notNullConstraintCols != null && notNullConstraintCols.size() > 0) {
- AddNotNullConstraintEvent addNotNullConstraintEvent = new AddNotNullConstraintEvent(notNullConstraintCols, true, this);
+ if (CollectionUtils.isNotEmpty(notNullConstraints)) {
+ AddNotNullConstraintEvent addNotNullConstraintEvent = new AddNotNullConstraintEvent(notNullConstraints, true, this);
for (MetaStoreEventListener transactionalListener : transactionalListeners) {
transactionalListener.onAddNotNullConstraint(addNotNullConstraintEvent);
}
@@ -2772,9 +2684,9 @@ public class HiveMetaStore extends ThriftHiveMetastore {
} finally {
if (!success) {
ms.rollbackTransaction();
- } else if (notNullConstraintCols != null && notNullConstraintCols.size() > 0) {
+ } else if (CollectionUtils.isNotEmpty(notNullConstraints)) {
for (MetaStoreEventListener listener : listeners) {
- AddNotNullConstraintEvent addNotNullConstraintEvent = new AddNotNullConstraintEvent(notNullConstraintCols, true, this);
+ AddNotNullConstraintEvent addNotNullConstraintEvent = new AddNotNullConstraintEvent(notNullConstraints, true, this);
listener.onAddNotNullConstraint(addNotNullConstraintEvent);
}
}
@@ -2783,33 +2695,25 @@ public class HiveMetaStore extends ThriftHiveMetastore {
}
@Override
- public void add_default_constraint(AddDefaultConstraintRequest req)
- throws MetaException, InvalidObjectException {
- List<SQLDefaultConstraint> defaultConstraintCols= req.getDefaultConstraintCols();
- String constraintName = (defaultConstraintCols != null && defaultConstraintCols.size() > 0) ?
- defaultConstraintCols.get(0).getDc_name() : "null";
+ public void add_default_constraint(AddDefaultConstraintRequest req) throws MetaException, InvalidObjectException {
+ List<SQLDefaultConstraint> defaultConstraints = req.getDefaultConstraintCols();
+ String constraintName =
+ CollectionUtils.isNotEmpty(defaultConstraints) ? defaultConstraints.get(0).getDc_name() : "null";
startFunction("add_default_constraint", ": " + constraintName);
boolean success = false;
Exception ex = null;
- if (!defaultConstraintCols.isEmpty() && !defaultConstraintCols.get(0).isSetCatName()) {
+ if (!defaultConstraints.isEmpty() && !defaultConstraints.get(0).isSetCatName()) {
String defaultCat = getDefaultCatalog(conf);
- defaultConstraintCols.forEach(pk -> pk.setCatName(defaultCat));
+ defaultConstraints.forEach(pk -> pk.setCatName(defaultCat));
}
RawStore ms = getMS();
try {
ms.openTransaction();
- List<String> constraintNames = ms.addDefaultConstraints(defaultConstraintCols);
- // Set not null constraint name if null before sending to listener
- if (defaultConstraintCols != null) {
- for (int i = 0; i < defaultConstraintCols.size(); i++) {
- if (defaultConstraintCols.get(i).getDc_name() == null) {
- defaultConstraintCols.get(i).setDc_name(constraintNames.get(i));
- }
- }
- }
+ defaultConstraints = ms.addDefaultConstraints(defaultConstraints);
if (transactionalListeners.size() > 0) {
- if (defaultConstraintCols != null && defaultConstraintCols.size() > 0) {
- AddDefaultConstraintEvent addDefaultConstraintEvent = new AddDefaultConstraintEvent(defaultConstraintCols, true, this);
+ if (CollectionUtils.isNotEmpty(defaultConstraints)) {
+ AddDefaultConstraintEvent addDefaultConstraintEvent =
+ new AddDefaultConstraintEvent(defaultConstraints, true, this);
for (MetaStoreEventListener transactionalListener : transactionalListeners) {
transactionalListener.onAddDefaultConstraint(addDefaultConstraintEvent);
}
@@ -2825,9 +2729,10 @@ public class HiveMetaStore extends ThriftHiveMetastore {
} finally {
if (!success) {
ms.rollbackTransaction();
- } else if (defaultConstraintCols != null && defaultConstraintCols.size() > 0) {
+ } else if (CollectionUtils.isNotEmpty(defaultConstraints)) {
for (MetaStoreEventListener listener : listeners) {
- AddDefaultConstraintEvent addDefaultConstraintEvent = new AddDefaultConstraintEvent(defaultConstraintCols, true, this);
+ AddDefaultConstraintEvent addDefaultConstraintEvent =
+ new AddDefaultConstraintEvent(defaultConstraints, true, this);
listener.onAddDefaultConstraint(addDefaultConstraintEvent);
}
}
@@ -2838,30 +2743,23 @@ public class HiveMetaStore extends ThriftHiveMetastore {
@Override
public void add_check_constraint(AddCheckConstraintRequest req)
throws MetaException, InvalidObjectException {
- List<SQLCheckConstraint> checkConstraintCols= req.getCheckConstraintCols();
- String constraintName = (checkConstraintCols != null && checkConstraintCols.size() > 0) ?
- checkConstraintCols.get(0).getDc_name() : "null";
+ List<SQLCheckConstraint> checkConstraints= req.getCheckConstraintCols();
+ String constraintName = CollectionUtils.isNotEmpty(checkConstraints) ?
+ checkConstraints.get(0).getDc_name() : "null";
startFunction("add_check_constraint", ": " + constraintName);
boolean success = false;
Exception ex = null;
- if (!checkConstraintCols.isEmpty() && !checkConstraintCols.get(0).isSetCatName()) {
+ if (!checkConstraints.isEmpty() && !checkConstraints.get(0).isSetCatName()) {
String defaultCat = getDefaultCatalog(conf);
- checkConstraintCols.forEach(pk -> pk.setCatName(defaultCat));
+ checkConstraints.forEach(pk -> pk.setCatName(defaultCat));
}
RawStore ms = getMS();
try {
ms.openTransaction();
- List<String> constraintNames = ms.addCheckConstraints(checkConstraintCols);
- if (checkConstraintCols != null) {
- for (int i = 0; i < checkConstraintCols.size(); i++) {
- if (checkConstraintCols.get(i).getDc_name() == null) {
- checkConstraintCols.get(i).setDc_name(constraintNames.get(i));
- }
- }
- }
+ checkConstraints = ms.addCheckConstraints(checkConstraints);
if (transactionalListeners.size() > 0) {
- if (checkConstraintCols != null && checkConstraintCols.size() > 0) {
- AddCheckConstraintEvent addcheckConstraintEvent = new AddCheckConstraintEvent(checkConstraintCols, true, this);
+ if (CollectionUtils.isNotEmpty(checkConstraints)) {
+ AddCheckConstraintEvent addcheckConstraintEvent = new AddCheckConstraintEvent(checkConstraints, true, this);
for (MetaStoreEventListener transactionalListener : transactionalListeners) {
transactionalListener.onAddCheckConstraint(addcheckConstraintEvent);
}
@@ -2877,9 +2775,9 @@ public class HiveMetaStore extends ThriftHiveMetastore {
} finally {
if (!success) {
ms.rollbackTransaction();
- } else if (checkConstraintCols != null && checkConstraintCols.size() > 0) {
+ } else if (CollectionUtils.isNotEmpty(checkConstraints)) {
for (MetaStoreEventListener listener : listeners) {
- AddCheckConstraintEvent addCheckConstraintEvent = new AddCheckConstraintEvent(checkConstraintCols, true, this);
+ AddCheckConstraintEvent addCheckConstraintEvent = new AddCheckConstraintEvent(checkConstraints, true, this);
listener.onAddCheckConstraint(addCheckConstraintEvent);
}
}
diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java
index 2fd776c..e03c8c3 100644
--- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java
+++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java
@@ -1082,11 +1082,8 @@ public class ObjectStore implements RawStore, Configurable {
}
@Override
- public List<String> createTableWithConstraints(Table tbl,
- List<SQLPrimaryKey> primaryKeys, List<SQLForeignKey> foreignKeys,
- List<SQLUniqueConstraint> uniqueConstraints, List<SQLNotNullConstraint> notNullConstraints,
- List<SQLDefaultConstraint> defaultConstraints, List<SQLCheckConstraint> checkConstraints)
- throws InvalidObjectException, MetaException {
+ public SQLAllTableConstraints createTableWithConstraints(Table tbl, SQLAllTableConstraints constraints)
+ throws InvalidObjectException, MetaException {
boolean success = false;
try {
openTransaction();
@@ -1094,27 +1091,27 @@ public class ObjectStore implements RawStore, Configurable {
// Add constraints.
// We need not do a deep retrieval of the Table Column Descriptor while persisting the
// constraints since this transaction involving create table is not yet committed.
- List<String> constraintNames = new ArrayList<>();
- if (foreignKeys != null) {
- constraintNames.addAll(addForeignKeys(foreignKeys, false, primaryKeys, uniqueConstraints));
+ if (CollectionUtils.isNotEmpty(constraints.getForeignKeys())) {
+ constraints.setForeignKeys(addForeignKeys(constraints.getForeignKeys(), false, constraints.getPrimaryKeys(),
+ constraints.getUniqueConstraints()));
}
- if (primaryKeys != null) {
- constraintNames.addAll(addPrimaryKeys(primaryKeys, false));
+ if (CollectionUtils.isNotEmpty(constraints.getPrimaryKeys())) {
+ constraints.setPrimaryKeys(addPrimaryKeys(constraints.getPrimaryKeys(), false));
}
- if (uniqueConstraints != null) {
- constraintNames.addAll(addUniqueConstraints(uniqueConstraints, false));
+ if (CollectionUtils.isNotEmpty(constraints.getUniqueConstraints())) {
+ constraints.setUniqueConstraints(addUniqueConstraints(constraints.getUniqueConstraints(), false));
}
- if (notNullConstraints != null) {
- constraintNames.addAll(addNotNullConstraints(notNullConstraints, false));
+ if (CollectionUtils.isNotEmpty(constraints.getNotNullConstraints())) {
+ constraints.setNotNullConstraints(addNotNullConstraints(constraints.getNotNullConstraints(), false));
}
- if (defaultConstraints != null) {
- constraintNames.addAll(addDefaultConstraints(defaultConstraints, false));
+ if (CollectionUtils.isNotEmpty(constraints.getDefaultConstraints())) {
+ constraints.setDefaultConstraints(addDefaultConstraints(constraints.getDefaultConstraints(), false));
}
- if (checkConstraints != null) {
- constraintNames.addAll(addCheckConstraints(checkConstraints, false));
+ if (CollectionUtils.isNotEmpty(constraints.getCheckConstraints())) {
+ constraints.setCheckConstraints(addCheckConstraints(constraints.getCheckConstraints(), false));
}
success = commitTransaction();
- return constraintNames;
+ return constraints;
} finally {
if (!success) {
rollbackTransaction();
@@ -4992,7 +4989,7 @@ public class ObjectStore implements RawStore, Configurable {
}
@Override
- public List<String> addForeignKeys(
+ public List<SQLForeignKey> addForeignKeys(
List<SQLForeignKey> fks) throws InvalidObjectException, MetaException {
return addForeignKeys(fks, true, null, null);
}
@@ -5068,11 +5065,10 @@ public class ObjectStore implements RawStore, Configurable {
return null;
}
- private List<String> addForeignKeys(List<SQLForeignKey> foreignKeys, boolean retrieveCD,
+ //TODO: clean up this method
+ private List<SQLForeignKey> addForeignKeys(List<SQLForeignKey> foreignKeys, boolean retrieveCD,
List<SQLPrimaryKey> primaryKeys, List<SQLUniqueConstraint> uniqueConstraints)
throws InvalidObjectException, MetaException {
- List<String> fkNames = new ArrayList<>();
-
if (CollectionUtils.isNotEmpty(foreignKeys)) {
List<MConstraint> mpkfks = new ArrayList<>();
String currentConstraintName = null;
@@ -5156,7 +5152,7 @@ public class ObjectStore implements RawStore, Configurable {
StringBuilder fkSignature = new StringBuilder();
StringBuilder referencedKSignature = new StringBuilder();
for (; i < foreignKeys.size(); i++) {
- final SQLForeignKey foreignKey = foreignKeys.get(i);
+ SQLForeignKey foreignKey = foreignKeys.get(i);
final String fkColumnName = normalizeIdentifier(foreignKey.getFkcolumn_name());
int childIntegerIndex = getColumnIndexFromTableColumns(childCD.getCols(), fkColumnName);
if (childIntegerIndex == -1) {
@@ -5201,7 +5197,16 @@ public class ObjectStore implements RawStore, Configurable {
throw new InvalidObjectException("Constraint name already exists: " + fqConstraintName);
}
}
- fkNames.add(currentConstraintName);
+ // Update Column, keys, table, database, catalog name
+ foreignKey.setFk_name(currentConstraintName);
+ foreignKey.setCatName(catName);
+ foreignKey.setFktable_db(fkTableDB);
+ foreignKey.setFktable_name(fkTableName);
+ foreignKey.setPktable_db(pkTableDB);
+ foreignKey.setPktable_name(pkTableName);
+ foreignKey.setFkcolumn_name(fkColumnName);
+ foreignKey.setPkcolumn_name(pkColumnName);
+
Integer updateRule = foreignKey.getUpdate_rule();
Integer deleteRule = foreignKey.getDelete_rule();
int enableValidateRely = (foreignKey.isEnable_cstr() ? 4 : 0) +
@@ -5248,8 +5253,9 @@ public class ObjectStore implements RawStore, Configurable {
referencedKSignature = new StringBuilder();
}
pm.makePersistentAll(mpkfks);
+
}
- return fkNames;
+ return foreignKeys;
}
private static Set<String> generateValidPKsOrUniqueSignatures(List<MFieldSchema> tableCols,
@@ -5304,22 +5310,21 @@ public class ObjectStore implements RawStore, Configurable {
}
@Override
- public List<String> addPrimaryKeys(List<SQLPrimaryKey> pks) throws InvalidObjectException,
+ public List<SQLPrimaryKey> addPrimaryKeys(List<SQLPrimaryKey> pks) throws InvalidObjectException,
MetaException {
return addPrimaryKeys(pks, true);
}
- private List<String> addPrimaryKeys(List<SQLPrimaryKey> pks, boolean retrieveCD) throws InvalidObjectException,
+ private List<SQLPrimaryKey> addPrimaryKeys(List<SQLPrimaryKey> pks, boolean retrieveCD) throws InvalidObjectException,
MetaException {
- List<String> pkNames = new ArrayList<>();
List<MConstraint> mpks = new ArrayList<>();
String constraintName = null;
- for (int i = 0; i < pks.size(); i++) {
- final String catName = normalizeIdentifier(pks.get(i).getCatName());
- final String tableDB = normalizeIdentifier(pks.get(i).getTable_db());
- final String tableName = normalizeIdentifier(pks.get(i).getTable_name());
- final String columnName = normalizeIdentifier(pks.get(i).getColumn_name());
+ for (SQLPrimaryKey pk : pks) {
+ final String catName = normalizeIdentifier(pk.getCatName());
+ final String tableDB = normalizeIdentifier(pk.getTable_db());
+ final String tableName = normalizeIdentifier(pk.getTable_name());
+ final String columnName = normalizeIdentifier(pk.getColumn_name());
// If retrieveCD is false, we do not need to do a deep retrieval of the Table Column Descriptor.
// For instance, this is the case when we are creating the table.
@@ -5345,24 +5350,24 @@ public class ObjectStore implements RawStore, Configurable {
throw new MetaException(" Primary key already exists for: " +
TableName.getQualified(catName, tableDB, tableName));
}
- if (pks.get(i).getPk_name() == null) {
- if (pks.get(i).getKey_seq() == 1) {
+ if (pk.getPk_name() == null) {
+ if (pk.getKey_seq() == 1) {
constraintName = generateConstraintName(parentTable, tableDB, tableName, columnName, "pk");
}
} else {
- constraintName = normalizeIdentifier(pks.get(i).getPk_name());
+ constraintName = normalizeIdentifier(pk.getPk_name());
if (constraintNameAlreadyExists(parentTable, constraintName)) {
String fqConstraintName = String.format("%s.%s.%s", parentTable.getDatabase().getName(),
parentTable.getTableName(), constraintName);
throw new InvalidObjectException("Constraint name already exists: " + fqConstraintName);
}
}
- pkNames.add(constraintName);
- int enableValidateRely = (pks.get(i).isEnable_cstr() ? 4 : 0) +
- (pks.get(i).isValidate_cstr() ? 2 : 0) + (pks.get(i).isRely_cstr() ? 1 : 0);
+
+ int enableValidateRely = (pk.isEnable_cstr() ? 4 : 0) +
+ (pk.isValidate_cstr() ? 2 : 0) + (pk.isRely_cstr() ? 1 : 0);
MConstraint mpk = new MConstraint(
constraintName,
- pks.get(i).getKey_seq(),
+ pk.getKey_seq(),
MConstraint.PRIMARY_KEY_CONSTRAINT,
null,
null,
@@ -5374,28 +5379,35 @@ public class ObjectStore implements RawStore, Configurable {
null,
parentIntegerIndex);
mpks.add(mpk);
+
+ // Add normalized identifier back to result
+ pk.setCatName(catName);
+ pk.setTable_db(tableDB);
+ pk.setTable_name(tableName);
+ pk.setColumn_name(columnName);
+ pk.setPk_name(constraintName);
}
pm.makePersistentAll(mpks);
- return pkNames;
+ return pks;
}
@Override
- public List<String> addUniqueConstraints(List<SQLUniqueConstraint> uks)
+ public List<SQLUniqueConstraint> addUniqueConstraints(List<SQLUniqueConstraint> uks)
throws InvalidObjectException, MetaException {
return addUniqueConstraints(uks, true);
}
- private List<String> addUniqueConstraints(List<SQLUniqueConstraint> uks, boolean retrieveCD)
+ private List<SQLUniqueConstraint> addUniqueConstraints(List<SQLUniqueConstraint> uks, boolean retrieveCD)
throws InvalidObjectException, MetaException {
- List<String> ukNames = new ArrayList<>();
+
List<MConstraint> cstrs = new ArrayList<>();
String constraintName = null;
- for (int i = 0; i < uks.size(); i++) {
- final String catName = normalizeIdentifier(uks.get(i).getCatName());
- final String tableDB = normalizeIdentifier(uks.get(i).getTable_db());
- final String tableName = normalizeIdentifier(uks.get(i).getTable_name());
- final String columnName = normalizeIdentifier(uks.get(i).getColumn_name());
+ for (SQLUniqueConstraint uk : uks) {
+ final String catName = normalizeIdentifier(uk.getCatName());
+ final String tableDB = normalizeIdentifier(uk.getTable_db());
+ final String tableName = normalizeIdentifier(uk.getTable_name());
+ final String columnName = normalizeIdentifier(uk.getColumn_name());
// If retrieveCD is false, we do not need to do a deep retrieval of the Table Column Descriptor.
// For instance, this is the case when we are creating the table.
@@ -5416,25 +5428,25 @@ public class ObjectStore implements RawStore, Configurable {
throw new InvalidObjectException("Parent column not found: " + columnName);
}
}
- if (uks.get(i).getUk_name() == null) {
- if (uks.get(i).getKey_seq() == 1) {
+ if (uk.getUk_name() == null) {
+ if (uk.getKey_seq() == 1) {
constraintName = generateConstraintName(parentTable, tableDB, tableName, columnName, "uk");
}
} else {
- constraintName = normalizeIdentifier(uks.get(i).getUk_name());
+ constraintName = normalizeIdentifier(uk.getUk_name());
if (constraintNameAlreadyExists(parentTable, constraintName)) {
String fqConstraintName = String.format("%s.%s.%s", parentTable.getDatabase().getName(),
parentTable.getTableName(), constraintName);
throw new InvalidObjectException("Constraint name already exists: " + fqConstraintName);
}
}
- ukNames.add(constraintName);
- int enableValidateRely = (uks.get(i).isEnable_cstr() ? 4 : 0) +
- (uks.get(i).isValidate_cstr() ? 2 : 0) + (uks.get(i).isRely_cstr() ? 1 : 0);
+
+ int enableValidateRely = (uk.isEnable_cstr() ? 4 : 0) +
+ (uk.isValidate_cstr() ? 2 : 0) + (uk.isRely_cstr() ? 1 : 0);
MConstraint muk = new MConstraint(
constraintName,
- uks.get(i).getKey_seq(),
+ uk.getKey_seq(),
MConstraint.UNIQUE_CONSTRAINT,
null,
null,
@@ -5446,56 +5458,70 @@ public class ObjectStore implements RawStore, Configurable {
null,
parentIntegerIndex);
cstrs.add(muk);
+
+ // Add normalized identifier back to result
+ uk.setCatName(catName);
+ uk.setTable_db(tableDB);
+ uk.setTable_name(tableName);
+ uk.setColumn_name(columnName);
+ uk.setUk_name(constraintName);
+
}
pm.makePersistentAll(cstrs);
- return ukNames;
+ return uks;
}
@Override
- public List<String> addNotNullConstraints(List<SQLNotNullConstraint> nns)
+ public List<SQLNotNullConstraint> addNotNullConstraints(List<SQLNotNullConstraint> nns)
throws InvalidObjectException, MetaException {
return addNotNullConstraints(nns, true);
}
@Override
- public List<String> addDefaultConstraints(List<SQLDefaultConstraint> nns)
+ public List<SQLDefaultConstraint> addDefaultConstraints(List<SQLDefaultConstraint> nns)
throws InvalidObjectException, MetaException {
return addDefaultConstraints(nns, true);
}
@Override
- public List<String> addCheckConstraints(List<SQLCheckConstraint> nns)
+ public List<SQLCheckConstraint> addCheckConstraints(List<SQLCheckConstraint> nns)
throws InvalidObjectException, MetaException {
return addCheckConstraints(nns, true);
}
- private List<String> addCheckConstraints(List<SQLCheckConstraint> cc, boolean retrieveCD)
+ private List<SQLCheckConstraint> addCheckConstraints(List<SQLCheckConstraint> ccs, boolean retrieveCD)
throws InvalidObjectException, MetaException {
- List<String> nnNames = new ArrayList<>();
List<MConstraint> cstrs = new ArrayList<>();
- for (int i = 0; i < cc.size(); i++) {
- final String catName = normalizeIdentifier(cc.get(i).getCatName());
- final String tableDB = normalizeIdentifier(cc.get(i).getTable_db());
- final String tableName = normalizeIdentifier(cc.get(i).getTable_name());
- final String columnName = cc.get(i).getColumn_name() == null? null
- : normalizeIdentifier(cc.get(i).getColumn_name());
- final String ccName = cc.get(i).getDc_name();
- boolean isEnable = cc.get(i).isEnable_cstr();
- boolean isValidate = cc.get(i).isValidate_cstr();
- boolean isRely = cc.get(i).isRely_cstr();
- String constraintValue = cc.get(i).getCheck_expression();
- addConstraint(catName, tableDB, tableName, columnName, ccName, isEnable, isRely, isValidate,
- MConstraint.CHECK_CONSTRAINT, constraintValue, retrieveCD, nnNames, cstrs);
+ for (SQLCheckConstraint cc: ccs) {
+ final String catName = normalizeIdentifier(cc.getCatName());
+ final String tableDB = normalizeIdentifier(cc.getTable_db());
+ final String tableName = normalizeIdentifier(cc.getTable_name());
+ final String columnName = cc.getColumn_name() == null? null
+ : normalizeIdentifier(cc.getColumn_name());
+ final String ccName = cc.getDc_name();
+ boolean isEnable = cc.isEnable_cstr();
+ boolean isValidate = cc.isValidate_cstr();
+ boolean isRely = cc.isRely_cstr();
+ String constraintValue = cc.getCheck_expression();
+ MConstraint muk = addConstraint(catName, tableDB, tableName, columnName, ccName, isEnable, isRely, isValidate,
+ MConstraint.CHECK_CONSTRAINT, constraintValue, retrieveCD);
+ cstrs.add(muk);
+
+ // Add normalized identifier back to result
+ cc.setCatName(catName);
+ cc.setTable_db(tableDB);
+ cc.setTable_name(tableName);
+ cc.setColumn_name(columnName);
+ cc.setDc_name(muk.getConstraintName());
}
pm.makePersistentAll(cstrs);
- return nnNames;
+ return ccs;
}
- private void addConstraint(String catName, String tableDB, String tableName, String columnName, String ccName,
+ private MConstraint addConstraint(String catName, String tableDB, String tableName, String columnName, String ccName,
boolean isEnable, boolean isRely, boolean isValidate, int constraintType,
- String constraintValue, boolean retrieveCD, List<String> nnNames,
- List<MConstraint> cstrs)
+ String constraintValue, boolean retrieveCD)
throws InvalidObjectException, MetaException {
String constraintName = null;
// If retrieveCD is false, we do not need to do a deep retrieval of the Table Column Descriptor.
@@ -5524,7 +5550,6 @@ public class ObjectStore implements RawStore, Configurable {
throw new InvalidObjectException("Constraint name already exists: " + fqConstraintName);
}
}
- nnNames.add(constraintName);
int enableValidateRely = (isEnable ? 4 : 0) +
(isValidate ? 2 : 0) + (isRely ? 1 : 0);
@@ -5542,42 +5567,50 @@ public class ObjectStore implements RawStore, Configurable {
null,
parentIntegerIndex,
constraintValue);
- cstrs.add(muk);
+
+ return muk;
}
- private List<String> addDefaultConstraints(List<SQLDefaultConstraint> nns, boolean retrieveCD)
+ private List<SQLDefaultConstraint> addDefaultConstraints(List<SQLDefaultConstraint> dcs, boolean retrieveCD)
throws InvalidObjectException, MetaException {
- List<String> nnNames = new ArrayList<>();
+
List<MConstraint> cstrs = new ArrayList<>();
+ for (SQLDefaultConstraint dc : dcs) {
+ final String catName = normalizeIdentifier(dc.getCatName());
+ final String tableDB = normalizeIdentifier(dc.getTable_db());
+ final String tableName = normalizeIdentifier(dc.getTable_name());
+ final String columnName = normalizeIdentifier(dc.getColumn_name());
+ final String dcName = dc.getDc_name();
+ boolean isEnable = dc.isEnable_cstr();
+ boolean isValidate = dc.isValidate_cstr();
+ boolean isRely = dc.isRely_cstr();
+ String constraintValue = dc.getDefault_value();
+ MConstraint muk = addConstraint(catName, tableDB, tableName, columnName, dcName, isEnable, isRely, isValidate,
+ MConstraint.DEFAULT_CONSTRAINT, constraintValue, retrieveCD);
+ cstrs.add(muk);
- for (int i = 0; i < nns.size(); i++) {
- final String catName = normalizeIdentifier(nns.get(i).getCatName());
- final String tableDB = normalizeIdentifier(nns.get(i).getTable_db());
- final String tableName = normalizeIdentifier(nns.get(i).getTable_name());
- final String columnName = normalizeIdentifier(nns.get(i).getColumn_name());
- final String ccName = nns.get(i).getDc_name();
- boolean isEnable = nns.get(i).isEnable_cstr();
- boolean isValidate = nns.get(i).isValidate_cstr();
- boolean isRely = nns.get(i).isRely_cstr();
- String constraintValue = nns.get(i).getDefault_value();
- addConstraint(catName, tableDB, tableName, columnName, ccName, isEnable, isRely, isValidate,
- MConstraint.DEFAULT_CONSTRAINT, constraintValue, retrieveCD, nnNames, cstrs);
+ // Add normalized identifier back to result
+ dc.setCatName(catName);
+ dc.setTable_db(tableDB);
+ dc.setTable_name(tableName);
+ dc.setColumn_name(columnName);
+ dc.setDc_name(muk.getConstraintName());
}
pm.makePersistentAll(cstrs);
- return nnNames;
+ return dcs;
}
- private List<String> addNotNullConstraints(List<SQLNotNullConstraint> nns, boolean retrieveCD)
+ private List<SQLNotNullConstraint> addNotNullConstraints(List<SQLNotNullConstraint> nns, boolean retrieveCD)
throws InvalidObjectException, MetaException {
- List<String> nnNames = new ArrayList<>();
+
List<MConstraint> cstrs = new ArrayList<>();
- String constraintName = null;
+ String constraintName;
- for (int i = 0; i < nns.size(); i++) {
- final String catName = normalizeIdentifier(nns.get(i).getCatName());
- final String tableDB = normalizeIdentifier(nns.get(i).getTable_db());
- final String tableName = normalizeIdentifier(nns.get(i).getTable_name());
- final String columnName = normalizeIdentifier(nns.get(i).getColumn_name());
+ for (SQLNotNullConstraint nn : nns) {
+ final String catName = normalizeIdentifier(nn.getCatName());
+ final String tableDB = normalizeIdentifier(nn.getTable_db());
+ final String tableName = normalizeIdentifier(nn.getTable_name());
+ final String columnName = normalizeIdentifier(nn.getColumn_name());
// If retrieveCD is false, we do not need to do a deep retrieval of the Table Column Descriptor.
// For instance, this is the case when we are creating the table.
@@ -5598,20 +5631,19 @@ public class ObjectStore implements RawStore, Configurable {
throw new InvalidObjectException("Parent column not found: " + columnName);
}
}
- if (nns.get(i).getNn_name() == null) {
+ if (nn.getNn_name() == null) {
constraintName = generateConstraintName(parentTable, tableDB, tableName, columnName, "nn");
} else {
- constraintName = normalizeIdentifier(nns.get(i).getNn_name());
+ constraintName = normalizeIdentifier(nn.getNn_name());
if (constraintNameAlreadyExists(parentTable, constraintName)) {
String fqConstraintName = String.format("%s.%s.%s", parentTable.getDatabase().getName(),
parentTable.getTableName(), constraintName);
throw new InvalidObjectException("Constraint name already exists: " + fqConstraintName);
}
}
- nnNames.add(constraintName);
- int enableValidateRely = (nns.get(i).isEnable_cstr() ? 4 : 0) +
- (nns.get(i).isValidate_cstr() ? 2 : 0) + (nns.get(i).isRely_cstr() ? 1 : 0);
+ int enableValidateRely = (nn.isEnable_cstr() ? 4 : 0) +
+ (nn.isValidate_cstr() ? 2 : 0) + (nn.isRely_cstr() ? 1 : 0);
MConstraint muk = new MConstraint(
constraintName,
1,
@@ -5626,9 +5658,15 @@ public class ObjectStore implements RawStore, Configurable {
null,
parentIntegerIndex);
cstrs.add(muk);
+ // Add normalized identifier back to result
+ nn.setCatName(catName);
+ nn.setTable_db(tableDB);
+ nn.setTable_name(tableName);
+ nn.setColumn_name(columnName);
+ nn.setNn_name(constraintName);
}
pm.makePersistentAll(cstrs);
- return nnNames;
+ return nns;
}
@Override
diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/RawStore.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/RawStore.java
index 09ae83b..c08f6b4 100644
--- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/RawStore.java
+++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/RawStore.java
@@ -1499,20 +1499,12 @@ public interface RawStore extends Configurable {
/**
* Create a table with constraints
* @param tbl table definition
- * @param primaryKeys primary key definition, or null
- * @param foreignKeys foreign key definition, or null
- * @param uniqueConstraints unique constraints definition, or null
- * @param notNullConstraints not null constraints definition, or null
- * @param defaultConstraints default values definition, or null
+ * @param constraints wrapper of all table constraints
* @return list of constraint names
* @throws InvalidObjectException one of the provided objects is malformed.
* @throws MetaException error accessing the RDBMS
*/
- List<String> createTableWithConstraints(Table tbl, List<SQLPrimaryKey> primaryKeys,
- List<SQLForeignKey> foreignKeys, List<SQLUniqueConstraint> uniqueConstraints,
- List<SQLNotNullConstraint> notNullConstraints,
- List<SQLDefaultConstraint> defaultConstraints,
- List<SQLCheckConstraint> checkConstraints) throws InvalidObjectException, MetaException;
+ SQLAllTableConstraints createTableWithConstraints(Table tbl, SQLAllTableConstraints constraints) throws InvalidObjectException, MetaException;
/**
* Drop a constraint, any constraint. I have no idea why add and get each have separate
@@ -1549,7 +1541,7 @@ public interface RawStore extends Configurable {
* @throws InvalidObjectException The SQLPrimaryKeys list is malformed
* @throws MetaException error accessing the RDMBS
*/
- List<String> addPrimaryKeys(List<SQLPrimaryKey> pks) throws InvalidObjectException, MetaException;
+ List<SQLPrimaryKey> addPrimaryKeys(List<SQLPrimaryKey> pks) throws InvalidObjectException, MetaException;
/**
* Add a foreign key to a table.
@@ -1558,7 +1550,7 @@ public interface RawStore extends Configurable {
* @throws InvalidObjectException the specification is malformed.
* @throws MetaException error accessing the RDBMS.
*/
- List<String> addForeignKeys(List<SQLForeignKey> fks) throws InvalidObjectException, MetaException;
+ List<SQLForeignKey> addForeignKeys(List<SQLForeignKey> fks) throws InvalidObjectException, MetaException;
/**
* Add unique constraints to a table.
@@ -1567,7 +1559,7 @@ public interface RawStore extends Configurable {
* @throws InvalidObjectException the specification is malformed.
* @throws MetaException error accessing the RDBMS.
*/
- List<String> addUniqueConstraints(List<SQLUniqueConstraint> uks) throws InvalidObjectException, MetaException;
+ List<SQLUniqueConstraint> addUniqueConstraints(List<SQLUniqueConstraint> uks) throws InvalidObjectException, MetaException;
/**
* Add not null constraints to a table.
@@ -1576,7 +1568,7 @@ public interface RawStore extends Configurable {
* @throws InvalidObjectException the specification is malformed.
* @throws MetaException error accessing the RDBMS.
*/
- List<String> addNotNullConstraints(List<SQLNotNullConstraint> nns) throws InvalidObjectException, MetaException;
+ List<SQLNotNullConstraint> addNotNullConstraints(List<SQLNotNullConstraint> nns) throws InvalidObjectException, MetaException;
/**
* Add default values to a table definition.
@@ -1585,7 +1577,7 @@ public interface RawStore extends Configurable {
* @throws InvalidObjectException the specification is malformed.
* @throws MetaException error accessing the RDBMS.
*/
- List<String> addDefaultConstraints(List<SQLDefaultConstraint> dv)
+ List<SQLDefaultConstraint> addDefaultConstraints(List<SQLDefaultConstraint> dv)
throws InvalidObjectException, MetaException;
/**
@@ -1595,7 +1587,7 @@ public interface RawStore extends Configurable {
* @throws InvalidObjectException the specification is malformed
* @throws MetaException error accessing the RDBMS
*/
- List<String> addCheckConstraints(List<SQLCheckConstraint> cc) throws InvalidObjectException, MetaException;
+ List<SQLCheckConstraint> addCheckConstraints(List<SQLCheckConstraint> cc) throws InvalidObjectException, MetaException;
/**
* Gets the unique id of the backing datastore for the metadata.
diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/cache/CacheUtils.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/cache/CacheUtils.java
index c0cc0e6..a2f56e4 100644
--- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/cache/CacheUtils.java
+++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/cache/CacheUtils.java
@@ -21,6 +21,7 @@ import java.util.Collections;
import java.util.List;
import java.util.regex.Pattern;
+import org.apache.commons.collections.CollectionUtils;
import org.apache.hadoop.hive.metastore.api.Partition;
import org.apache.hadoop.hive.metastore.api.SkewedInfo;
import org.apache.hadoop.hive.metastore.api.StorageDescriptor;
@@ -58,14 +59,12 @@ public class CacheUtils {
*
*/
public static String buildPartitionCacheKey(List<String> partVals) {
- if (partVals == null || partVals.isEmpty()) {
- return "";
- }
- return String.join(delimit, partVals);
+ return CollectionUtils.isNotEmpty(partVals) ? String.join(delimit, partVals) : "";
}
public static String buildTableKey(String catName, String dbName, String tableName) {
- return buildKey(catName.toLowerCase(), dbName.toLowerCase(), tableName.toLowerCase());
+ return buildKey(StringUtils.normalizeIdentifier(catName), StringUtils.normalizeIdentifier(dbName),
+ StringUtils.normalizeIdentifier(tableName));
}
public static String buildTableColKey(String catName, String dbName, String tableName,
diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/cache/CachedStore.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/cache/CachedStore.java
index d0cf4cc..40c89c1 100644
--- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/cache/CachedStore.java
+++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/cache/CachedStore.java
@@ -2846,31 +2846,29 @@ public class CachedStore implements RawStore, Configurable {
return sqlAllTableConstraints;
}
- @Override public List<String> createTableWithConstraints(Table tbl, List<SQLPrimaryKey> primaryKeys,
- List<SQLForeignKey> foreignKeys, List<SQLUniqueConstraint> uniqueConstraints,
- List<SQLNotNullConstraint> notNullConstraints, List<SQLDefaultConstraint> defaultConstraints,
- List<SQLCheckConstraint> checkConstraints) throws InvalidObjectException, MetaException {
- List<String> constraintNames = rawStore
- .createTableWithConstraints(tbl, primaryKeys, foreignKeys, uniqueConstraints, notNullConstraints,
- defaultConstraints, checkConstraints);
+ @Override
+ public SQLAllTableConstraints createTableWithConstraints(Table tbl, SQLAllTableConstraints constraints)
+ throws InvalidObjectException, MetaException {
+ constraints = rawStore.createTableWithConstraints(tbl, constraints);
// in case of event based cache update, cache is updated during commit.
if (canUseEvents) {
- return constraintNames;
+ return constraints;
}
String dbName = normalizeIdentifier(tbl.getDbName());
String tblName = normalizeIdentifier(tbl.getTableName());
String catName = tbl.isSetCatName() ? normalizeIdentifier(tbl.getCatName()) : DEFAULT_CATALOG_NAME;
if (!shouldCacheTable(catName, dbName, tblName)) {
- return constraintNames;
+ return constraints;
}
sharedCache.addTableToCache(StringUtils.normalizeIdentifier(tbl.getCatName()),
StringUtils.normalizeIdentifier(tbl.getDbName()), StringUtils.normalizeIdentifier(tbl.getTableName()), tbl);
- // ToDo: Add default/check constraints
- sharedCache.addForeignKeysToCache(catName, dbName, tblName, foreignKeys);
- sharedCache.addPrimaryKeysToCache(catName, dbName, tblName, primaryKeys);
- sharedCache.addNotNullConstraintsToCache(catName, dbName, tblName, notNullConstraints);
- sharedCache.addUniqueConstraintsToCache(catName, dbName, tblName, uniqueConstraints);
- return constraintNames;
+ sharedCache.addForeignKeysToCache(catName, dbName, tblName, constraints.getForeignKeys());
+ sharedCache.addPrimaryKeysToCache(catName, dbName, tblName, constraints.getPrimaryKeys());
+ sharedCache.addNotNullConstraintsToCache(catName, dbName, tblName, constraints.getNotNullConstraints());
+ sharedCache.addUniqueConstraintsToCache(catName, dbName, tblName, constraints.getUniqueConstraints());
+ sharedCache.addCheckConstraintsToCache(catName, dbName, tblName, constraints.getCheckConstraints());
+ sharedCache.addDefaultConstraintsToCache(catName, dbName, tblName, constraints.getDefaultConstraints());
+ return constraints;
}
@Override public void dropConstraint(String catName, String dbName, String tableName, String constraintName,
@@ -2887,77 +2885,103 @@ public class CachedStore implements RawStore, Configurable {
}
}
- @Override public List<String> addPrimaryKeys(List<SQLPrimaryKey> pks) throws InvalidObjectException, MetaException {
- List<String> names = rawStore.addPrimaryKeys(pks);
+ @Override
+ public List<SQLPrimaryKey> addPrimaryKeys(List<SQLPrimaryKey> pks) throws InvalidObjectException, MetaException {
+ pks = rawStore.addPrimaryKeys(pks);
// in case of event based cache update, cache will be updated during commit.
if (!canUseEvents && pks != null && !pks.isEmpty()) {
String catName = normalizeIdentifier(pks.get(0).getCatName());
String dbName = normalizeIdentifier(pks.get(0).getTable_db());
String tblName = normalizeIdentifier(pks.get(0).getTable_name());
if (!shouldCacheTable(catName, dbName, tblName)) {
- return names;
+ return pks;
}
sharedCache.addPrimaryKeysToCache(catName, dbName, tblName, pks);
}
- return names;
+ return pks;
}
- @Override public List<String> addForeignKeys(List<SQLForeignKey> fks) throws InvalidObjectException, MetaException {
- List<String> names = rawStore.addForeignKeys(fks);
+ @Override
+ public List<SQLForeignKey> addForeignKeys(List<SQLForeignKey> fks) throws InvalidObjectException, MetaException {
+ fks = rawStore.addForeignKeys(fks);
if (!canUseEvents && fks != null && !fks.isEmpty()) {
String catName = normalizeIdentifier(fks.get(0).getCatName());
String dbName = normalizeIdentifier(fks.get(0).getFktable_db());
String tblName = normalizeIdentifier(fks.get(0).getFktable_db());
if (!shouldCacheTable(catName, dbName, tblName)) {
- return names;
+ return fks;
}
sharedCache.addForeignKeysToCache(catName, dbName, tblName, fks);
}
- return names;
+ return fks;
}
- @Override public List<String> addUniqueConstraints(List<SQLUniqueConstraint> uks)
+ @Override
+ public List<SQLUniqueConstraint> addUniqueConstraints(List<SQLUniqueConstraint> uks)
throws InvalidObjectException, MetaException {
- List<String> names = rawStore.addUniqueConstraints(uks);
+ uks = rawStore.addUniqueConstraints(uks);
// in case of event based cache update, cache will be updated during commit.
if (!canUseEvents && uks != null && !uks.isEmpty()) {
String catName = normalizeIdentifier(uks.get(0).getCatName());
String dbName = normalizeIdentifier(uks.get(0).getTable_db());
String tblName = normalizeIdentifier(uks.get(0).getTable_name());
if (!shouldCacheTable(catName, dbName, tblName)) {
- return names;
+ return uks;
}
sharedCache.addUniqueConstraintsToCache(catName, dbName, tblName, uks);
}
- return names;
+ return uks;
}
- @Override public List<String> addNotNullConstraints(List<SQLNotNullConstraint> nns)
+ @Override
+ public List<SQLNotNullConstraint> addNotNullConstraints(List<SQLNotNullConstraint> nns)
throws InvalidObjectException, MetaException {
- List<String> names = rawStore.addNotNullConstraints(nns);
+ nns = rawStore.addNotNullConstraints(nns);
// in case of event based cache update, cache will be updated during commit.
- if (!canUseEvents && nns != null && !nns.isEmpty()) {
+ if (!canUseEvents && CollectionUtils.isNotEmpty(nns)) {
String catName = normalizeIdentifier(nns.get(0).getCatName());
String dbName = normalizeIdentifier(nns.get(0).getTable_db());
String tblName = normalizeIdentifier(nns.get(0).getTable_name());
if (!shouldCacheTable(catName, dbName, tblName)) {
- return names;
+ return nns;
}
sharedCache.addNotNullConstraintsToCache(catName, dbName, tblName, nns);
}
- return names;
+ return nns;
}
- @Override public List<String> addDefaultConstraints(List<SQLDefaultConstraint> nns)
+ @Override
+ public List<SQLDefaultConstraint> addDefaultConstraints(List<SQLDefaultConstraint> dcs)
throws InvalidObjectException, MetaException {
- // TODO constraintCache
- return rawStore.addDefaultConstraints(nns);
+ dcs = rawStore.addDefaultConstraints(dcs);
+ // in case of event based cache update, cache will be updated during commit.
+ if (!canUseEvents && CollectionUtils.isNotEmpty(dcs)) {
+ String catName = normalizeIdentifier(dcs.get(0).getCatName());
+ String dbName = normalizeIdentifier(dcs.get(0).getTable_db());
+ String tblName = normalizeIdentifier(dcs.get(0).getTable_name());
+ if (!shouldCacheTable(catName, dbName, tblName)) {
+ return dcs;
+ }
+ sharedCache.addDefaultConstraintsToCache(catName, dbName, tblName, dcs);
+ }
+ return dcs;
}
- @Override public List<String> addCheckConstraints(List<SQLCheckConstraint> nns)
+ @Override
+ public List<SQLCheckConstraint> addCheckConstraints(List<SQLCheckConstraint> ccs)
throws InvalidObjectException, MetaException {
- // TODO constraintCache
- return rawStore.addCheckConstraints(nns);
+ ccs = rawStore.addCheckConstraints(ccs);
+ // in case of event based cache update, cache will be updated during commit.
+ if (!canUseEvents && CollectionUtils.isNotEmpty(ccs)) {
+ String catName = normalizeIdentifier(ccs.get(0).getCatName());
+ String dbName = normalizeIdentifier(ccs.get(0).getTable_db());
+ String tblName = normalizeIdentifier(ccs.get(0).getTable_name());
+ if (!shouldCacheTable(catName, dbName, tblName)) {
+ return ccs;
+ }
+ sharedCache.addCheckConstraintsToCache(catName, dbName, tblName, ccs);
+ }
+ return ccs;
}
// TODO - not clear if we should cache these or not. For now, don't bother
diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/cache/SharedCache.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/cache/SharedCache.java
index 3e71fb9..ff97bc2 100644
--- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/cache/SharedCache.java
+++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/cache/SharedCache.java
@@ -517,32 +517,38 @@ public class SharedCache {
switch (mn) {
case PRIMARY_KEY_CACHE:
SQLPrimaryKey pk = (SQLPrimaryKey) constraint;
- this.primaryKeyCache.put(pk.getPk_name().toLowerCase(), pk);
+ String pkName = normalizeIdentifier(pk.getPk_name());
+ this.primaryKeyCache.put(pkName, pk);
size = getObjectSize(SQLPrimaryKey.class, constraint);
break;
case FOREIGN_KEY_CACHE:
SQLForeignKey fk = (SQLForeignKey) constraint;
- this.foreignKeyCache.put(fk.getFk_name().toLowerCase(), fk);
+ String fkName = normalizeIdentifier(fk.getFk_name());
+ this.foreignKeyCache.put(fkName, fk);
size = getObjectSize(SQLForeignKey.class, constraint);
break;
case UNIQUE_CONSTRAINT_CACHE:
SQLUniqueConstraint uc = (SQLUniqueConstraint) constraint;
- this.uniqueConstraintCache.put(uc.getUk_name().toLowerCase(), uc);
+ String ucName = normalizeIdentifier(uc.getUk_name());
+ this.uniqueConstraintCache.put(ucName, uc);
size = getObjectSize(SQLUniqueConstraint.class, constraint);
break;
case NOTNULL_CONSTRAINT_CACHE:
SQLNotNullConstraint nn = (SQLNotNullConstraint) constraint;
- this.notNullConstraintCache.put(nn.getNn_name().toLowerCase(), nn);
+ String nnName = normalizeIdentifier(nn.getNn_name());
+ this.notNullConstraintCache.put(nnName, nn);
size = getObjectSize(SQLNotNullConstraint.class, constraint);
break;
case DEFAULT_CONSTRAINT_CACHE:
SQLDefaultConstraint dc = (SQLDefaultConstraint) constraint;
- this.defaultConstraintCache.put(dc.getDc_name().toLowerCase(), dc);
+ String dcName = normalizeIdentifier(dc.getDc_name());
+ this.defaultConstraintCache.put(dcName, dc);
size = getObjectSize(SQLDefaultConstraint.class, constraint);
break;
case CHECK_CONSTRAINT_CACHE:
SQLCheckConstraint cc = (SQLCheckConstraint) constraint;
- this.checkConstraintCache.put(cc.getDc_name().toLowerCase(), cc);
+ String ccName = normalizeIdentifier(cc.getDc_name());
+ this.checkConstraintCache.put(ccName, cc);
size = getObjectSize(SQLCheckConstraint.class, constraint);
break;
default:
@@ -717,7 +723,9 @@ public class SharedCache {
+ "; the primary keys are already refreshed.");
return;
}
- newKeys.put(key.getPk_name().toLowerCase(), key);
+ String pkName = StringUtils.normalizeIdentifier(key.getPk_name());
+ key.setPk_name(pkName);
+ newKeys.put(pkName, key);
size += getObjectSize(SQLPrimaryKey.class, key);
}
primaryKeyCache = newKeys;
@@ -740,7 +748,9 @@ public class SharedCache {
+ "; the foreign keys are already refreshed.");
return;
}
- newKeys.put(key.getFk_name().toLowerCase(), key);
+ String fkName = StringUtils.normalizeIdentifier(key.getFk_name());
+ key.setFk_name(fkName);
+ newKeys.put(fkName, key);
size += getObjectSize(SQLForeignKey.class, key);
}
foreignKeyCache = newKeys;
@@ -763,7 +773,9 @@ public class SharedCache {
+ "; the not null constraints are already refreshed.");
return;
}
- newConstraints.put(constraint.getNn_name().toLowerCase(), constraint);
+ String nnName = StringUtils.normalizeIdentifier(constraint.getNn_name());
+ constraint.setNn_name(nnName);
+ newConstraints.put(nnName, constraint);
size += getObjectSize(SQLNotNullConstraint.class, constraint);
}
notNullConstraintCache = newConstraints;
@@ -783,10 +795,12 @@ public class SharedCache {
for (SQLUniqueConstraint constraint : constraints) {
if (compareAndSetMemberCacheUpdated(MemberName.UNIQUE_CONSTRAINT_CACHE, true, false)) {
LOG.debug("Skipping unique constraints cache update for table: " + getTable().getTableName()
- + "; the unique costraints are already refreshed.");
+ + "; the unique constraints are already refreshed.");
return;
}
- newConstraints.put(constraint.getUk_name().toLowerCase(), constraint);
+ String ucName = StringUtils.normalizeIdentifier(constraint.getUk_name());
+ constraint.setUk_name(ucName);
+ newConstraints.put(ucName, constraint);
size += getObjectSize(SQLUniqueConstraint.class, constraint);
}
uniqueConstraintCache = newConstraints;
@@ -809,7 +823,9 @@ public class SharedCache {
+ "; the default constraint are already refreshed.");
return;
}
- newConstraints.put(constraint.getDc_name().toLowerCase(), constraint);
+ String dcName = StringUtils.normalizeIdentifier(constraint.getDc_name());
+ constraint.setDc_name(dcName);
+ newConstraints.put(dcName, constraint);
size += getObjectSize(SQLDefaultConstraint.class, constraint);
}
defaultConstraintCache = newConstraints;
@@ -832,7 +848,9 @@ public class SharedCache {
+ "; the check constraint are already refreshed.");
return;
}
- newConstraints.put(constraint.getDc_name().toLowerCase(), constraint);
+ String ccName = StringUtils.normalizeIdentifier(constraint.getDc_name());
+ constraint.setDc_name(ccName);
+ newConstraints.put(ccName, constraint);
size += getObjectSize(SQLCheckConstraint.class, constraint);
}
checkConstraintCache = newConstraints;
@@ -1385,7 +1403,7 @@ public class SharedCache {
fs.setName(StringUtils.normalizeIdentifier(fs.getName()));
}
}
- setTable(tblCopy);
+
if (tblCopy.getSd() != null) {
sdHash = MetaStoreServerUtils.hashStorageDescriptor(tblCopy.getSd(), md);
StorageDescriptor sd = tblCopy.getSd();
@@ -1399,6 +1417,8 @@ public class SharedCache {
setLocation(null);
setParameters(null);
}
+ tblCopy.setTableName(tblCopy.getTableName().toLowerCase());
+ setTable(tblCopy);
}
private PartitionWrapper makePartitionWrapper(Partition part, SharedCache sharedCache) {
@@ -1909,9 +1929,7 @@ public class SharedCache {
TableWrapper tblWrapper = tableCache.getIfPresent(CacheUtils.buildTableKey(catName, dbName, tblName));
if (tblWrapper != null) {
tblWrapper.updateTableObj(newTable, this);
- String newDbName = StringUtils.normalizeIdentifier(newTable.getDbName());
- String newTblName = StringUtils.normalizeIdentifier(newTable.getTableName());
- tableCache.put(CacheUtils.buildTableKey(catName, newDbName, newTblName), tblWrapper);
+ tableCache.put(CacheUtils.buildTableKey(catName, newTable.getDbName(), newTable.getTableName()), tblWrapper);
isTableCacheDirty.set(true);
}
} finally {
diff --git a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/DummyRawStoreControlledCommit.java b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/DummyRawStoreControlledCommit.java
index a4e05dd..1d6ccd6 100644
--- a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/DummyRawStoreControlledCommit.java
+++ b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/DummyRawStoreControlledCommit.java
@@ -1016,12 +1016,7 @@ public class DummyRawStoreControlledCommit implements RawStore, Configurable {
}
@Override
- public List<String> createTableWithConstraints(Table tbl,
- List<SQLPrimaryKey> primaryKeys, List<SQLForeignKey> foreignKeys,
- List<SQLUniqueConstraint> uniqueConstraints,
- List<SQLNotNullConstraint> notNullConstraints,
- List<SQLDefaultConstraint> defaultConstraints,
- List<SQLCheckConstraint> checkConstraints)
+ public SQLAllTableConstraints createTableWithConstraints(Table tbl, SQLAllTableConstraints constraints )
throws InvalidObjectException, MetaException {
// TODO Auto-generated method stub
return null;
@@ -1034,40 +1029,40 @@ public class DummyRawStoreControlledCommit implements RawStore, Configurable {
}
@Override
- public List<String> addPrimaryKeys(List<SQLPrimaryKey> pks)
+ public List<SQLPrimaryKey> addPrimaryKeys(List<SQLPrimaryKey> pks)
throws InvalidObjectException, MetaException {
return null;
}
@Override
- public List<String> addForeignKeys(List<SQLForeignKey> fks)
+ public List<SQLForeignKey> addForeignKeys(List<SQLForeignKey> fks)
throws InvalidObjectException, MetaException {
return null;
}
@Override
- public List<String> addUniqueConstraints(List<SQLUniqueConstraint> uks)
+ public List<SQLUniqueConstraint> addUniqueConstraints(List<SQLUniqueConstraint> uks)
throws InvalidObjectException, MetaException {
// TODO Auto-generated method stub
return null;
}
@Override
- public List<String> addNotNullConstraints(List<SQLNotNullConstraint> nns)
+ public List<SQLNotNullConstraint> addNotNullConstraints(List<SQLNotNullConstraint> nns)
throws InvalidObjectException, MetaException {
// TODO Auto-generated method stub
return null;
}
@Override
- public List<String> addDefaultConstraints(List<SQLDefaultConstraint> nns)
+ public List<SQLDefaultConstraint> addDefaultConstraints(List<SQLDefaultConstraint> nns)
throws InvalidObjectException, MetaException {
// TODO Auto-generated method stub
return null;
}
@Override
- public List<String> addCheckConstraints(List<SQLCheckConstraint> nns)
+ public List<SQLCheckConstraint> addCheckConstraints(List<SQLCheckConstraint> nns)
throws InvalidObjectException, MetaException {
// TODO Auto-generated method stub
return null;
diff --git a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/DummyRawStoreForJdoConnection.java b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/DummyRawStoreForJdoConnection.java
index 80002dd..74f1a2c 100644
--- a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/DummyRawStoreForJdoConnection.java
+++ b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/DummyRawStoreForJdoConnection.java
@@ -1022,12 +1022,7 @@ public class DummyRawStoreForJdoConnection implements RawStore {
}
@Override
- public List<String> createTableWithConstraints(Table tbl,
- List<SQLPrimaryKey> primaryKeys, List<SQLForeignKey> foreignKeys,
- List<SQLUniqueConstraint> uniqueConstraints,
- List<SQLNotNullConstraint> notNullConstraints,
- List<SQLDefaultConstraint> defaultConstraints,
- List<SQLCheckConstraint> checkConstraints)
+ public SQLAllTableConstraints createTableWithConstraints(Table tbl, SQLAllTableConstraints constraints)
throws InvalidObjectException, MetaException {
// TODO Auto-generated method stub
return null;
@@ -1040,42 +1035,42 @@ public class DummyRawStoreForJdoConnection implements RawStore {
}
@Override
- public List<String> addPrimaryKeys(List<SQLPrimaryKey> pks)
+ public List<SQLPrimaryKey> addPrimaryKeys(List<SQLPrimaryKey> pks)
throws InvalidObjectException, MetaException {
// TODO Auto-generated method stub
return null;
}
@Override
- public List<String> addForeignKeys(List<SQLForeignKey> fks)
+ public List<SQLForeignKey> addForeignKeys(List<SQLForeignKey> fks)
throws InvalidObjectException, MetaException {
// TODO Auto-generated method stub
return null;
}
@Override
- public List<String> addUniqueConstraints(List<SQLUniqueConstraint> uks)
+ public List<SQLUniqueConstraint> addUniqueConstraints(List<SQLUniqueConstraint> uks)
throws InvalidObjectException, MetaException {
// TODO Auto-generated method stub
return null;
}
@Override
- public List<String> addNotNullConstraints(List<SQLNotNullConstraint> nns)
+ public List<SQLNotNullConstraint> addNotNullConstraints(List<SQLNotNullConstraint> nns)
throws InvalidObjectException, MetaException {
// TODO Auto-generated method stub
return null;
}
@Override
- public List<String> addDefaultConstraints(List<SQLDefaultConstraint> nns)
+ public List<SQLDefaultConstraint> addDefaultConstraints(List<SQLDefaultConstraint> nns)
throws InvalidObjectException, MetaException {
// TODO Auto-generated method stub
return null;
}
@Override
- public List<String> addCheckConstraints(List<SQLCheckConstraint> nns)
+ public List<SQLCheckConstraint> addCheckConstraints(List<SQLCheckConstraint> nns)
throws InvalidObjectException, MetaException {
// TODO Auto-generated method stub
return null;
diff --git a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/InjectableBehaviourObjectStore.java b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/InjectableBehaviourObjectStore.java
index b828d32..f9847fa 100644
--- a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/InjectableBehaviourObjectStore.java
+++ b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/InjectableBehaviourObjectStore.java
@@ -253,7 +253,7 @@ public class InjectableBehaviourObjectStore extends ObjectStore {
}
@Override
- public List<String> addPrimaryKeys(List<SQLPrimaryKey> pks) throws InvalidObjectException,
+ public List<SQLPrimaryKey> addPrimaryKeys(List<SQLPrimaryKey> pks) throws InvalidObjectException,
MetaException {
if (callerVerifier != null) {
CallerArguments args = new CallerArguments(pks.get(0).getTable_db());
@@ -268,7 +268,7 @@ public class InjectableBehaviourObjectStore extends ObjectStore {
}
@Override
- public List<String> addForeignKeys(List<SQLForeignKey> fks) throws InvalidObjectException,
+ public List<SQLForeignKey> addForeignKeys(List<SQLForeignKey> fks) throws InvalidObjectException,
MetaException {
if (callerVerifier != null) {
CallerArguments args = new CallerArguments(fks.get(0).getFktable_db());
diff --git a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/cache/TestCachedStore.java b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/cache/TestCachedStore.java
index ea2a0fd..2e1a0ae 100644
--- a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/cache/TestCachedStore.java
+++ b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/cache/TestCachedStore.java
@@ -1568,12 +1568,7 @@ import static org.apache.hadoop.hive.metastore.Warehouse.DEFAULT_CATALOG_NAME;
List<SQLPrimaryKey> cachedKeys = sharedCache.listCachedPrimaryKeys(
DEFAULT_CATALOG_NAME, tbl.getDbName(), tbl.getTableName());
- Assert.assertEquals(cachedKeys.size(), 1);
- Assert.assertEquals(cachedKeys.get(0).getPk_name(), "pk1");
- Assert.assertEquals(cachedKeys.get(0).getTable_db(), "db");
- Assert.assertEquals(cachedKeys.get(0).getTable_name(), tbl.getTableName());
- Assert.assertEquals(cachedKeys.get(0).getColumn_name(), "col1");
- Assert.assertEquals(cachedKeys.get(0).getCatName(), DEFAULT_CATALOG_NAME);
+ Assert.assertEquals(origKeys, cachedKeys);
SQLPrimaryKey modifiedKey = origKeys.get(0).deepCopy();
modifiedKey.setColumn_name("col2");
@@ -1589,12 +1584,7 @@ import static org.apache.hadoop.hive.metastore.Warehouse.DEFAULT_CATALOG_NAME;
sharedCache.refreshPrimaryKeysInCache(DEFAULT_CATALOG_NAME, tbl.getDbName(), tbl.getTableName(),
Arrays.asList(modifiedKey));
- Assert.assertEquals(cachedKeys.size(), 1);
- Assert.assertEquals(cachedKeys.get(0).getPk_name(), "pk_modified");
- Assert.assertEquals(cachedKeys.get(0).getTable_db(), "db");
- Assert.assertEquals(cachedKeys.get(0).getTable_name(), tbl.getTableName());
- Assert.assertEquals(cachedKeys.get(0).getColumn_name(), "col2");
- Assert.assertEquals(cachedKeys.get(0).getCatName(), DEFAULT_CATALOG_NAME);
+ Assert.assertEquals(Arrays.asList(modifiedKey), cachedKeys);
// remove constraints
sharedCache.removeConstraintFromCache(DEFAULT_CATALOG_NAME, tbl.getDbName(), tbl.getTableName(), "pk_modified");
@@ -1630,12 +1620,7 @@ import static org.apache.hadoop.hive.metastore.Warehouse.DEFAULT_CATALOG_NAME;
List<SQLNotNullConstraint> cachedKeys = sharedCache.listCachedNotNullConstraints(
DEFAULT_CATALOG_NAME, tbl.getDbName(), tbl.getTableName());
- Assert.assertEquals(cachedKeys.size(), 1);
- Assert.assertEquals(cachedKeys.get(0).getNn_name(), "nn1");
- Assert.assertEquals(cachedKeys.get(0).getTable_db(), "db");
- Assert.assertEquals(cachedKeys.get(0).getTable_name(), tbl.getTableName());
- Assert.assertEquals(cachedKeys.get(0).getColumn_name(), "col1");
- Assert.assertEquals(cachedKeys.get(0).getCatName(), DEFAULT_CATALOG_NAME);
+ Assert.assertEquals(origKeys, cachedKeys);
SQLNotNullConstraint modifiedKey = origKeys.get(0).deepCopy();
modifiedKey.setColumn_name("col2");
@@ -1648,12 +1633,7 @@ import static org.apache.hadoop.hive.metastore.Warehouse.DEFAULT_CATALOG_NAME;
sharedCache.removeConstraintFromCache(DEFAULT_CATALOG_NAME, tbl.getDbName(), tbl.getTableName(), "nn1");
cachedKeys = sharedCache.listCachedNotNullConstraints(DEFAULT_CATALOG_NAME, tbl.getDbName(), tbl.getTableName());
- Assert.assertEquals(cachedKeys.size(), 1);
- Assert.assertEquals(cachedKeys.get(0).getNn_name(), "nn_modified");
- Assert.assertEquals(cachedKeys.get(0).getTable_db(), "db");
- Assert.assertEquals(cachedKeys.get(0).getTable_name(), tbl.getTableName());
- Assert.assertEquals(cachedKeys.get(0).getColumn_name(), "col2");
- Assert.assertEquals(cachedKeys.get(0).getCatName(), DEFAULT_CATALOG_NAME);
+ Assert.assertEquals(Arrays.asList(modifiedKey), cachedKeys);
sharedCache.removeConstraintFromCache(DEFAULT_CATALOG_NAME, tbl.getDbName(), tbl.getTableName(), "nn_modified");
@@ -1688,12 +1668,7 @@ import static org.apache.hadoop.hive.metastore.Warehouse.DEFAULT_CATALOG_NAME;
List<SQLUniqueConstraint> cachedKeys = sharedCache.listCachedUniqueConstraint(
DEFAULT_CATALOG_NAME, tbl.getDbName(), tbl.getTableName());
- Assert.assertEquals(cachedKeys.size(), 1);
- Assert.assertEquals(cachedKeys.get(0).getUk_name(), "uk1");
- Assert.assertEquals(cachedKeys.get(0).getTable_db(), "db");
- Assert.assertEquals(cachedKeys.get(0).getTable_name(), tbl.getTableName());
- Assert.assertEquals(cachedKeys.get(0).getColumn_name(), "col1");
- Assert.assertEquals(cachedKeys.get(0).getCatName(), DEFAULT_CATALOG_NAME);
+ Assert.assertEquals(origKeys, cachedKeys);
SQLUniqueConstraint modifiedKey = origKeys.get(0).deepCopy();
modifiedKey.setColumn_name("col2");
@@ -1707,12 +1682,7 @@ import static org.apache.hadoop.hive.metastore.Warehouse.DEFAULT_CATALOG_NAME;
sharedCache.removeConstraintFromCache(DEFAULT_CATALOG_NAME, tbl.getDbName(), tbl.getTableName(), "uk1");
cachedKeys = sharedCache.listCachedUniqueConstraint(DEFAULT_CATALOG_NAME, tbl.getDbName(), tbl.getTableName());
- Assert.assertEquals(cachedKeys.size(), 1);
- Assert.assertEquals(cachedKeys.get(0).getUk_name(), "uk_modified");
- Assert.assertEquals(cachedKeys.get(0).getTable_db(), "db");
- Assert.assertEquals(cachedKeys.get(0).getTable_name(), tbl.getTableName());
- Assert.assertEquals(cachedKeys.get(0).getColumn_name(), "col2");
- Assert.assertEquals(cachedKeys.get(0).getCatName(), DEFAULT_CATALOG_NAME);
+ Assert.assertEquals(Arrays.asList(modifiedKey), cachedKeys);
sharedCache.removeConstraintFromCache(DEFAULT_CATALOG_NAME, tbl.getDbName(), tbl.getTableName(), "uk_modified");
@@ -1753,26 +1723,12 @@ import static org.apache.hadoop.hive.metastore.Warehouse.DEFAULT_CATALOG_NAME;
List<SQLForeignKey> cachedKeys = sharedCache.listCachedForeignKeys(
DEFAULT_CATALOG_NAME, tbl.getDbName(), tbl.getTableName(), tbl.getDbName(), tbl.getTableName());
- Assert.assertEquals(cachedKeys.size(), 1);
- Assert.assertEquals(cachedKeys.get(0).getFk_name(), "fk1");
- Assert.assertEquals(cachedKeys.get(0).getFktable_db(), "db");
- Assert.assertEquals(cachedKeys.get(0).getPktable_db(), "db");
- Assert.assertEquals(cachedKeys.get(0).getFktable_name(), tbl.getTableName());
- Assert.assertEquals(cachedKeys.get(0).getPktable_name(), tbl.getTableName());
- Assert.assertEquals(cachedKeys.get(0).getFkcolumn_name(), "col2");
- Assert.assertEquals(cachedKeys.get(0).getCatName(), DEFAULT_CATALOG_NAME);
+ Assert.assertEquals(origKeys, cachedKeys);
cachedKeys = sharedCache.listCachedForeignKeys(
DEFAULT_CATALOG_NAME, tbl.getDbName(), tbl.getTableName(), tbl1.getDbName(), tbl1.getTableName());
- Assert.assertEquals(cachedKeys.size(), 1);
- Assert.assertEquals(cachedKeys.get(0).getFk_name(), "fk2");
- Assert.assertEquals(cachedKeys.get(0).getFktable_db(), "db");
- Assert.assertEquals(cachedKeys.get(0).getPktable_db(), tbl1.getDbName());
- Assert.assertEquals(cachedKeys.get(0).getFktable_name(), tbl.getTableName());
- Assert.assertEquals(cachedKeys.get(0).getPktable_name(), tbl1.getTableName());
- Assert.assertEquals(cachedKeys.get(0).getFkcolumn_name(), "col1");
- Assert.assertEquals(cachedKeys.get(0).getCatName(), DEFAULT_CATALOG_NAME);
+ Assert.assertEquals(extraKeys, cachedKeys);
sharedCache.removeConstraintFromCache(DEFAULT_CATALOG_NAME, tbl.getDbName(), tbl.getTableName(), "fk2");
// List operation with different parent table
cachedKeys = sharedCache.listCachedForeignKeys(
@@ -1793,14 +1749,8 @@ import static org.apache.hadoop.hive.metastore.Warehouse.DEFAULT_CATALOG_NAME;
sharedCache.removeConstraintFromCache(DEFAULT_CATALOG_NAME, tbl.getDbName(), tbl.getTableName(), "fk1");
cachedKeys = sharedCache.listCachedForeignKeys(
DEFAULT_CATALOG_NAME, tbl.getDbName(), tbl.getTableName(), tbl.getDbName(), tbl.getTableName());
- Assert.assertEquals(cachedKeys.size(), 1);
- Assert.assertEquals(cachedKeys.get(0).getFk_name(), "fk_modified");
- Assert.assertEquals(cachedKeys.get(0).getFktable_db(), "db");
- Assert.assertEquals(cachedKeys.get(0).getPktable_db(), "db");
- Assert.assertEquals(cachedKeys.get(0).getFktable_name(), tbl.getTableName());
- Assert.assertEquals(cachedKeys.get(0).getPktable_name(), tbl.getTableName());
- Assert.assertEquals(cachedKeys.get(0).getFkcolumn_name(), "col3");
- Assert.assertEquals(cachedKeys.get(0).getCatName(), DEFAULT_CATALOG_NAME);
+ Assert.assertEquals(Arrays.asList(modifiedKey), cachedKeys);
+
sharedCache.removeConstraintFromCache(DEFAULT_CATALOG_NAME, tbl.getDbName(), tbl.getTableName(), "fk_modified");
@@ -1836,13 +1786,7 @@ import static org.apache.hadoop.hive.metastore.Warehouse.DEFAULT_CATALOG_NAME;
List<SQLDefaultConstraint> cachedKeys =
sharedCache.listCachedDefaultConstraint(DEFAULT_CATALOG_NAME, tbl.getDbName(), tbl.getTableName());
- Assert.assertEquals(cachedKeys.size(), 1);
- Assert.assertEquals(cachedKeys.get(0).getDc_name(), "dc1");
- Assert.assertEquals(cachedKeys.get(0).getTable_db(), "db");
- Assert.assertEquals(cachedKeys.get(0).getTable_name(), tbl.getTableName());
- Assert.assertEquals(cachedKeys.get(0).getColumn_name(), "col1");
- Assert.assertEquals(cachedKeys.get(0).getCatName(), DEFAULT_CATALOG_NAME);
- Assert.assertEquals(cachedKeys.get(0).getDefault_value(), "1");
+ Assert.assertEquals(origKeys, cachedKeys);
SQLDefaultConstraint modifiedKey = origKeys.get(0).deepCopy();
modifiedKey.setColumn_name("col2");
@@ -1858,13 +1802,7 @@ import static org.apache.hadoop.hive.metastore.Warehouse.DEFAULT_CATALOG_NAME;
sharedCache.refreshDefaultConstraintsInCache(DEFAULT_CATALOG_NAME, tbl.getDbName(), tbl.getTableName(),
Arrays.asList(modifiedKey));
- Assert.assertEquals(cachedKeys.size(), 1);
- Assert.assertEquals(cachedKeys.get(0).getDc_name(), "dc_modified");
- Assert.assertEquals(cachedKeys.get(0).getTable_db(), "db");
- Assert.assertEquals(cachedKeys.get(0).getTable_name(), tbl.getTableName());
- Assert.assertEquals(cachedKeys.get(0).getColumn_name(), "col2");
- Assert.assertEquals(cachedKeys.get(0).getCatName(), DEFAULT_CATALOG_NAME);
- Assert.assertEquals(cachedKeys.get(0).getDefault_value(), "1");
+ Assert.assertEquals(Arrays.asList(modifiedKey), cachedKeys);
// remove constraints
sharedCache.removeConstraintFromCache(DEFAULT_CATALOG_NAME, tbl.getDbName(), tbl.getTableName(), "dc_modified");
@@ -1900,13 +1838,7 @@ import static org.apache.hadoop.hive.metastore.Warehouse.DEFAULT_CATALOG_NAME;
List<SQLCheckConstraint> cachedKeys =
sharedCache.listCachedCheckConstraint(DEFAULT_CATALOG_NAME, tbl.getDbName(), tbl.getTableName());
- Assert.assertEquals(cachedKeys.size(), 1);
- Assert.assertEquals(cachedKeys.get(0).getDc_name(), "cc1");
- Assert.assertEquals(cachedKeys.get(0).getTable_db(), "db");
- Assert.assertEquals(cachedKeys.get(0).getTable_name(), tbl.getTableName());
- Assert.assertEquals(cachedKeys.get(0).getColumn_name(), "col1");
- Assert.assertEquals(cachedKeys.get(0).getCatName(), DEFAULT_CATALOG_NAME);
- Assert.assertEquals(cachedKeys.get(0).getCheck_expression(), "1");
+ Assert.assertEquals(origKeys, cachedKeys);
SQLCheckConstraint modifiedKey = origKeys.get(0).deepCopy();
modifiedKey.setColumn_name("col2");
@@ -1922,13 +1854,7 @@ import static org.apache.hadoop.hive.metastore.Warehouse.DEFAULT_CATALOG_NAME;
sharedCache.refreshCheckConstraintsInCache(DEFAULT_CATALOG_NAME, tbl.getDbName(), tbl.getTableName(),
Arrays.asList(modifiedKey));
- Assert.assertEquals(cachedKeys.size(), 1);
- Assert.assertEquals(cachedKeys.get(0).getDc_name(), "cc_modified");
- Assert.assertEquals(cachedKeys.get(0).getTable_db(), "db");
- Assert.assertEquals(cachedKeys.get(0).getTable_name(), tbl.getTableName());
- Assert.assertEquals(cachedKeys.get(0).getColumn_name(), "col2");
- Assert.assertEquals(cachedKeys.get(0).getCatName(), DEFAULT_CATALOG_NAME);
- Assert.assertEquals(cachedKeys.get(0).getCheck_expression(), "1");
+ Assert.assertEquals(Arrays.asList(modifiedKey), cachedKeys);
// remove constraints
sharedCache.removeConstraintFromCache(DEFAULT_CATALOG_NAME, tbl.getDbName(), tbl.getTableName(), "cc_modified");
diff --git a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestCheckConstraint.java b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestCheckConstraint.java
index efac4cf..ce57496 100644
--- a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestCheckConstraint.java
+++ b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestCheckConstraint.java
@@ -162,21 +162,13 @@ public class TestCheckConstraint extends MetaStoreClientTest {
rqst = new CheckConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
fetched = client.getCheckConstraints(rqst);
- Assert.assertEquals(1, fetched.size());
- Assert.assertEquals(table.getDbName(), fetched.get(0).getTable_db());
- Assert.assertEquals(table.getTableName(), fetched.get(0).getTable_name());
- Assert.assertEquals("col1", fetched.get(0).getColumn_name());
- Assert.assertEquals("= 5", fetched.get(0).getCheck_expression());
- Assert.assertEquals(table.getTableName() + "_check_constraint", fetched.get(0).getDc_name());
- String table0PkName = fetched.get(0).getDc_name();
- Assert.assertTrue(fetched.get(0).isEnable_cstr());
- Assert.assertFalse(fetched.get(0).isValidate_cstr());
- Assert.assertFalse(fetched.get(0).isRely_cstr());
- Assert.assertEquals(table.getCatName(), fetched.get(0).getCatName());
+ cc.get(0).setDc_name(fetched.get(0).getDc_name());
+ Assert.assertEquals(cc, fetched);
+
// Drop a primary key
client.dropConstraint(table.getCatName(), table.getDbName(),
- table.getTableName(), table0PkName);
+ table.getTableName(), cc.get(0).getDc_name());
rqst = new CheckConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
fetched = client.getCheckConstraints(rqst);
Assert.assertTrue(fetched.isEmpty());
@@ -200,16 +192,7 @@ public class TestCheckConstraint extends MetaStoreClientTest {
CheckConstraintsRequest rqst = new CheckConstraintsRequest(testTables[2].getCatName(),
testTables[2].getDbName(), testTables[2].getTableName());
List<SQLCheckConstraint> fetched = client.getCheckConstraints(rqst);
- Assert.assertEquals(1, fetched.size());
- Assert.assertEquals(testTables[2].getDbName(), fetched.get(0).getTable_db());
- Assert.assertEquals(testTables[2].getTableName(), fetched.get(0).getTable_name());
- Assert.assertEquals("col1", fetched.get(0).getColumn_name());
- Assert.assertEquals("like s%", fetched.get(0).getCheck_expression());
- Assert.assertEquals(constraintName, fetched.get(0).getDc_name());
- Assert.assertTrue(fetched.get(0).isEnable_cstr());
- Assert.assertFalse(fetched.get(0).isValidate_cstr());
- Assert.assertFalse(fetched.get(0).isRely_cstr());
- Assert.assertEquals(testTables[2].getCatName(), fetched.get(0).getCatName());
+ Assert.assertEquals(cc, fetched);
client.dropConstraint(testTables[2].getCatName(), testTables[2].getDbName(),
testTables[2].getTableName(), constraintName);
@@ -238,16 +221,8 @@ public class TestCheckConstraint extends MetaStoreClientTest {
client.createTableWithConstraints(table, null, null, null, null, null, cc);
CheckConstraintsRequest rqst = new CheckConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
List<SQLCheckConstraint> fetched = client.getCheckConstraints(rqst);
- Assert.assertEquals(1, fetched.size());
- Assert.assertEquals(table.getDbName(), fetched.get(0).getTable_db());
- Assert.assertEquals(table.getTableName(), fetched.get(0).getTable_name());
- Assert.assertEquals("col1", fetched.get(0).getColumn_name());
- Assert.assertEquals("> 0", fetched.get(0).getCheck_expression());
- Assert.assertEquals(constraintName, fetched.get(0).getDc_name());
- Assert.assertTrue(fetched.get(0).isEnable_cstr());
- Assert.assertFalse(fetched.get(0).isValidate_cstr());
- Assert.assertFalse(fetched.get(0).isRely_cstr());
- Assert.assertEquals(table.getCatName(), fetched.get(0).getCatName());
+ Assert.assertEquals(cc, fetched);
+
client.dropConstraint(table.getCatName(), table.getDbName(), table.getTableName(), constraintName);
rqst = new CheckConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
@@ -274,19 +249,11 @@ public class TestCheckConstraint extends MetaStoreClientTest {
client.createTableWithConstraints(table, null, null, null, null, null, cc);
CheckConstraintsRequest rqst = new CheckConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
List<SQLCheckConstraint> fetched = client.getCheckConstraints(rqst);
- Assert.assertEquals(1, fetched.size());
- Assert.assertEquals(table.getDbName(), fetched.get(0).getTable_db());
- Assert.assertEquals(table.getTableName(), fetched.get(0).getTable_name());
- Assert.assertEquals("col1", fetched.get(0).getColumn_name());
- Assert.assertEquals("> 0", fetched.get(0).getCheck_expression());
- Assert.assertEquals(table.getTableName() + "_check_constraint", fetched.get(0).getDc_name());
- String tablePkName = fetched.get(0).getDc_name();
- Assert.assertTrue(fetched.get(0).isEnable_cstr());
- Assert.assertFalse(fetched.get(0).isValidate_cstr());
- Assert.assertFalse(fetched.get(0).isRely_cstr());
- Assert.assertEquals(table.getCatName(), fetched.get(0).getCatName());
-
- client.dropConstraint(table.getCatName(), table.getDbName(), table.getTableName(), tablePkName);
+ cc.get(0).setDc_name(fetched.get(0).getDc_name());
+ Assert.assertEquals(cc, fetched);
+
+
+ client.dropConstraint(table.getCatName(), table.getDbName(), table.getTableName(), cc.get(0).getDc_name());
rqst = new CheckConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
fetched = client.getCheckConstraints(rqst);
Assert.assertTrue(fetched.isEmpty());
diff --git a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestDefaultConstraint.java b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestDefaultConstraint.java
index f3e026c..6c92aa1 100644
--- a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestDefaultConstraint.java
+++ b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestDefaultConstraint.java
@@ -162,21 +162,13 @@ public class TestDefaultConstraint extends MetaStoreClientTest {
rqst = new DefaultConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
fetched = client.getDefaultConstraints(rqst);
- Assert.assertEquals(1, fetched.size());
- Assert.assertEquals(table.getDbName(), fetched.get(0).getTable_db());
- Assert.assertEquals(table.getTableName(), fetched.get(0).getTable_name());
- Assert.assertEquals("col1", fetched.get(0).getColumn_name());
- Assert.assertEquals("0", fetched.get(0).getDefault_value());
- Assert.assertEquals(table.getTableName() + "_default_value", fetched.get(0).getDc_name());
- String table0PkName = fetched.get(0).getDc_name();
- Assert.assertTrue(fetched.get(0).isEnable_cstr());
- Assert.assertFalse(fetched.get(0).isValidate_cstr());
- Assert.assertFalse(fetched.get(0).isRely_cstr());
- Assert.assertEquals(table.getCatName(), fetched.get(0).getCatName());
+ dv.get(0).setDc_name(fetched.get(0).getDc_name());
+ Assert.assertEquals(dv, fetched);
+
// Drop a primary key
client.dropConstraint(table.getCatName(), table.getDbName(),
- table.getTableName(), table0PkName);
+ table.getTableName(), dv.get(0).getDc_name());
rqst = new DefaultConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
fetched = client.getDefaultConstraints(rqst);
Assert.assertTrue(fetched.isEmpty());
@@ -200,16 +192,7 @@ public class TestDefaultConstraint extends MetaStoreClientTest {
DefaultConstraintsRequest rqst = new DefaultConstraintsRequest(testTables[2].getCatName(),
testTables[2].getDbName(), testTables[2].getTableName());
List<SQLDefaultConstraint> fetched = client.getDefaultConstraints(rqst);
- Assert.assertEquals(1, fetched.size());
- Assert.assertEquals(testTables[2].getDbName(), fetched.get(0).getTable_db());
- Assert.assertEquals(testTables[2].getTableName(), fetched.get(0).getTable_name());
- Assert.assertEquals("col1", fetched.get(0).getColumn_name());
- Assert.assertEquals("empty", fetched.get(0).getDefault_value());
- Assert.assertEquals(constraintName, fetched.get(0).getDc_name());
- Assert.assertTrue(fetched.get(0).isEnable_cstr());
- Assert.assertFalse(fetched.get(0).isValidate_cstr());
- Assert.assertFalse(fetched.get(0).isRely_cstr());
- Assert.assertEquals(testTables[2].getCatName(), fetched.get(0).getCatName());
+ Assert.assertEquals(dv, fetched);
client.dropConstraint(testTables[2].getCatName(), testTables[2].getDbName(),
testTables[2].getTableName(), constraintName);
@@ -238,16 +221,7 @@ public class TestDefaultConstraint extends MetaStoreClientTest {
client.createTableWithConstraints(table, null, null, null, null, dv, null);
DefaultConstraintsRequest rqst = new DefaultConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
List<SQLDefaultConstraint> fetched = client.getDefaultConstraints(rqst);
- Assert.assertEquals(1, fetched.size());
- Assert.assertEquals(table.getDbName(), fetched.get(0).getTable_db());
- Assert.assertEquals(table.getTableName(), fetched.get(0).getTable_name());
- Assert.assertEquals("col1", fetched.get(0).getColumn_name());
- Assert.assertEquals("0", fetched.get(0).getDefault_value());
- Assert.assertEquals(constraintName, fetched.get(0).getDc_name());
- Assert.assertTrue(fetched.get(0).isEnable_cstr());
- Assert.assertFalse(fetched.get(0).isValidate_cstr());
- Assert.assertFalse(fetched.get(0).isRely_cstr());
- Assert.assertEquals(table.getCatName(), fetched.get(0).getCatName());
+ Assert.assertEquals(dv, fetched);
client.dropConstraint(table.getCatName(), table.getDbName(), table.getTableName(), constraintName);
rqst = new DefaultConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
@@ -274,19 +248,10 @@ public class TestDefaultConstraint extends MetaStoreClientTest {
client.createTableWithConstraints(table, null, null, null, null, dv, null);
DefaultConstraintsRequest rqst = new DefaultConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
List<SQLDefaultConstraint> fetched = client.getDefaultConstraints(rqst);
- Assert.assertEquals(1, fetched.size());
- Assert.assertEquals(table.getDbName(), fetched.get(0).getTable_db());
- Assert.assertEquals(table.getTableName(), fetched.get(0).getTable_name());
- Assert.assertEquals("col1", fetched.get(0).getColumn_name());
- Assert.assertEquals("0", fetched.get(0).getDefault_value());
- Assert.assertEquals(table.getTableName() + "_default_value", fetched.get(0).getDc_name());
- String tablePkName = fetched.get(0).getDc_name();
- Assert.assertTrue(fetched.get(0).isEnable_cstr());
- Assert.assertFalse(fetched.get(0).isValidate_cstr());
- Assert.assertFalse(fetched.get(0).isRely_cstr());
- Assert.assertEquals(table.getCatName(), fetched.get(0).getCatName());
-
- client.dropConstraint(table.getCatName(), table.getDbName(), table.getTableName(), tablePkName);
+ dv.get(0).setDc_name(fetched.get(0).getDc_name());
+ Assert.assertEquals(dv, fetched);
+
+ client.dropConstraint(table.getCatName(), table.getDbName(), table.getTableName(), dv.get(0).getDc_name());
rqst = new DefaultConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
fetched = client.getDefaultConstraints(rqst);
Assert.assertTrue(fetched.isEmpty());
diff --git a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestForeignKey.java b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestForeignKey.java
index b058dd2..107ce62 100644
--- a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestForeignKey.java
+++ b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestForeignKey.java
@@ -184,26 +184,13 @@ public class TestForeignKey extends MetaStoreClientTest {
table.getDbName(), table.getTableName());
rqst.setCatName(table.getCatName());
fetched = client.getForeignKeys(rqst);
- Assert.assertEquals(1, fetched.size());
- Assert.assertEquals(table.getDbName(), fetched.get(0).getFktable_db());
- Assert.assertEquals(table.getTableName(), fetched.get(0).getFktable_name());
- Assert.assertEquals("col1", fetched.get(0).getFkcolumn_name());
- Assert.assertEquals(parentTable.getDbName(), fetched.get(0).getPktable_db());
- Assert.assertEquals(parentTable.getTableName(), fetched.get(0).getPktable_name());
- Assert.assertEquals("col1", fetched.get(0).getFkcolumn_name());
- Assert.assertEquals(1, fetched.get(0).getKey_seq());
- Assert.assertEquals(parentTable.getTableName() + "_primary_key", fetched.get(0).getPk_name());
- Assert.assertEquals(table.getTableName() + "_to_" + parentTable.getTableName() +
- "_foreign_key", fetched.get(0).getFk_name());
- String table0FkName = fetched.get(0).getFk_name();
- Assert.assertTrue(fetched.get(0).isEnable_cstr());
- Assert.assertFalse(fetched.get(0).isValidate_cstr());
- Assert.assertFalse(fetched.get(0).isRely_cstr());
- Assert.assertEquals(table.getCatName(), fetched.get(0).getCatName());
+ fk.get(0).setFk_name(fetched.get(0).getFk_name());
+ Assert.assertEquals(fk, fetched);
+
// Drop a foreign key
client.dropConstraint(table.getCatName(), table.getDbName(),
- table.getTableName(), table0FkName);
+ table.getTableName(), fk.get(0).getFk_name());
rqst = new ForeignKeysRequest(parentTable.getDbName(), parentTable.getTableName(),
table.getDbName(), table.getTableName());
rqst.setCatName(table.getCatName());
@@ -242,27 +229,12 @@ public class TestForeignKey extends MetaStoreClientTest {
parentTable.getTableName(), table.getDbName(), table.getTableName());
rqst.setCatName(table.getCatName());
List<SQLForeignKey> fetched = client.getForeignKeys(rqst);
- Assert.assertEquals(2, fetched.size());
- Assert.assertEquals(table.getDbName(), fetched.get(0).getFktable_db());
- Assert.assertEquals(table.getTableName(), fetched.get(0).getFktable_name());
- Assert.assertEquals("col1", fetched.get(0).getFkcolumn_name());
- Assert.assertEquals("col2", fetched.get(1).getFkcolumn_name());
- Assert.assertEquals(parentTable.getDbName(), fetched.get(0).getPktable_db());
- Assert.assertEquals(parentTable.getTableName(), fetched.get(0).getPktable_name());
- Assert.assertEquals("col1", fetched.get(0).getFkcolumn_name());
- Assert.assertEquals("col2", fetched.get(1).getFkcolumn_name());
- Assert.assertEquals(1, fetched.get(0).getKey_seq());
- Assert.assertEquals(parentTable.getTableName() + "_primary_key", fetched.get(0).getPk_name());
- Assert.assertEquals(constraintName, fetched.get(0).getFk_name());
- String table0FkName = fetched.get(0).getFk_name();
- Assert.assertTrue(fetched.get(0).isEnable_cstr());
- Assert.assertFalse(fetched.get(0).isValidate_cstr());
- Assert.assertFalse(fetched.get(0).isRely_cstr());
- Assert.assertEquals(table.getCatName(), fetched.get(0).getCatName());
+ Assert.assertEquals(fk, fetched);
+
// Drop a foreign key
client.dropConstraint(table.getCatName(), table.getDbName(),
- table.getTableName(), table0FkName);
+ table.getTableName(), constraintName);
rqst = new ForeignKeysRequest(parentTable.getDbName(), parentTable.getTableName(),
table.getDbName(), table.getTableName());
rqst.setCatName(table.getCatName());
@@ -299,25 +271,13 @@ public class TestForeignKey extends MetaStoreClientTest {
parentTable.getTableName(), table.getDbName(), table.getTableName());
rqst.setCatName(table.getCatName());
List<SQLForeignKey> fetched = client.getForeignKeys(rqst);
- Assert.assertEquals(1, fetched.size());
- Assert.assertEquals(table.getDbName(), fetched.get(0).getFktable_db());
- Assert.assertEquals(table.getTableName(), fetched.get(0).getFktable_name());
- Assert.assertEquals("col1", fetched.get(0).getFkcolumn_name());
- Assert.assertEquals(parentTable.getDbName(), fetched.get(0).getPktable_db());
- Assert.assertEquals(parentTable.getTableName(), fetched.get(0).getPktable_name());
- Assert.assertEquals("col1", fetched.get(0).getFkcolumn_name());
- Assert.assertEquals(1, fetched.get(0).getKey_seq());
- Assert.assertEquals(parentTable.getTableName() + "_primary_key", fetched.get(0).getPk_name());
- Assert.assertEquals(constraintName, fetched.get(0).getFk_name());
- String table0FkName = fetched.get(0).getFk_name();
- Assert.assertTrue(fetched.get(0).isEnable_cstr());
- Assert.assertFalse(fetched.get(0).isValidate_cstr());
- Assert.assertFalse(fetched.get(0).isRely_cstr());
- Assert.assertEquals(table.getCatName(), fetched.get(0).getCatName());
+ fk.get(0).setFk_name(fetched.get(0).getFk_name());
+ Assert.assertEquals(fk, fetched);
+
// Drop a foreign key
client.dropConstraint(table.getCatName(), table.getDbName(),
- table.getTableName(), table0FkName);
+ table.getTableName(), constraintName);
rqst = new ForeignKeysRequest(parentTable.getDbName(), parentTable.getTableName(),
table.getDbName(), table.getTableName());
rqst.setCatName(table.getCatName());
@@ -359,20 +319,8 @@ public class TestForeignKey extends MetaStoreClientTest {
table.getDbName(), table.getTableName());
rqst.setCatName(table.getCatName());
List<SQLForeignKey> fetched = client.getForeignKeys(rqst);
- Assert.assertEquals(1, fetched.size());
- Assert.assertEquals(table.getDbName(), fetched.get(0).getFktable_db());
- Assert.assertEquals(table.getTableName(), fetched.get(0).getFktable_name());
- Assert.assertEquals("col1", fetched.get(0).getFkcolumn_name());
- Assert.assertEquals(parentTable.getDbName(), fetched.get(0).getPktable_db());
- Assert.assertEquals(parentTable.getTableName(), fetched.get(0).getPktable_name());
- Assert.assertEquals("col1", fetched.get(0).getFkcolumn_name());
- Assert.assertEquals(1, fetched.get(0).getKey_seq());
- Assert.assertEquals(parentTable.getTableName() + "_primary_key", fetched.get(0).getPk_name());
- Assert.assertEquals(constraintName, fetched.get(0).getFk_name());
- Assert.assertTrue(fetched.get(0).isEnable_cstr());
- Assert.assertFalse(fetched.get(0).isValidate_cstr());
- Assert.assertFalse(fetched.get(0).isRely_cstr());
- Assert.assertEquals(table.getCatName(), fetched.get(0).getCatName());
+ Assert.assertEquals(fk, fetched);
+
}
@Test
@@ -406,20 +354,7 @@ public class TestForeignKey extends MetaStoreClientTest {
table.getDbName(), table.getTableName());
rqst.setCatName(table.getCatName());
List<SQLForeignKey> fetched = client.getForeignKeys(rqst);
- Assert.assertEquals(1, fetched.size());
- Assert.assertEquals(table.getDbName(), fetched.get(0).getFktable_db());
- Assert.assertEquals(table.getTableName(), fetched.get(0).getFktable_name());
- Assert.assertEquals("col1", fetched.get(0).getFkcolumn_name());
- Assert.assertEquals(parentTable.getDbName(), fetched.get(0).getPktable_db());
- Assert.assertEquals(parentTable.getTableName(), fetched.get(0).getPktable_name());
- Assert.assertEquals("col1", fetched.get(0).getFkcolumn_name());
- Assert.assertEquals(1, fetched.get(0).getKey_seq());
- Assert.assertEquals(parentTable.getTableName() + "_primary_key", fetched.get(0).getPk_name());
- Assert.assertEquals(constraintName, fetched.get(0).getFk_name());
- Assert.assertTrue(fetched.get(0).isEnable_cstr());
- Assert.assertFalse(fetched.get(0).isValidate_cstr());
- Assert.assertFalse(fetched.get(0).isRely_cstr());
- Assert.assertEquals(table.getCatName(), fetched.get(0).getCatName());
+ Assert.assertEquals(fk, fetched);
}
@Test(expected = MetaException.class)
diff --git a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestGetAllTableConstraints.java b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestGetAllTableConstraints.java
index a3872ba..d92523f 100644
--- a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestGetAllTableConstraints.java
+++ b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestGetAllTableConstraints.java
@@ -22,7 +22,6 @@ import org.apache.hadoop.hive.metastore.MetaStoreTestUtils;
import org.apache.hadoop.hive.metastore.annotation.MetastoreCheckinTest;
import org.apache.hadoop.hive.metastore.api.AllTableConstraintsRequest;
import org.apache.hadoop.hive.metastore.api.Catalog;
-import org.apache.hadoop.hive.metastore.api.Database;
import org.apache.hadoop.hive.metastore.api.NoSuchObjectException;
import org.apache.hadoop.hive.metastore.api.SQLAllTableConstraints;
import org.apache.hadoop.hive.metastore.api.SQLCheckConstraint;
@@ -51,6 +50,7 @@ import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
+import java.util.ArrayList;
import java.util.List;
import static org.apache.hadoop.hive.metastore.Warehouse.DEFAULT_DATABASE_NAME;
@@ -63,7 +63,7 @@ public class TestGetAllTableConstraints extends MetaStoreClientTest {
private static final String DATABASE_IN_OTHER_CATALOG = "test_constraints_database_in_other_catalog";
private final AbstractMetaStoreService metaStore;
private IMetaStoreClient client;
- private Table[] testTables = new Table[3];
+ private Table[] testTables = new Table[2];
public TestGetAllTableConstraints(String name, AbstractMetaStoreService metaStore) throws Exception {
this.metaStore = metaStore;
@@ -98,10 +98,6 @@ public class TestGetAllTableConstraints extends MetaStoreClientTest {
.build();
client.createCatalog(cat);
- // For this one don't specify a location to make sure it gets put in the catalog directory
- Database inOtherCatalog = new DatabaseBuilder().setName(DATABASE_IN_OTHER_CATALOG).setCatalogName(OTHER_CATALOG)
- .create(client, metaStore.getConf());
-
testTables[0] = new TableBuilder().setTableName("test_table_1").addCol("col1", "int").addCol("col2", "int")
.addCol("col3", "boolean").addCol("col4", "int").addCol("col5", "varchar(32)")
.create(client, metaStore.getConf());
@@ -109,9 +105,6 @@ public class TestGetAllTableConstraints extends MetaStoreClientTest {
testTables[1] = new TableBuilder().setDbName(OTHER_DATABASE).setTableName("test_table_2").addCol("col1", "int")
.addCol("col2", "varchar(32)").create(client, metaStore.getConf());
- testTables[2] = new TableBuilder().inDb(inOtherCatalog).setTableName("test_table_3").addCol("col1", "int")
- .addCol("col2", "varchar(32)").create(client, metaStore.getConf());
-
// Reload tables from the MetaStore
for (int i = 0; i < testTables.length; i++) {
testTables[i] =
@@ -141,16 +134,17 @@ public class TestGetAllTableConstraints extends MetaStoreClientTest {
@Test
public void noConstraints() throws TException {
Table table = testTables[0];
-
- AllTableConstraintsRequest request = new AllTableConstraintsRequest(table.getDbName(), table.getTableName(), table.getCatName());
+ SQLAllTableConstraints constraints = new SQLAllTableConstraints();
+ constraints.setPrimaryKeys(new ArrayList<>());
+ constraints.setForeignKeys(new ArrayList<>());
+ constraints.setNotNullConstraints(new ArrayList<>());
+ constraints.setCheckConstraints(new ArrayList<>());
+ constraints.setDefaultConstraints(new ArrayList<>());
+ constraints.setUniqueConstraints(new ArrayList<>());
+ AllTableConstraintsRequest request =
+ new AllTableConstraintsRequest(table.getDbName(), table.getTableName(), table.getCatName());
SQLAllTableConstraints fetched = client.getAllTableConstraints(request);
-
- Assert.assertTrue(fetched.getCheckConstraints().isEmpty());
- Assert.assertTrue(fetched.getForeignKeys().isEmpty());
- Assert.assertTrue(fetched.getDefaultConstraints().isEmpty());
- Assert.assertTrue(fetched.getNotNullConstraints().isEmpty());
- Assert.assertTrue(fetched.getPrimaryKeys().isEmpty());
- Assert.assertTrue(fetched.getUniqueConstraints().isEmpty());
+ Assert.assertEquals(constraints, fetched);
}
/**
@@ -160,66 +154,47 @@ public class TestGetAllTableConstraints extends MetaStoreClientTest {
@Test
public void fewPresentWithMultipleConstraints() throws TException {
Table table = testTables[0];
-
+ SQLAllTableConstraints expected = new SQLAllTableConstraints();
// Set col1 as primary key Constraint in default catalog and database
- String pkConstraintName = "col1_pk";
- List<SQLPrimaryKey> pk =
- new SQLPrimaryKeyBuilder().onTable(table).addColumn("col1").setConstraintName(pkConstraintName)
- .build(metaStore.getConf());
+ List<SQLPrimaryKey> pk = new SQLPrimaryKeyBuilder().onTable(table).addColumn("col1").setConstraintName("col1_pk")
+ .build(metaStore.getConf());
client.addPrimaryKey(pk);
+ expected.setPrimaryKeys(pk);
// Set col2 with Unique Constraint in default catalog and database
- String uniqueConstraintName = "col2_unique";
List<SQLUniqueConstraint> uc =
- new SQLUniqueConstraintBuilder().onTable(table).addColumn("col2").setConstraintName(uniqueConstraintName)
+ new SQLUniqueConstraintBuilder().onTable(table).addColumn("col2").setConstraintName("col2_unique")
.build(metaStore.getConf());
client.addUniqueConstraint(uc);
+ expected.setUniqueConstraints(uc);
// Set col3 with default Constraint in default catalog and database
- String defaultConstraintName = "col3_default";
List<SQLDefaultConstraint> dv =
- new SQLDefaultConstraintBuilder().onTable(table).addColumn("col3").setConstraintName(defaultConstraintName)
+ new SQLDefaultConstraintBuilder().onTable(table).addColumn("col3").setConstraintName("col3_default")
.setDefaultVal(false).build(metaStore.getConf());
client.addDefaultConstraint(dv);
+ expected.setDefaultConstraints(dv);
// Set col2 with not null constraint in default catalog and database;
- String nnCol2ConstraintName = "col2_not_null";
- List<SQLNotNullConstraint> nnCol2 =
- new SQLNotNullConstraintBuilder().onTable(table).addColumn("col2").setConstraintName(nnCol2ConstraintName)
- .build(metaStore.getConf());
- client.addNotNullConstraint(nnCol2);
-
- // Set col3 with not null constraint in default catalog and database;
- String nnCol3ConstraintName = "col3_not_null";
- List<SQLNotNullConstraint> nnCol3 =
- new SQLNotNullConstraintBuilder().onTable(table).addColumn("col3").setConstraintName(nnCol3ConstraintName)
- .build(metaStore.getConf());
- client.addNotNullConstraint(nnCol3);
-
+ SQLNotNullConstraint nnCol2 =
+ new SQLNotNullConstraint(table.getCatName(), table.getDbName(), table.getTableName(), "col2", "col2_not_null",
+ true, true, true);
+ SQLNotNullConstraint nnCol3 =
+ new SQLNotNullConstraint(table.getCatName(), table.getDbName(), table.getTableName(), "col3", "col3_not_null",
+ true, true, true);
+ List<SQLNotNullConstraint> nn = new ArrayList<>();
+ nn.add(nnCol2);
+ nn.add(nnCol3);
+ client.addNotNullConstraint(nn);
+ expected.setNotNullConstraints(nn);
+
+ expected.setForeignKeys(new ArrayList<>());
+ expected.setCheckConstraints(new ArrayList<>());
// Fetch all constraints for the table in default catalog and database
- AllTableConstraintsRequest request = new AllTableConstraintsRequest(table.getDbName(), table.getTableName(), table.getCatName());
+ AllTableConstraintsRequest request =
+ new AllTableConstraintsRequest(table.getDbName(), table.getTableName(), table.getCatName());
SQLAllTableConstraints fetched = client.getAllTableConstraints(request);
-
- // Assert primary key constraint
- Assert.assertEquals(1, fetched.getPrimaryKeysSize());
- verifyPrimaryKey(fetched.getPrimaryKeys().get(0), table, "col1", 1, pkConstraintName);
-
- // Assert unique constraint
- Assert.assertEquals(1, fetched.getUniqueConstraintsSize());
- verifyUniqueConstraints(fetched.getUniqueConstraints().get(0), table, "col2", 1, uniqueConstraintName);
-
- // Assert Default constraint
- Assert.assertEquals(1, fetched.getDefaultConstraintsSize());
- verifyDefaultConstraints(fetched.getDefaultConstraints().get(0), table, "col3", "false", defaultConstraintName);
-
- // Assert Not Null constraint
- Assert.assertEquals(2, fetched.getNotNullConstraintsSize());
- verifyNotNullConstraints(fetched.getNotNullConstraints().get(0), table, "col2", nnCol2ConstraintName);
- verifyNotNullConstraints(fetched.getNotNullConstraints().get(1), table, "col3", nnCol3ConstraintName);
-
- // Check constraints which is not present in table
- Assert.assertTrue(fetched.getCheckConstraints().isEmpty());
- Assert.assertTrue(fetched.getForeignKeys().isEmpty());
+ Assert.assertEquals(expected, fetched);
}
@@ -231,46 +206,45 @@ public class TestGetAllTableConstraints extends MetaStoreClientTest {
public void allConstraintsPresent() throws TException {
Table table = testTables[0];
Table parentTable = testTables[1];
-
+ SQLAllTableConstraints expected = new SQLAllTableConstraints();
// Set col1 as primary key Constraint in default catalog and database
- String pkConstraintName = "col1_pk";
- List<SQLPrimaryKey> pk =
- new SQLPrimaryKeyBuilder().onTable(table).addColumn("col1").setConstraintName(pkConstraintName)
- .build(metaStore.getConf());
+ List<SQLPrimaryKey> pk = new SQLPrimaryKeyBuilder().onTable(table).addColumn("col1").setConstraintName("col1_pk")
+ .build(metaStore.getConf());
client.addPrimaryKey(pk);
+ expected.setPrimaryKeys(pk);
// Set col2 with Unique Constraint in default catalog and database
String uniqueConstraintName = "col2_unique";
List<SQLUniqueConstraint> uc =
- new SQLUniqueConstraintBuilder().onTable(table).addColumn("col2").setConstraintName(uniqueConstraintName)
+ new SQLUniqueConstraintBuilder().onTable(table).addColumn("col2").setConstraintName("col2_unique")
.build(metaStore.getConf());
client.addUniqueConstraint(uc);
+ expected.setUniqueConstraints(uc);
// Set col3 with default Constraint in default catalog and database
- String defaultConstraintName = "col3_default";
List<SQLDefaultConstraint> dv =
- new SQLDefaultConstraintBuilder().onTable(table).addColumn("col3").setConstraintName(defaultConstraintName)
+ new SQLDefaultConstraintBuilder().onTable(table).addColumn("col3").setConstraintName("col3_default")
.setDefaultVal(false).build(metaStore.getConf());
client.addDefaultConstraint(dv);
+ expected.setDefaultConstraints(dv);
// Set col3 with not null constraint in default catalog and database;
- String nnCol3ConstraintName = "col3_not_null";
- List<SQLNotNullConstraint> nnCol2 =
- new SQLNotNullConstraintBuilder().onTable(table).addColumn("col3").setConstraintName(nnCol3ConstraintName)
+ List<SQLNotNullConstraint> nn =
+ new SQLNotNullConstraintBuilder().onTable(table).addColumn("col3").setConstraintName("col3_not_null")
.build(metaStore.getConf());
- client.addNotNullConstraint(nnCol2);
+ client.addNotNullConstraint(nn);
+ expected.setNotNullConstraints(nn);
// Set col2 with not check constraint in default catalog and database;
- String ccCol2ConstraintName = "col2_check";
List<SQLCheckConstraint> cc =
- new SQLCheckConstraintBuilder().onTable(table).addColumn("col2").setConstraintName(ccCol2ConstraintName)
+ new SQLCheckConstraintBuilder().onTable(table).addColumn("col2").setConstraintName("col2_check")
.setCheckExpression("= 5").build(metaStore.getConf());
client.addCheckConstraint(cc);
+ expected.setCheckConstraints(cc);
// Set col1 of parent table to PK and Set Col4 of table to FK
- String parentPkConstraintName = "parentpk";
List<SQLPrimaryKey> parentPk =
- new SQLPrimaryKeyBuilder().onTable(parentTable).addColumn("col1").setConstraintName(parentPkConstraintName)
+ new SQLPrimaryKeyBuilder().onTable(parentTable).addColumn("col1").setConstraintName("parentpk")
.build(metaStore.getConf());
client.addPrimaryKey(parentPk);
String fkConstraintName = "fk";
@@ -278,165 +252,12 @@ public class TestGetAllTableConstraints extends MetaStoreClientTest {
new SQLForeignKeyBuilder().fromPrimaryKey(parentPk).onTable(table).setConstraintName(fkConstraintName)
.addColumn("col4").build(metaStore.getConf());
client.addForeignKey(fk);
+ expected.setForeignKeys(fk);
// Fetch all constraints for the table in default catalog and database
- AllTableConstraintsRequest request = new AllTableConstraintsRequest(table.getDbName(), table.getTableName(), table.getCatName());
- SQLAllTableConstraints fetched = client.getAllTableConstraints(request);
-
- // Assert primary key constraint
- Assert.assertEquals(1, fetched.getPrimaryKeysSize());
- verifyPrimaryKey(fetched.getPrimaryKeys().get(0), table, "col1", 1, pkConstraintName);
-
- // Assert unique constraint
- Assert.assertEquals(1, fetched.getUniqueConstraintsSize());
- verifyUniqueConstraints(fetched.getUniqueConstraints().get(0), table, "col2", 1, uniqueConstraintName);
-
- // Assert Default constraint
- Assert.assertEquals(1, fetched.getDefaultConstraintsSize());
- verifyDefaultConstraints(fetched.getDefaultConstraints().get(0), table, "col3", "false", defaultConstraintName);
-
- // Assert Not Null constraint
- Assert.assertEquals(1, fetched.getNotNullConstraintsSize());
- verifyNotNullConstraints(fetched.getNotNullConstraints().get(0), table, "col3", nnCol3ConstraintName);
-
- // Assert check constraint
- Assert.assertEquals(1, fetched.getNotNullConstraintsSize());
- verifyCheckConstraints(fetched.getCheckConstraints().get(0), table, "col2", "= 5", ccCol2ConstraintName);
-
- // Assert foreign key
- Assert.assertEquals(1, fetched.getForeignKeysSize());
- verifyForeignKey(fetched.getForeignKeys().get(0), parentTable, "col1", parentPkConstraintName, table, "col4", 1,
- fkConstraintName);
-
- }
-
- /**
- * Asset/verify expected Primary key with fetched primary key
- * @param primaryKey fetched primaryKey
- * @param table expected table
- * @param column expected primaryKey Column name
- * @param seq expected primaryKey seq
- * @param pkConstraintName expected constraint name
- */
- public void verifyPrimaryKey(SQLPrimaryKey primaryKey, Table table, String column, int seq, String pkConstraintName) {
- Assert.assertEquals(table.getDbName(), primaryKey.getTable_db());
- Assert.assertEquals(table.getTableName(), primaryKey.getTable_name());
- Assert.assertEquals(column, primaryKey.getColumn_name());
- Assert.assertEquals(seq, primaryKey.getKey_seq());
- Assert.assertEquals(pkConstraintName, primaryKey.getPk_name());
- Assert.assertTrue(primaryKey.isEnable_cstr());
- Assert.assertFalse(primaryKey.isValidate_cstr());
- Assert.assertFalse(primaryKey.isRely_cstr());
- Assert.assertEquals(table.getCatName(), primaryKey.getCatName());
- }
-
- /**
- * Asset/verify expected unique constraint with fetched unique constraint
- * @param uniqueConstraint fetched unique constraint
- * @param table expected table name
- * @param column expected column name
- * @param seq expected seq
- * @param uniqueConstraintName expected unique constraint name
- */
- public void verifyUniqueConstraints(SQLUniqueConstraint uniqueConstraint, Table table, String column, int seq,
- String uniqueConstraintName) {
- Assert.assertEquals(table.getDbName(), uniqueConstraint.getTable_db());
- Assert.assertEquals(table.getTableName(), uniqueConstraint.getTable_name());
- Assert.assertEquals(column, uniqueConstraint.getColumn_name());
- Assert.assertEquals(seq, uniqueConstraint.getKey_seq());
- Assert.assertEquals(uniqueConstraintName, uniqueConstraint.getUk_name());
- Assert.assertTrue(uniqueConstraint.isEnable_cstr());
- Assert.assertFalse(uniqueConstraint.isValidate_cstr());
- Assert.assertFalse(uniqueConstraint.isRely_cstr());
- Assert.assertEquals(table.getCatName(), uniqueConstraint.getCatName());
- }
-
- /**
- * Assert/verify expected default constraint with fetched default constraint
- * @param defaultConstraint fetched default constraint
- * @param table expected table name
- * @param column expected column name
- * @param defaultValue expected column default value
- * @param defaultConstraintName expected default constraint name
- */
- public void verifyDefaultConstraints(SQLDefaultConstraint defaultConstraint, Table table, String column,
- String defaultValue, String defaultConstraintName) {
- Assert.assertEquals(table.getDbName(), defaultConstraint.getTable_db());
- Assert.assertEquals(table.getTableName(), defaultConstraint.getTable_name());
- Assert.assertEquals(column, defaultConstraint.getColumn_name());
- Assert.assertEquals(defaultValue, defaultConstraint.getDefault_value());
- Assert.assertEquals(defaultConstraintName, defaultConstraint.getDc_name());
- Assert.assertTrue(defaultConstraint.isEnable_cstr());
- Assert.assertFalse(defaultConstraint.isValidate_cstr());
- Assert.assertFalse(defaultConstraint.isRely_cstr());
- Assert.assertEquals(table.getCatName(), defaultConstraint.getCatName());
- }
-
- /**
- * Assert/verify expected not null constraint with fetched not null constraint
- * @param notNullConstraint fetched not null constraint
- * @param table expected table name
- * @param column expected column name
- * @param notNullConstraintName expected not null constraint name
- */
- public void verifyNotNullConstraints(SQLNotNullConstraint notNullConstraint, Table table, String column,
- String notNullConstraintName) {
- Assert.assertEquals(table.getDbName(), notNullConstraint.getTable_db());
- Assert.assertEquals(table.getTableName(), notNullConstraint.getTable_name());
- Assert.assertEquals(column, notNullConstraint.getColumn_name());
- Assert.assertEquals(notNullConstraintName, notNullConstraint.getNn_name());
- Assert.assertTrue(notNullConstraint.isEnable_cstr());
- Assert.assertFalse(notNullConstraint.isValidate_cstr());
- Assert.assertFalse(notNullConstraint.isRely_cstr());
- Assert.assertEquals(table.getCatName(), notNullConstraint.getCatName());
- }
-
- /**
- * Assert/verify expected check constraint with fetched check constraint
- * @param checkConstraint fetched check constraint
- * @param table expected table name
- * @param column expected column name
- * @param checkValue expected check value
- * @param checkConstraintName expected check constraint name
- */
- public void verifyCheckConstraints(SQLCheckConstraint checkConstraint, Table table, String column, String checkValue,
- String checkConstraintName) {
- Assert.assertEquals(table.getDbName(), checkConstraint.getTable_db());
- Assert.assertEquals(table.getTableName(), checkConstraint.getTable_name());
- Assert.assertEquals(column, checkConstraint.getColumn_name());
- Assert.assertEquals(checkValue, checkConstraint.getCheck_expression());
- Assert.assertEquals(checkConstraintName, checkConstraint.getDc_name());
- Assert.assertTrue(checkConstraint.isEnable_cstr());
- Assert.assertFalse(checkConstraint.isValidate_cstr());
- Assert.assertFalse(checkConstraint.isRely_cstr());
- Assert.assertEquals(table.getCatName(), checkConstraint.getCatName());
- }
-
- /**
- * Assert/verify expected foreign key with fetched foreign key
- * @param foreignKey fetched foreign key
- * @param parentTable expected parent table name
- * @param parentPkColumn expected primary key column name in parent table
- * @param parentPkConstraintName expected primary key constraint name in parent table
- * @param fkTable expected foreign key table name
- * @param fkColumn expected foreign key column name
- * @param fkSeq expected foreign key seq
- * @param fkConstraintName expected foreign key constraint name
- */
- public void verifyForeignKey(SQLForeignKey foreignKey, Table parentTable, String parentPkColumn,
- String parentPkConstraintName, Table fkTable, String fkColumn, int fkSeq, String fkConstraintName) {
- Assert.assertEquals(fkTable.getDbName(), foreignKey.getFktable_db());
- Assert.assertEquals(fkTable.getTableName(), foreignKey.getFktable_name());
- Assert.assertEquals(fkColumn, foreignKey.getFkcolumn_name());
- Assert.assertEquals(parentTable.getDbName(), foreignKey.getPktable_db());
- Assert.assertEquals(parentTable.getTableName(), foreignKey.getPktable_name());
- Assert.assertEquals(parentPkColumn, foreignKey.getPkcolumn_name());
- Assert.assertEquals(fkSeq, foreignKey.getKey_seq());
- Assert.assertEquals(parentPkConstraintName, foreignKey.getPk_name());
- Assert.assertEquals(fkConstraintName, foreignKey.getFk_name());
- Assert.assertTrue(foreignKey.isEnable_cstr());
- Assert.assertFalse(foreignKey.isValidate_cstr());
- Assert.assertFalse(foreignKey.isRely_cstr());
- Assert.assertEquals(fkTable.getCatName(), foreignKey.getCatName());
+ AllTableConstraintsRequest request =
+ new AllTableConstraintsRequest(table.getDbName(), table.getTableName(), table.getCatName());
+ SQLAllTableConstraints actual = client.getAllTableConstraints(request);
+ Assert.assertEquals(expected, actual);
}
}
\ No newline at end of file
diff --git a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestNotNullConstraint.java b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestNotNullConstraint.java
index b32eeda..d0034d2 100644
--- a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestNotNullConstraint.java
+++ b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestNotNullConstraint.java
@@ -161,20 +161,12 @@ public class TestNotNullConstraint extends MetaStoreClientTest {
rqst = new NotNullConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
fetched = client.getNotNullConstraints(rqst);
- Assert.assertEquals(1, fetched.size());
- Assert.assertEquals(table.getDbName(), fetched.get(0).getTable_db());
- Assert.assertEquals(table.getTableName(), fetched.get(0).getTable_name());
- Assert.assertEquals("col1", fetched.get(0).getColumn_name());
- Assert.assertEquals(table.getTableName() + "_not_null_constraint", fetched.get(0).getNn_name());
- String table0PkName = fetched.get(0).getNn_name();
- Assert.assertTrue(fetched.get(0).isEnable_cstr());
- Assert.assertFalse(fetched.get(0).isValidate_cstr());
- Assert.assertFalse(fetched.get(0).isRely_cstr());
- Assert.assertEquals(table.getCatName(), fetched.get(0).getCatName());
+ nn.get(0).setNn_name(fetched.get(0).getNn_name());
+ Assert.assertEquals(nn, fetched);
// Drop a primary key
client.dropConstraint(table.getCatName(), table.getDbName(),
- table.getTableName(), table0PkName);
+ table.getTableName(), nn.get(0).getNn_name());
rqst = new NotNullConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
fetched = client.getNotNullConstraints(rqst);
Assert.assertTrue(fetched.isEmpty());
@@ -197,15 +189,7 @@ public class TestNotNullConstraint extends MetaStoreClientTest {
NotNullConstraintsRequest rqst = new NotNullConstraintsRequest(testTables[2].getCatName(),
testTables[2].getDbName(), testTables[2].getTableName());
List<SQLNotNullConstraint> fetched = client.getNotNullConstraints(rqst);
- Assert.assertEquals(1, fetched.size());
- Assert.assertEquals(testTables[2].getDbName(), fetched.get(0).getTable_db());
- Assert.assertEquals(testTables[2].getTableName(), fetched.get(0).getTable_name());
- Assert.assertEquals("col1", fetched.get(0).getColumn_name());
- Assert.assertEquals(constraintName, fetched.get(0).getNn_name());
- Assert.assertTrue(fetched.get(0).isEnable_cstr());
- Assert.assertFalse(fetched.get(0).isValidate_cstr());
- Assert.assertFalse(fetched.get(0).isRely_cstr());
- Assert.assertEquals(testTables[2].getCatName(), fetched.get(0).getCatName());
+ Assert.assertEquals(nn, fetched);
client.dropConstraint(testTables[2].getCatName(), testTables[2].getDbName(),
testTables[2].getTableName(), constraintName);
@@ -234,15 +218,7 @@ public class TestNotNullConstraint extends MetaStoreClientTest {
NotNullConstraintsRequest rqst = new NotNullConstraintsRequest(table.getCatName(),
table.getDbName(), table.getTableName());
List<SQLNotNullConstraint> fetched = client.getNotNullConstraints(rqst);
- Assert.assertEquals(1, fetched.size());
- Assert.assertEquals(table.getDbName(), fetched.get(0).getTable_db());
- Assert.assertEquals(table.getTableName(), fetched.get(0).getTable_name());
- Assert.assertEquals("col1", fetched.get(0).getColumn_name());
- Assert.assertEquals(constraintName, fetched.get(0).getNn_name());
- Assert.assertTrue(fetched.get(0).isEnable_cstr());
- Assert.assertFalse(fetched.get(0).isValidate_cstr());
- Assert.assertFalse(fetched.get(0).isRely_cstr());
- Assert.assertEquals(table.getCatName(), fetched.get(0).getCatName());
+ Assert.assertEquals(nn, fetched);
client.dropConstraint(table.getCatName(), table.getDbName(), table.getTableName(), constraintName);
rqst = new NotNullConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
@@ -269,18 +245,11 @@ public class TestNotNullConstraint extends MetaStoreClientTest {
NotNullConstraintsRequest rqst = new NotNullConstraintsRequest(table.getCatName(),
table.getDbName(), table.getTableName());
List<SQLNotNullConstraint> fetched = client.getNotNullConstraints(rqst);
- Assert.assertEquals(1, fetched.size());
- Assert.assertEquals(table.getDbName(), fetched.get(0).getTable_db());
- Assert.assertEquals(table.getTableName(), fetched.get(0).getTable_name());
- Assert.assertEquals("col1", fetched.get(0).getColumn_name());
- Assert.assertEquals(table.getTableName() + "_not_null_constraint", fetched.get(0).getNn_name());
- String tablePkName = fetched.get(0).getNn_name();
- Assert.assertTrue(fetched.get(0).isEnable_cstr());
- Assert.assertFalse(fetched.get(0).isValidate_cstr());
- Assert.assertFalse(fetched.get(0).isRely_cstr());
- Assert.assertEquals(table.getCatName(), fetched.get(0).getCatName());
-
- client.dropConstraint(table.getCatName(), table.getDbName(), table.getTableName(), tablePkName);
+ nn.get(0).setNn_name(fetched.get(0).getNn_name());
+ Assert.assertEquals(nn, fetched);
+
+
+ client.dropConstraint(table.getCatName(), table.getDbName(), table.getTableName(), nn.get(0).getNn_name());
rqst = new NotNullConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
fetched = client.getNotNullConstraints(rqst);
Assert.assertTrue(fetched.isEmpty());
diff --git a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestPrimaryKey.java b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestPrimaryKey.java
index c33572b..a33dffd 100644
--- a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestPrimaryKey.java
+++ b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestPrimaryKey.java
@@ -163,21 +163,12 @@ public class TestPrimaryKey extends MetaStoreClientTest {
rqst = new PrimaryKeysRequest(table.getDbName(), table.getTableName());
rqst.setCatName(table.getCatName());
fetched = client.getPrimaryKeys(rqst);
- Assert.assertEquals(1, fetched.size());
- Assert.assertEquals(table.getDbName(), fetched.get(0).getTable_db());
- Assert.assertEquals(table.getTableName(), fetched.get(0).getTable_name());
- Assert.assertEquals("col1", fetched.get(0).getColumn_name());
- Assert.assertEquals(1, fetched.get(0).getKey_seq());
- Assert.assertEquals(table.getTableName() + "_primary_key", fetched.get(0).getPk_name());
- String table0PkName = fetched.get(0).getPk_name();
- Assert.assertTrue(fetched.get(0).isEnable_cstr());
- Assert.assertFalse(fetched.get(0).isValidate_cstr());
- Assert.assertFalse(fetched.get(0).isRely_cstr());
- Assert.assertEquals(table.getCatName(), fetched.get(0).getCatName());
+ pk.get(0).setPk_name(fetched.get(0).getPk_name());
+ Assert.assertEquals(pk, fetched);
// Drop a primary key
client.dropConstraint(table.getCatName(), table.getDbName(),
- table.getTableName(), table0PkName);
+ table.getTableName(), pk.get(0).getPk_name());
rqst = new PrimaryKeysRequest(table.getDbName(), table.getTableName());
rqst.setCatName(table.getCatName());
fetched = client.getPrimaryKeys(rqst);
@@ -213,19 +204,7 @@ public class TestPrimaryKey extends MetaStoreClientTest {
rqst = new PrimaryKeysRequest(table.getDbName(), table.getTableName());
rqst.setCatName(table.getCatName());
fetched = client.getPrimaryKeys(rqst);
- Assert.assertEquals(2, fetched.size());
- Assert.assertEquals(table.getDbName(), fetched.get(0).getTable_db());
- Assert.assertEquals(table.getTableName(), fetched.get(0).getTable_name());
- Assert.assertEquals("col1", fetched.get(0).getColumn_name());
- Assert.assertEquals("col2", fetched.get(1).getColumn_name());
- Assert.assertEquals(1, fetched.get(0).getKey_seq());
- Assert.assertEquals(2, fetched.get(1).getKey_seq());
- Assert.assertEquals(constraintName, fetched.get(0).getPk_name());
- Assert.assertEquals(fetched.get(0).getPk_name(), fetched.get(1).getPk_name());
- Assert.assertFalse(fetched.get(0).isEnable_cstr());
- Assert.assertTrue(fetched.get(0).isValidate_cstr());
- Assert.assertTrue(fetched.get(0).isRely_cstr());
- Assert.assertEquals(table.getCatName(), fetched.get(0).getCatName());
+ Assert.assertEquals(pk, fetched);
// Drop a named primary key
client.dropConstraint(table.getCatName(), table.getDbName(), table.getTableName(), constraintName);
@@ -258,16 +237,7 @@ public class TestPrimaryKey extends MetaStoreClientTest {
rqst = new PrimaryKeysRequest(testTables[2].getDbName(), testTables[2].getTableName());
rqst.setCatName(testTables[2].getCatName());
fetched = client.getPrimaryKeys(rqst);
- Assert.assertEquals(1, fetched.size());
- Assert.assertEquals(testTables[2].getDbName(), fetched.get(0).getTable_db());
- Assert.assertEquals(testTables[2].getTableName(), fetched.get(0).getTable_name());
- Assert.assertEquals("col1", fetched.get(0).getColumn_name());
- Assert.assertEquals(1, fetched.get(0).getKey_seq());
- Assert.assertEquals(constraintName, fetched.get(0).getPk_name());
- Assert.assertTrue(fetched.get(0).isEnable_cstr());
- Assert.assertFalse(fetched.get(0).isValidate_cstr());
- Assert.assertFalse(fetched.get(0).isRely_cstr());
- Assert.assertEquals(testTables[2].getCatName(), fetched.get(0).getCatName());
+ Assert.assertEquals(pk, fetched);
client.dropConstraint(testTables[2].getCatName(), testTables[2].getDbName(),
testTables[2].getTableName(), constraintName);
@@ -296,16 +266,7 @@ public class TestPrimaryKey extends MetaStoreClientTest {
PrimaryKeysRequest rqst = new PrimaryKeysRequest(table.getDbName(), table.getTableName());
rqst.setCatName(table.getCatName());
List<SQLPrimaryKey> fetched = client.getPrimaryKeys(rqst);
- Assert.assertEquals(1, fetched.size());
- Assert.assertEquals(table.getDbName(), fetched.get(0).getTable_db());
- Assert.assertEquals(table.getTableName(), fetched.get(0).getTable_name());
- Assert.assertEquals("col1", fetched.get(0).getColumn_name());
- Assert.assertEquals(1, fetched.get(0).getKey_seq());
- Assert.assertEquals(constraintName, fetched.get(0).getPk_name());
- Assert.assertTrue(fetched.get(0).isEnable_cstr());
- Assert.assertFalse(fetched.get(0).isValidate_cstr());
- Assert.assertFalse(fetched.get(0).isRely_cstr());
- Assert.assertEquals(table.getCatName(), fetched.get(0).getCatName());
+ Assert.assertEquals(pk, fetched);
client.dropConstraint(table.getCatName(), table.getDbName(), table.getTableName(), constraintName);
rqst = new PrimaryKeysRequest(table.getDbName(), table.getTableName());
@@ -333,19 +294,10 @@ public class TestPrimaryKey extends MetaStoreClientTest {
PrimaryKeysRequest rqst = new PrimaryKeysRequest(table.getDbName(), table.getTableName());
rqst.setCatName(table.getCatName());
List<SQLPrimaryKey> fetched = client.getPrimaryKeys(rqst);
- Assert.assertEquals(1, fetched.size());
- Assert.assertEquals(table.getDbName(), fetched.get(0).getTable_db());
- Assert.assertEquals(table.getTableName(), fetched.get(0).getTable_name());
- Assert.assertEquals("col1", fetched.get(0).getColumn_name());
- Assert.assertEquals(1, fetched.get(0).getKey_seq());
- Assert.assertEquals(table.getTableName() + "_primary_key", fetched.get(0).getPk_name());
- String tablePkName = fetched.get(0).getPk_name();
- Assert.assertTrue(fetched.get(0).isEnable_cstr());
- Assert.assertFalse(fetched.get(0).isValidate_cstr());
- Assert.assertFalse(fetched.get(0).isRely_cstr());
- Assert.assertEquals(table.getCatName(), fetched.get(0).getCatName());
-
- client.dropConstraint(table.getCatName(), table.getDbName(), table.getTableName(), tablePkName);
+ pk.get(0).setPk_name(fetched.get(0).getPk_name());
+ Assert.assertEquals(pk, fetched);
+
+ client.dropConstraint(table.getCatName(), table.getDbName(), table.getTableName(), pk.get(0).getPk_name());
rqst = new PrimaryKeysRequest(table.getDbName(), table.getTableName());
rqst.setCatName(table.getCatName());
fetched = client.getPrimaryKeys(rqst);
diff --git a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestUniqueConstraint.java b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestUniqueConstraint.java
index 5842ec5..9eaafbf 100644
--- a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestUniqueConstraint.java
+++ b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestUniqueConstraint.java
@@ -161,21 +161,13 @@ public class TestUniqueConstraint extends MetaStoreClientTest {
rqst = new UniqueConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
fetched = client.getUniqueConstraints(rqst);
- Assert.assertEquals(1, fetched.size());
- Assert.assertEquals(table.getDbName(), fetched.get(0).getTable_db());
- Assert.assertEquals(table.getTableName(), fetched.get(0).getTable_name());
- Assert.assertEquals("col1", fetched.get(0).getColumn_name());
- Assert.assertEquals(1, fetched.get(0).getKey_seq());
- Assert.assertEquals(table.getTableName() + "_unique_constraint", fetched.get(0).getUk_name());
- String table0PkName = fetched.get(0).getUk_name();
- Assert.assertTrue(fetched.get(0).isEnable_cstr());
- Assert.assertFalse(fetched.get(0).isValidate_cstr());
- Assert.assertFalse(fetched.get(0).isRely_cstr());
- Assert.assertEquals(table.getCatName(), fetched.get(0).getCatName());
+ uc.get(0).setUk_name(fetched.get(0).getUk_name());
+ Assert.assertEquals(uc, fetched);
+
// Drop a primary key
client.dropConstraint(table.getCatName(), table.getDbName(),
- table.getTableName(), table0PkName);
+ table.getTableName(), uc.get(0).getUk_name());
rqst = new UniqueConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
fetched = client.getUniqueConstraints(rqst);
Assert.assertTrue(fetched.isEmpty());
@@ -198,16 +190,8 @@ public class TestUniqueConstraint extends MetaStoreClientTest {
UniqueConstraintsRequest rqst = new UniqueConstraintsRequest(testTables[2].getCatName(),
testTables[2].getDbName(), testTables[2].getTableName());
List<SQLUniqueConstraint> fetched = client.getUniqueConstraints(rqst);
- Assert.assertEquals(1, fetched.size());
- Assert.assertEquals(testTables[2].getDbName(), fetched.get(0).getTable_db());
- Assert.assertEquals(testTables[2].getTableName(), fetched.get(0).getTable_name());
- Assert.assertEquals("col1", fetched.get(0).getColumn_name());
- Assert.assertEquals(1, fetched.get(0).getKey_seq());
- Assert.assertEquals(constraintName, fetched.get(0).getUk_name());
- Assert.assertTrue(fetched.get(0).isEnable_cstr());
- Assert.assertFalse(fetched.get(0).isValidate_cstr());
- Assert.assertFalse(fetched.get(0).isRely_cstr());
- Assert.assertEquals(testTables[2].getCatName(), fetched.get(0).getCatName());
+ Assert.assertEquals(uc, fetched);
+
client.dropConstraint(testTables[2].getCatName(), testTables[2].getDbName(),
testTables[2].getTableName(), constraintName);
@@ -235,16 +219,7 @@ public class TestUniqueConstraint extends MetaStoreClientTest {
client.createTableWithConstraints(table, null, null, uc, null, null, null);
UniqueConstraintsRequest rqst = new UniqueConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
List<SQLUniqueConstraint> fetched = client.getUniqueConstraints(rqst);
- Assert.assertEquals(1, fetched.size());
- Assert.assertEquals(table.getDbName(), fetched.get(0).getTable_db());
- Assert.assertEquals(table.getTableName(), fetched.get(0).getTable_name());
- Assert.assertEquals("col1", fetched.get(0).getColumn_name());
- Assert.assertEquals(1, fetched.get(0).getKey_seq());
- Assert.assertEquals(constraintName, fetched.get(0).getUk_name());
- Assert.assertTrue(fetched.get(0).isEnable_cstr());
- Assert.assertFalse(fetched.get(0).isValidate_cstr());
- Assert.assertFalse(fetched.get(0).isRely_cstr());
- Assert.assertEquals(table.getCatName(), fetched.get(0).getCatName());
+ Assert.assertEquals(uc, fetched);
client.dropConstraint(table.getCatName(), table.getDbName(), table.getTableName(), constraintName);
rqst = new UniqueConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
@@ -270,19 +245,10 @@ public class TestUniqueConstraint extends MetaStoreClientTest {
client.createTableWithConstraints(table, null, null, uc, null, null, null);
UniqueConstraintsRequest rqst = new UniqueConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
List<SQLUniqueConstraint> fetched = client.getUniqueConstraints(rqst);
- Assert.assertEquals(1, fetched.size());
- Assert.assertEquals(table.getDbName(), fetched.get(0).getTable_db());
- Assert.assertEquals(table.getTableName(), fetched.get(0).getTable_name());
- Assert.assertEquals("col1", fetched.get(0).getColumn_name());
- Assert.assertEquals(1, fetched.get(0).getKey_seq());
- Assert.assertEquals(table.getTableName() + "_unique_constraint", fetched.get(0).getUk_name());
- String tablePkName = fetched.get(0).getUk_name();
- Assert.assertTrue(fetched.get(0).isEnable_cstr());
- Assert.assertFalse(fetched.get(0).isValidate_cstr());
- Assert.assertFalse(fetched.get(0).isRely_cstr());
- Assert.assertEquals(table.getCatName(), fetched.get(0).getCatName());
-
- client.dropConstraint(table.getCatName(), table.getDbName(), table.getTableName(), tablePkName);
+ uc.get(0).setUk_name(fetched.get(0).getUk_name());
+ Assert.assertEquals(uc, fetched);
+
+ client.dropConstraint(table.getCatName(), table.getDbName(), table.getTableName(), uc.get(0).getUk_name());
rqst = new UniqueConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
fetched = client.getUniqueConstraints(rqst);
Assert.assertTrue(fetched.isEmpty());