use of org.apache.hadoop.hive.metastore.client.builder.SQLUniqueConstraintBuilder in project hive by apache.
the class NonCatCallsWithCatalog method createTableWithConstraints.
@Test
public void createTableWithConstraints() throws TException {
Table parentTable = testTables[2];
Table table = new TableBuilder().setTableName("table_in_other_catalog_with_constraints").addCol("col1", "int").addCol("col2", "varchar(32)").addCol("col3", "int").addCol("col4", "int").addCol("col5", "int").addCol("col6", "int").build(conf);
table.unsetCatName();
List<SQLPrimaryKey> parentPk = new SQLPrimaryKeyBuilder().onTable(parentTable).addColumn("test_col1").build(conf);
for (SQLPrimaryKey pkcol : parentPk) {
pkcol.unsetCatName();
}
client.addPrimaryKey(parentPk);
List<SQLPrimaryKey> pk = new SQLPrimaryKeyBuilder().onTable(table).addColumn("col2").build(conf);
for (SQLPrimaryKey pkcol : pk) {
pkcol.unsetCatName();
}
List<SQLForeignKey> fk = new SQLForeignKeyBuilder().fromPrimaryKey(parentPk).onTable(table).addColumn("col1").build(conf);
for (SQLForeignKey fkcol : fk) {
fkcol.unsetCatName();
}
List<SQLDefaultConstraint> dv = new SQLDefaultConstraintBuilder().onTable(table).addColumn("col3").setDefaultVal(0).build(conf);
for (SQLDefaultConstraint dccol : dv) {
dccol.unsetCatName();
}
List<SQLNotNullConstraint> nn = new SQLNotNullConstraintBuilder().onTable(table).addColumn("col4").build(conf);
for (SQLNotNullConstraint nncol : nn) {
nncol.unsetCatName();
}
List<SQLUniqueConstraint> uc = new SQLUniqueConstraintBuilder().onTable(table).addColumn("col5").build(conf);
for (SQLUniqueConstraint uccol : uc) {
uccol.unsetCatName();
}
List<SQLCheckConstraint> cc = new SQLCheckConstraintBuilder().onTable(table).addColumn("col6").setCheckExpression("> 0").build(conf);
for (SQLCheckConstraint cccol : cc) {
cccol.unsetCatName();
}
client.createTableWithConstraints(table, pk, fk, uc, nn, dv, cc);
PrimaryKeysRequest pkRqst = new PrimaryKeysRequest(parentTable.getDbName(), parentTable.getTableName());
pkRqst.setCatName(parentTable.getCatName());
List<SQLPrimaryKey> pkFetched = client.getPrimaryKeys(pkRqst);
Assert.assertEquals(1, pkFetched.size());
Assert.assertEquals(expectedCatalog(), pkFetched.get(0).getCatName());
Assert.assertEquals(parentTable.getDbName(), pkFetched.get(0).getTable_db());
Assert.assertEquals(parentTable.getTableName(), pkFetched.get(0).getTable_name());
Assert.assertEquals("test_col1", pkFetched.get(0).getColumn_name());
Assert.assertEquals(1, pkFetched.get(0).getKey_seq());
Assert.assertTrue(pkFetched.get(0).isEnable_cstr());
Assert.assertFalse(pkFetched.get(0).isValidate_cstr());
Assert.assertFalse(pkFetched.get(0).isRely_cstr());
Assert.assertEquals(parentTable.getCatName(), pkFetched.get(0).getCatName());
ForeignKeysRequest fkRqst = new ForeignKeysRequest(parentTable.getDbName(), parentTable.getTableName(), table.getDbName(), table.getTableName());
fkRqst.setCatName(table.getCatName());
List<SQLForeignKey> fkFetched = client.getForeignKeys(fkRqst);
Assert.assertEquals(1, fkFetched.size());
Assert.assertEquals(expectedCatalog(), fkFetched.get(0).getCatName());
Assert.assertEquals(table.getDbName(), fkFetched.get(0).getFktable_db());
Assert.assertEquals(table.getTableName(), fkFetched.get(0).getFktable_name());
Assert.assertEquals("col1", fkFetched.get(0).getFkcolumn_name());
Assert.assertEquals(parentTable.getDbName(), fkFetched.get(0).getPktable_db());
Assert.assertEquals(parentTable.getTableName(), fkFetched.get(0).getPktable_name());
Assert.assertEquals(1, fkFetched.get(0).getKey_seq());
Assert.assertEquals(parentTable.getTableName() + "_primary_key", fkFetched.get(0).getPk_name());
Assert.assertTrue(fkFetched.get(0).isEnable_cstr());
Assert.assertFalse(fkFetched.get(0).isValidate_cstr());
Assert.assertFalse(fkFetched.get(0).isRely_cstr());
Assert.assertEquals(table.getCatName(), fkFetched.get(0).getCatName());
NotNullConstraintsRequest nnRqst = new NotNullConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
List<SQLNotNullConstraint> nnFetched = client.getNotNullConstraints(nnRqst);
Assert.assertEquals(1, nnFetched.size());
Assert.assertEquals(table.getDbName(), nnFetched.get(0).getTable_db());
Assert.assertEquals(table.getTableName(), nnFetched.get(0).getTable_name());
Assert.assertEquals("col4", nnFetched.get(0).getColumn_name());
Assert.assertEquals(table.getTableName() + "_not_null_constraint", nnFetched.get(0).getNn_name());
Assert.assertTrue(nnFetched.get(0).isEnable_cstr());
Assert.assertFalse(nnFetched.get(0).isValidate_cstr());
Assert.assertFalse(nnFetched.get(0).isRely_cstr());
Assert.assertEquals(table.getCatName(), nnFetched.get(0).getCatName());
UniqueConstraintsRequest ucRqst = new UniqueConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
List<SQLUniqueConstraint> ucFetched = client.getUniqueConstraints(ucRqst);
Assert.assertEquals(1, ucFetched.size());
Assert.assertEquals(table.getDbName(), ucFetched.get(0).getTable_db());
Assert.assertEquals(table.getTableName(), ucFetched.get(0).getTable_name());
Assert.assertEquals("col5", ucFetched.get(0).getColumn_name());
Assert.assertEquals(1, ucFetched.get(0).getKey_seq());
Assert.assertEquals(table.getTableName() + "_unique_constraint", ucFetched.get(0).getUk_name());
Assert.assertTrue(ucFetched.get(0).isEnable_cstr());
Assert.assertFalse(ucFetched.get(0).isValidate_cstr());
Assert.assertFalse(ucFetched.get(0).isRely_cstr());
Assert.assertEquals(table.getCatName(), ucFetched.get(0).getCatName());
DefaultConstraintsRequest dcRqst = new DefaultConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
List<SQLDefaultConstraint> dcFetched = client.getDefaultConstraints(dcRqst);
Assert.assertEquals(1, dcFetched.size());
Assert.assertEquals(expectedCatalog(), dcFetched.get(0).getCatName());
Assert.assertEquals(table.getDbName(), dcFetched.get(0).getTable_db());
Assert.assertEquals(table.getTableName(), dcFetched.get(0).getTable_name());
Assert.assertEquals("col3", dcFetched.get(0).getColumn_name());
Assert.assertEquals("0", dcFetched.get(0).getDefault_value());
Assert.assertEquals(table.getTableName() + "_default_value", dcFetched.get(0).getDc_name());
Assert.assertTrue(dcFetched.get(0).isEnable_cstr());
Assert.assertFalse(dcFetched.get(0).isValidate_cstr());
Assert.assertFalse(dcFetched.get(0).isRely_cstr());
Assert.assertEquals(table.getCatName(), dcFetched.get(0).getCatName());
CheckConstraintsRequest ccRqst = new CheckConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
List<SQLCheckConstraint> ccFetched = client.getCheckConstraints(ccRqst);
Assert.assertEquals(1, ccFetched.size());
Assert.assertEquals(expectedCatalog(), ccFetched.get(0).getCatName());
Assert.assertEquals(table.getDbName(), ccFetched.get(0).getTable_db());
Assert.assertEquals(table.getTableName(), ccFetched.get(0).getTable_name());
Assert.assertEquals("col6", ccFetched.get(0).getColumn_name());
Assert.assertEquals("> 0", ccFetched.get(0).getCheck_expression());
Assert.assertEquals(table.getTableName() + "_check_constraint", ccFetched.get(0).getDc_name());
Assert.assertTrue(ccFetched.get(0).isEnable_cstr());
Assert.assertFalse(ccFetched.get(0).isValidate_cstr());
Assert.assertFalse(ccFetched.get(0).isRely_cstr());
Assert.assertEquals(table.getCatName(), ccFetched.get(0).getCatName());
}
use of org.apache.hadoop.hive.metastore.client.builder.SQLUniqueConstraintBuilder in project hive by apache.
the class TestGetAllTableConstraints method fewPresentWithMultipleConstraints.
/**
* Test where only some of the constraints are present along with multiple values for a single constraint
* @throws TException
*/
@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
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
List<SQLUniqueConstraint> uc = 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
List<SQLDefaultConstraint> dv = 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;
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());
SQLAllTableConstraints fetched = client.getAllTableConstraints(request);
Assert.assertEquals(expected, fetched);
}
use of org.apache.hadoop.hive.metastore.client.builder.SQLUniqueConstraintBuilder in project hive by apache.
the class TestUniqueConstraint method createTableWithConstraintsPkInOtherCatalog.
@Test
public void createTableWithConstraintsPkInOtherCatalog() throws TException {
Table table = new TableBuilder().setTableName("table_in_other_catalog_with_constraints").inDb(inOtherCatalog).addCol("col1", "int").addCol("col2", "varchar(32)").build(metaStore.getConf());
List<SQLUniqueConstraint> uc = new SQLUniqueConstraintBuilder().onTable(table).addColumn("col1").build(metaStore.getConf());
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);
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());
}
use of org.apache.hadoop.hive.metastore.client.builder.SQLUniqueConstraintBuilder in project hive by apache.
the class TestUniqueConstraint method createGetDrop.
@Test
public void createGetDrop() throws TException {
Table table = testTables[0];
// Make sure get on a table with no key returns empty list
UniqueConstraintsRequest rqst = new UniqueConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
List<SQLUniqueConstraint> fetched = client.getUniqueConstraints(rqst);
Assert.assertTrue(fetched.isEmpty());
// Single column unnamed primary key in default catalog and database
List<SQLUniqueConstraint> uc = new SQLUniqueConstraintBuilder().onTable(table).addColumn("col1").build(metaStore.getConf());
client.addUniqueConstraint(uc);
rqst = new UniqueConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
fetched = client.getUniqueConstraints(rqst);
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(), uc.get(0).getUk_name());
rqst = new UniqueConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
fetched = client.getUniqueConstraints(rqst);
Assert.assertTrue(fetched.isEmpty());
// Make sure I can add it back
client.addUniqueConstraint(uc);
}
use of org.apache.hadoop.hive.metastore.client.builder.SQLUniqueConstraintBuilder in project hive by apache.
the class TestUniqueConstraint method createTableWithConstraintsPk.
@Test
public void createTableWithConstraintsPk() throws TException {
String constraintName = "ctwcuc";
Table table = new TableBuilder().setTableName("table_with_constraints").addCol("col1", "int").addCol("col2", "varchar(32)").build(metaStore.getConf());
List<SQLUniqueConstraint> uc = new SQLUniqueConstraintBuilder().onTable(table).addColumn("col1").setConstraintName(constraintName).build(metaStore.getConf());
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(uc, fetched);
client.dropConstraint(table.getCatName(), table.getDbName(), table.getTableName(), constraintName);
rqst = new UniqueConstraintsRequest(table.getCatName(), table.getDbName(), table.getTableName());
fetched = client.getUniqueConstraints(rqst);
Assert.assertTrue(fetched.isEmpty());
}
Aggregations