use of org.apache.hadoop.hive.metastore.client.builder.SQLPrimaryKeyBuilder in project hive by apache.
the class TestForeignKey method addNoSuchCatalog.
@Test
public void addNoSuchCatalog() throws TException {
Table parentTable = testTables[0];
List<SQLPrimaryKey> pk = new SQLPrimaryKeyBuilder().onTable(parentTable).addColumn("col1").build(metaStore.getConf());
client.addPrimaryKey(pk);
try {
List<SQLForeignKey> fk = new SQLForeignKeyBuilder().setTableName(testTables[0].getTableName()).setDbName(testTables[0].getDbName()).setCatName("nosuch").fromPrimaryKey(pk).addColumn("col2").build(metaStore.getConf());
client.addForeignKey(fk);
Assert.fail();
} catch (InvalidObjectException | TApplicationException e) {
// NOP
}
}
use of org.apache.hadoop.hive.metastore.client.builder.SQLPrimaryKeyBuilder in project hive by apache.
the class TestForeignKey method createTableWithConstraints.
@Test
public void createTableWithConstraints() throws TException {
String constraintName = "ctwckk";
Table parentTable = testTables[0];
Table table = new TableBuilder().setTableName("table_with_constraints").setDbName(parentTable.getDbName()).addCol("col1", "int").addCol("col2", "varchar(32)").build(metaStore.getConf());
List<SQLPrimaryKey> pk = new SQLPrimaryKeyBuilder().onTable(parentTable).addColumn("col1").build(metaStore.getConf());
client.addPrimaryKey(pk);
List<SQLForeignKey> fk = new SQLForeignKeyBuilder().fromPrimaryKey(pk).onTable(table).addColumn("col1").setConstraintName(constraintName).build(metaStore.getConf());
client.createTableWithConstraints(table, null, fk, null, null, null, null);
ForeignKeysRequest rqst = new ForeignKeysRequest(parentTable.getDbName(), parentTable.getTableName(), table.getDbName(), table.getTableName());
rqst.setCatName(table.getCatName());
List<SQLForeignKey> fetched = client.getForeignKeys(rqst);
Assert.assertEquals(fk, fetched);
}
use of org.apache.hadoop.hive.metastore.client.builder.SQLPrimaryKeyBuilder 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.SQLPrimaryKeyBuilder in project hive by apache.
the class TestPrimaryKey method addNoSuchTable.
@Test
public void addNoSuchTable() throws TException {
try {
List<SQLPrimaryKey> pk = new SQLPrimaryKeyBuilder().setTableName("nosuch").addColumn("col2").build(metaStore.getConf());
client.addPrimaryKey(pk);
Assert.fail();
} catch (InvalidObjectException | TApplicationException e) {
// NOP
}
}
use of org.apache.hadoop.hive.metastore.client.builder.SQLPrimaryKeyBuilder in project hive by apache.
the class TestPrimaryKey method createGetDrop2Column.
@Test
public void createGetDrop2Column() throws TException {
// Make sure get on a table with no key returns empty list
Table table = testTables[1];
PrimaryKeysRequest rqst = new PrimaryKeysRequest(table.getDbName(), table.getTableName());
rqst.setCatName(table.getCatName());
List<SQLPrimaryKey> fetched = client.getPrimaryKeys(rqst);
Assert.assertTrue(fetched.isEmpty());
String constraintName = "cgd2cpk";
// Multi-column. Also covers table in non-default database
List<SQLPrimaryKey> pk = new SQLPrimaryKeyBuilder().onTable(table).addColumn("col1").addColumn("col2").setEnable(false).setConstraintName(constraintName).setValidate(true).setRely(true).build(metaStore.getConf());
client.addPrimaryKey(pk);
rqst = new PrimaryKeysRequest(table.getDbName(), table.getTableName());
rqst.setCatName(table.getCatName());
fetched = client.getPrimaryKeys(rqst);
Assert.assertEquals(pk, fetched);
// Drop a named primary key
client.dropConstraint(table.getCatName(), table.getDbName(), table.getTableName(), constraintName);
rqst = new PrimaryKeysRequest(table.getDbName(), table.getTableName());
rqst.setCatName(table.getCatName());
fetched = client.getPrimaryKeys(rqst);
Assert.assertTrue(fetched.isEmpty());
// Make sure I can add it back
client.addPrimaryKey(pk);
}
Aggregations