You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ga...@apache.org on 2018/03/31 01:25:38 UTC
[19/44] hive git commit: HIVE-18755 Modifications to the metastore
for catalogs (Alan Gates, reviewed by Thejas Nair)
http://git-wip-us.apache.org/repos/asf/hive/blob/ba8a99e1/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java
----------------------------------------------------------------------
diff --git a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java
index d4bdcf1..0794cc5 100644
--- a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java
+++ b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java
@@ -19,6 +19,8 @@
package org.apache.hadoop.hive.metastore;
import static org.apache.hadoop.hive.metastore.Warehouse.DEFAULT_DATABASE_NAME;
+import static org.apache.hadoop.hive.metastore.utils.MetaStoreUtils.getDefaultCatalog;
+import static org.apache.hadoop.hive.metastore.utils.MetaStoreUtils.prependCatalogToDbName;
import java.io.IOException;
import java.lang.reflect.Constructor;
@@ -70,6 +72,7 @@ import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.util.ReflectionUtils;
import org.apache.hadoop.util.StringUtils;
import org.apache.thrift.TApplicationException;
+import org.apache.thrift.TBase;
import org.apache.thrift.TException;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TCompactProtocol;
@@ -112,7 +115,6 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
private URI metastoreUris[];
private final HiveMetaHookLoader hookLoader;
protected final Configuration conf; // Keep a copy of HiveConf so if Session conf changes, we may need to get a new HMS client.
- protected boolean fastpath = false;
private String tokenStrForm;
private final boolean localMetaStore;
private final MetaStoreFilterHook filterHook;
@@ -379,27 +381,14 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
}
}
- /**
- * @param dbname
- * @param tbl_name
- * @param new_tbl
- * @throws InvalidOperationException
- * @throws MetaException
- * @throws TException
- * @see
- * org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore.Iface#alter_table(
- * java.lang.String, java.lang.String,
- * org.apache.hadoop.hive.metastore.api.Table)
- */
@Override
- public void alter_table(String dbname, String tbl_name, Table new_tbl)
- throws InvalidOperationException, MetaException, TException {
+ public void alter_table(String dbname, String tbl_name, Table new_tbl) throws TException {
alter_table_with_environmentContext(dbname, tbl_name, new_tbl, null);
}
@Override
public void alter_table(String defaultDatabaseName, String tblName, Table table,
- boolean cascade) throws InvalidOperationException, MetaException, TException {
+ boolean cascade) throws TException {
EnvironmentContext environmentContext = new EnvironmentContext();
if (cascade) {
environmentContext.putToProperties(StatsSetupConst.CASCADE, StatsSetupConst.TRUE);
@@ -414,24 +403,28 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
if (hook != null) {
hook.preAlterTable(new_tbl, envContext);
}
- client.alter_table_with_environment_context(dbname, tbl_name, new_tbl, envContext);
+ client.alter_table_with_environment_context(prependCatalogToDbName(dbname, conf),
+ tbl_name, new_tbl, envContext);
}
- /**
- * @param dbname
- * @param name
- * @param part_vals
- * @param newPart
- * @throws InvalidOperationException
- * @throws MetaException
- * @throws TException
- * @see org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore.Iface#rename_partition(
- * java.lang.String, java.lang.String, java.util.List, org.apache.hadoop.hive.metastore.api.Partition)
- */
@Override
- public void renamePartition(final String dbname, final String name, final List<String> part_vals, final Partition newPart)
- throws InvalidOperationException, MetaException, TException {
- client.rename_partition(dbname, name, part_vals, newPart);
+ public void alter_table(String catName, String dbName, String tblName, Table newTable,
+ EnvironmentContext envContext) throws TException {
+ client.alter_table_with_environment_context(prependCatalogToDbName(catName,
+ dbName, conf), tblName, newTable, envContext);
+ }
+
+ @Override
+ public void renamePartition(final String dbname, final String tableName, final List<String> part_vals,
+ final Partition newPart) throws TException {
+ renamePartition(getDefaultCatalog(conf), dbname, tableName, part_vals, newPart);
+ }
+
+ @Override
+ public void renamePartition(String catName, String dbname, String tableName, List<String> part_vals,
+ Partition newPart) throws TException {
+ client.rename_partition(prependCatalogToDbName(catName, dbname, conf), tableName, part_vals, newPart);
+
}
private void open() throws MetaException {
@@ -619,6 +612,28 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
return client.getMetaConf(key);
}
+ @Override
+ public void createCatalog(Catalog catalog) throws TException {
+ client.create_catalog(new CreateCatalogRequest(catalog));
+ }
+
+ @Override
+ public Catalog getCatalog(String catName) throws TException {
+ GetCatalogResponse rsp = client.get_catalog(new GetCatalogRequest(catName));
+ return rsp == null ? null : filterHook.filterCatalog(rsp.getCatalog());
+ }
+
+ @Override
+ public List<String> getCatalogs() throws TException {
+ GetCatalogsResponse rsp = client.get_catalogs();
+ return rsp == null ? null : filterHook.filterCatalogs(rsp.getNames());
+ }
+
+ @Override
+ public void dropCatalog(String catName) throws TException {
+ client.drop_catalog(new DropCatalogRequest(catName));
+ }
+
/**
* @param new_part
* @return the added partition
@@ -635,8 +650,9 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
public Partition add_partition(Partition new_part, EnvironmentContext envContext)
throws TException {
+ if (!new_part.isSetCatName()) new_part.setCatName(getDefaultCatalog(conf));
Partition p = client.add_partition_with_environment_context(new_part, envContext);
- return fastpath ? p : deepCopy(p);
+ return deepCopy(p);
}
/**
@@ -649,6 +665,10 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
*/
@Override
public int add_partitions(List<Partition> new_parts) throws TException {
+ if (new_parts != null && !new_parts.isEmpty() && !new_parts.get(0).isSetCatName()) {
+ final String defaultCat = getDefaultCatalog(conf);
+ new_parts.forEach(p -> p.setCatName(defaultCat));
+ }
return client.add_partitions(new_parts);
}
@@ -661,6 +681,7 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
Partition part = parts.get(0);
AddPartitionsRequest req = new AddPartitionsRequest(
part.getDbName(), part.getTableName(), parts, ifNotExists);
+ req.setCatName(part.isSetCatName() ? part.getCatName() : getDefaultCatalog(conf));
req.setNeedResult(needResults);
AddPartitionsResult result = client.add_partitions_req(req);
return needResults ? filterHook.filterPartitions(result.getPartitions()) : null;
@@ -668,45 +689,43 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
@Override
public int add_partitions_pspec(PartitionSpecProxy partitionSpec) throws TException {
+ if (partitionSpec.getCatName() == null) partitionSpec.setCatName(getDefaultCatalog(conf));
return client.add_partitions_pspec(partitionSpec.toPartitionSpec());
}
- /**
- * @param table_name
- * @param db_name
- * @param part_vals
- * @return the appended partition
- * @throws InvalidObjectException
- * @throws AlreadyExistsException
- * @throws MetaException
- * @throws TException
- * @see org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore.Iface#append_partition(java.lang.String,
- * java.lang.String, java.util.List)
- */
@Override
public Partition appendPartition(String db_name, String table_name,
List<String> part_vals) throws TException {
- return appendPartition(db_name, table_name, part_vals, null);
- }
-
- public Partition appendPartition(String db_name, String table_name, List<String> part_vals,
- EnvironmentContext envContext) throws TException {
- Partition p = client.append_partition_with_environment_context(db_name, table_name,
- part_vals, envContext);
- return fastpath ? p : deepCopy(p);
+ return appendPartition(getDefaultCatalog(conf), db_name, table_name, part_vals);
}
@Override
public Partition appendPartition(String dbName, String tableName, String partName)
throws TException {
- return appendPartition(dbName, tableName, partName, null);
+ return appendPartition(getDefaultCatalog(conf), dbName, tableName, partName);
}
- public Partition appendPartition(String dbName, String tableName, String partName,
- EnvironmentContext envContext) throws TException {
- Partition p = client.append_partition_by_name_with_environment_context(dbName, tableName,
- partName, envContext);
- return fastpath ? p : deepCopy(p);
+ @Override
+ public Partition appendPartition(String catName, String dbName, String tableName,
+ String name) throws TException {
+ Partition p = client.append_partition_by_name(prependCatalogToDbName(
+ catName, dbName, conf), tableName, name);
+ return deepCopy(p);
+ }
+
+ @Override
+ public Partition appendPartition(String catName, String dbName, String tableName,
+ List<String> partVals) throws TException {
+ Partition p = client.append_partition(prependCatalogToDbName(
+ catName, dbName, conf), tableName, partVals);
+ return deepCopy(p);
+ }
+
+ @Deprecated
+ public Partition appendPartition(String dbName, String tableName, List<String> partVals,
+ EnvironmentContext ec) throws TException {
+ return client.append_partition_with_environment_context(prependCatalogToDbName(dbName, conf),
+ tableName, partVals, ec).deepCopy();
}
/**
@@ -719,10 +738,17 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
@Override
public Partition exchange_partition(Map<String, String> partitionSpecs,
String sourceDb, String sourceTable, String destDb,
- String destinationTableName) throws MetaException,
- NoSuchObjectException, InvalidObjectException, TException {
- return client.exchange_partition(partitionSpecs, sourceDb, sourceTable,
- destDb, destinationTableName);
+ String destinationTableName) throws TException {
+ return exchange_partition(partitionSpecs, getDefaultCatalog(conf), sourceDb, sourceTable,
+ getDefaultCatalog(conf), destDb, destinationTableName);
+ }
+
+ @Override
+ public Partition exchange_partition(Map<String, String> partitionSpecs, String sourceCat,
+ String sourceDb, String sourceTable, String destCat,
+ String destDb, String destTableName) throws TException {
+ return client.exchange_partition(partitionSpecs, prependCatalogToDbName(sourceCat, sourceDb, conf),
+ sourceTable, prependCatalogToDbName(destCat, destDb, conf), destTableName);
}
/**
@@ -735,10 +761,17 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
@Override
public List<Partition> exchange_partitions(Map<String, String> partitionSpecs,
String sourceDb, String sourceTable, String destDb,
- String destinationTableName) throws MetaException,
- NoSuchObjectException, InvalidObjectException, TException {
- return client.exchange_partitions(partitionSpecs, sourceDb, sourceTable,
- destDb, destinationTableName);
+ String destinationTableName) throws TException {
+ return exchange_partitions(partitionSpecs, getDefaultCatalog(conf), sourceDb, sourceTable,
+ getDefaultCatalog(conf), destDb, destinationTableName);
+ }
+
+ @Override
+ public List<Partition> exchange_partitions(Map<String, String> partitionSpecs, String sourceCat,
+ String sourceDb, String sourceTable, String destCat,
+ String destDb, String destTableName) throws TException {
+ return client.exchange_partitions(partitionSpecs, prependCatalogToDbName(sourceCat, sourceDb, conf),
+ sourceTable, prependCatalogToDbName(destCat, destDb, conf), destTableName);
}
@Override
@@ -759,6 +792,7 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
@Override
public void createDatabase(Database db)
throws AlreadyExistsException, InvalidObjectException, MetaException, TException {
+ if (!db.isSetCatalogName()) db.setCatalogName(getDefaultCatalog(conf));
client.create_database(db);
}
@@ -777,6 +811,7 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
public void createTable(Table tbl, EnvironmentContext envContext) throws AlreadyExistsException,
InvalidObjectException, MetaException, NoSuchObjectException, TException {
+ if (!tbl.isSetCatName()) tbl.setCatName(getDefaultCatalog(conf));
HiveMetaHook hook = getHook(tbl);
if (hook != null) {
hook.preCreateTable(tbl);
@@ -801,7 +836,6 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
}
}
- @Override
public void createTableWithConstraints(Table tbl,
List<SQLPrimaryKey> primaryKeys, List<SQLForeignKey> foreignKeys,
List<SQLUniqueConstraint> uniqueConstraints,
@@ -810,6 +844,17 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
List<SQLCheckConstraint> checkConstraints)
throws AlreadyExistsException, InvalidObjectException,
MetaException, NoSuchObjectException, TException {
+
+ if (!tbl.isSetCatName()) {
+ String defaultCat = getDefaultCatalog(conf);
+ tbl.setCatName(defaultCat);
+ if (primaryKeys != null) primaryKeys.forEach(pk -> pk.setCatName(defaultCat));
+ if (foreignKeys != null) foreignKeys.forEach(fk -> fk.setCatName(defaultCat));
+ if (uniqueConstraints != null) uniqueConstraints.forEach(uc -> uc.setCatName(defaultCat));
+ if (notNullConstraints != null) notNullConstraints.forEach(nn -> nn.setCatName(defaultCat));
+ if (defaultConstraints != null) defaultConstraints.forEach(def -> def.setCatName(defaultCat));
+ if (checkConstraints != null) checkConstraints.forEach(cc -> cc.setCatName(defaultCat));
+ }
HiveMetaHook hook = getHook(tbl);
if (hook != null) {
hook.preCreateTable(tbl);
@@ -831,44 +876,74 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
}
@Override
- public void dropConstraint(String dbName, String tableName, String constraintName) throws
- NoSuchObjectException, MetaException, TException {
- client.drop_constraint(new DropConstraintRequest(dbName, tableName, constraintName));
+ public void dropConstraint(String dbName, String tableName, String constraintName)
+ throws TException {
+ dropConstraint(getDefaultCatalog(conf), dbName, tableName, constraintName);
}
@Override
- public void addPrimaryKey(List<SQLPrimaryKey> primaryKeyCols) throws
- NoSuchObjectException, MetaException, TException {
+ public void dropConstraint(String catName, String dbName, String tableName, String constraintName)
+ throws TException {
+ DropConstraintRequest rqst = new DropConstraintRequest(dbName, tableName, constraintName);
+ rqst.setCatName(catName);
+ client.drop_constraint(rqst);
+ }
+
+ @Override
+ public void addPrimaryKey(List<SQLPrimaryKey> primaryKeyCols) throws TException {
+ if (!primaryKeyCols.isEmpty() && !primaryKeyCols.get(0).isSetCatName()) {
+ String defaultCat = getDefaultCatalog(conf);
+ primaryKeyCols.forEach(pk -> pk.setCatName(defaultCat));
+ }
client.add_primary_key(new AddPrimaryKeyRequest(primaryKeyCols));
}
@Override
- public void addForeignKey(List<SQLForeignKey> foreignKeyCols) throws
- NoSuchObjectException, MetaException, TException {
+ public void addForeignKey(List<SQLForeignKey> foreignKeyCols) throws TException {
+ if (!foreignKeyCols.isEmpty() && !foreignKeyCols.get(0).isSetCatName()) {
+ String defaultCat = getDefaultCatalog(conf);
+ foreignKeyCols.forEach(fk -> fk.setCatName(defaultCat));
+ }
client.add_foreign_key(new AddForeignKeyRequest(foreignKeyCols));
}
@Override
public void addUniqueConstraint(List<SQLUniqueConstraint> uniqueConstraintCols) throws
NoSuchObjectException, MetaException, TException {
+ if (!uniqueConstraintCols.isEmpty() && !uniqueConstraintCols.get(0).isSetCatName()) {
+ String defaultCat = getDefaultCatalog(conf);
+ uniqueConstraintCols.forEach(uc -> uc.setCatName(defaultCat));
+ }
client.add_unique_constraint(new AddUniqueConstraintRequest(uniqueConstraintCols));
}
@Override
public void addNotNullConstraint(List<SQLNotNullConstraint> notNullConstraintCols) throws
NoSuchObjectException, MetaException, TException {
+ if (!notNullConstraintCols.isEmpty() && !notNullConstraintCols.get(0).isSetCatName()) {
+ String defaultCat = getDefaultCatalog(conf);
+ notNullConstraintCols.forEach(nn -> nn.setCatName(defaultCat));
+ }
client.add_not_null_constraint(new AddNotNullConstraintRequest(notNullConstraintCols));
}
@Override
public void addDefaultConstraint(List<SQLDefaultConstraint> defaultConstraints) throws
NoSuchObjectException, MetaException, TException {
+ if (!defaultConstraints.isEmpty() && !defaultConstraints.get(0).isSetCatName()) {
+ String defaultCat = getDefaultCatalog(conf);
+ defaultConstraints.forEach(def -> def.setCatName(defaultCat));
+ }
client.add_default_constraint(new AddDefaultConstraintRequest(defaultConstraints));
}
@Override
public void addCheckConstraint(List<SQLCheckConstraint> checkConstraints) throws
NoSuchObjectException, MetaException, TException {
+ if (!checkConstraints.isEmpty() && !checkConstraints.get(0).isSetCatName()) {
+ String defaultCat = getDefaultCatalog(conf);
+ checkConstraints.forEach(cc -> cc.setCatName(defaultCat));
+ }
client.add_check_constraint(new AddCheckConstraintRequest(checkConstraints));
}
@@ -897,20 +972,26 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
@Override
public void dropDatabase(String name)
throws NoSuchObjectException, InvalidOperationException, MetaException, TException {
- dropDatabase(name, true, false, false);
+ dropDatabase(getDefaultCatalog(conf), name, true, false, false);
}
@Override
public void dropDatabase(String name, boolean deleteData, boolean ignoreUnknownDb)
throws NoSuchObjectException, InvalidOperationException, MetaException, TException {
- dropDatabase(name, deleteData, ignoreUnknownDb, false);
+ dropDatabase(getDefaultCatalog(conf), name, deleteData, ignoreUnknownDb, false);
}
@Override
public void dropDatabase(String name, boolean deleteData, boolean ignoreUnknownDb, boolean cascade)
throws NoSuchObjectException, InvalidOperationException, MetaException, TException {
+ dropDatabase(getDefaultCatalog(conf), name, deleteData, ignoreUnknownDb, cascade);
+ }
+
+ public void dropDatabase(String catalogName, String dbName, boolean deleteData,
+ boolean ignoreUnknownDb, boolean cascade)
+ throws NoSuchObjectException, InvalidOperationException, MetaException, TException {
try {
- getDatabase(name);
+ getDatabase(catalogName, dbName);
} catch (NoSuchObjectException e) {
if (!ignoreUnknownDb) {
throw e;
@@ -919,45 +1000,30 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
}
if (cascade) {
- List<String> tableList = getAllTables(name);
+ List<String> tableList = getAllTables(dbName);
for (String table : tableList) {
try {
// Subclasses can override this step (for example, for temporary tables)
- dropTable(name, table, deleteData, true);
+ dropTable(dbName, table, deleteData, true);
} catch (UnsupportedOperationException e) {
// Ignore Index tables, those will be dropped with parent tables
}
}
}
- client.drop_database(name, deleteData, cascade);
- }
-
- /**
- * @param tbl_name
- * @param db_name
- * @param part_vals
- * @return true or false
- * @throws NoSuchObjectException
- * @throws MetaException
- * @throws TException
- * @see org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore.Iface#drop_partition(java.lang.String,
- * java.lang.String, java.util.List, boolean)
- */
- public boolean dropPartition(String db_name, String tbl_name,
- List<String> part_vals) throws NoSuchObjectException, MetaException,
- TException {
- return dropPartition(db_name, tbl_name, part_vals, true, null);
+ client.drop_database(prependCatalogToDbName(catalogName, dbName, conf), deleteData, cascade);
}
- public boolean dropPartition(String db_name, String tbl_name, List<String> part_vals,
- EnvironmentContext env_context) throws NoSuchObjectException, MetaException, TException {
- return dropPartition(db_name, tbl_name, part_vals, true, env_context);
+ @Override
+ public boolean dropPartition(String dbName, String tableName, String partName, boolean deleteData)
+ throws TException {
+ return dropPartition(getDefaultCatalog(conf), dbName, tableName, partName, deleteData);
}
@Override
- public boolean dropPartition(String dbName, String tableName, String partName, boolean deleteData)
- throws NoSuchObjectException, MetaException, TException {
- return dropPartition(dbName, tableName, partName, deleteData, null);
+ public boolean dropPartition(String catName, String db_name, String tbl_name, String name,
+ boolean deleteData) throws TException {
+ return client.drop_partition_by_name_with_environment_context(prependCatalogToDbName(
+ catName, db_name, conf), tbl_name, name, deleteData, null);
}
private static EnvironmentContext getEnvironmentContextWithIfPurgeSet() {
@@ -966,54 +1032,57 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
return new EnvironmentContext(warehouseOptions);
}
- /*
- public boolean dropPartition(String dbName, String tableName, String partName, boolean deleteData, boolean ifPurge)
- throws NoSuchObjectException, MetaException, TException {
+ // A bunch of these are in HiveMetaStoreClient but not IMetaStoreClient. I have marked these
+ // as deprecated and not updated them for the catalogs. If we really want to support them we
+ // should add them to IMetaStoreClient.
- return dropPartition(dbName, tableName, partName, deleteData,
- ifPurge? getEnvironmentContextWithIfPurgeSet() : null);
+ @Deprecated
+ public boolean dropPartition(String db_name, String tbl_name, List<String> part_vals,
+ EnvironmentContext env_context) throws TException {
+ return client.drop_partition_with_environment_context(prependCatalogToDbName(db_name, conf),
+ tbl_name, part_vals, true, env_context);
}
- */
- public boolean dropPartition(String dbName, String tableName, String partName, boolean deleteData,
- EnvironmentContext envContext) throws NoSuchObjectException, MetaException, TException {
- return client.drop_partition_by_name_with_environment_context(dbName, tableName, partName,
- deleteData, envContext);
+ @Deprecated
+ public boolean dropPartition(String dbName, String tableName, String partName, boolean dropData,
+ EnvironmentContext ec) throws TException {
+ return client.drop_partition_by_name_with_environment_context(prependCatalogToDbName(dbName, conf),
+ tableName, partName, dropData, ec);
+ }
+
+ @Deprecated
+ public boolean dropPartition(String dbName, String tableName, List<String> partVals)
+ throws TException {
+ return client.drop_partition(prependCatalogToDbName(dbName, conf), tableName, partVals, true);
}
- /**
- * @param db_name
- * @param tbl_name
- * @param part_vals
- * @param deleteData
- * delete the underlying data or just delete the table in metadata
- * @return true or false
- * @throws NoSuchObjectException
- * @throws MetaException
- * @throws TException
- * @see org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore.Iface#drop_partition(java.lang.String,
- * java.lang.String, java.util.List, boolean)
- */
@Override
public boolean dropPartition(String db_name, String tbl_name,
- List<String> part_vals, boolean deleteData) throws NoSuchObjectException,
- MetaException, TException {
- return dropPartition(db_name, tbl_name, part_vals, deleteData, null);
+ List<String> part_vals, boolean deleteData) throws TException {
+ return dropPartition(getDefaultCatalog(conf), db_name, tbl_name, part_vals,
+ PartitionDropOptions.instance().deleteData(deleteData));
+ }
+
+ @Override
+ public boolean dropPartition(String catName, String db_name, String tbl_name,
+ List<String> part_vals, boolean deleteData) throws TException {
+ return dropPartition(catName, db_name, tbl_name, part_vals, PartitionDropOptions.instance()
+ .deleteData(deleteData));
}
@Override
public boolean dropPartition(String db_name, String tbl_name,
- List<String> part_vals, PartitionDropOptions options) throws TException {
+ List<String> part_vals, PartitionDropOptions options) throws TException {
+ return dropPartition(getDefaultCatalog(conf), db_name, tbl_name, part_vals, options);
+ }
+
+ @Override
+ public boolean dropPartition(String catName, String db_name, String tbl_name,
+ List<String> part_vals, PartitionDropOptions options)
+ throws TException {
if (options == null) {
options = PartitionDropOptions.instance();
}
- return dropPartition(db_name, tbl_name, part_vals, options.deleteData,
- options.purgeData? getEnvironmentContextWithIfPurgeSet() : null);
- }
-
- public boolean dropPartition(String db_name, String tbl_name, List<String> part_vals,
- boolean deleteData, EnvironmentContext envContext) throws NoSuchObjectException,
- MetaException, TException {
if (part_vals != null) {
for (String partVal : part_vals) {
if (partVal == null) {
@@ -1021,32 +1090,17 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
}
}
}
- return client.drop_partition_with_environment_context(db_name, tbl_name, part_vals, deleteData,
- envContext);
+ return client.drop_partition_with_environment_context(prependCatalogToDbName(
+ catName, db_name, conf), tbl_name, part_vals, options.deleteData,
+ options.purgeData ? getEnvironmentContextWithIfPurgeSet() : null);
}
@Override
public List<Partition> dropPartitions(String dbName, String tblName,
- List<ObjectPair<Integer, byte[]>> partExprs, PartitionDropOptions options)
+ List<ObjectPair<Integer, byte[]>> partExprs,
+ PartitionDropOptions options)
throws TException {
- RequestPartsSpec rps = new RequestPartsSpec();
- List<DropPartitionsExpr> exprs = new ArrayList<>(partExprs.size());
- for (ObjectPair<Integer, byte[]> partExpr : partExprs) {
- DropPartitionsExpr dpe = new DropPartitionsExpr();
- dpe.setExpr(partExpr.getSecond());
- dpe.setPartArchiveLevel(partExpr.getFirst());
- exprs.add(dpe);
- }
- rps.setExprs(exprs);
- DropPartitionsRequest req = new DropPartitionsRequest(dbName, tblName, rps);
- req.setDeleteData(options.deleteData);
- req.setNeedResult(options.returnResults);
- req.setIfExists(options.ifExists);
- if (options.purgeData) {
- LOG.info("Dropped partitions will be purged!");
- req.setEnvironmentContext(getEnvironmentContextWithIfPurgeSet());
- }
- return client.drop_partitions_req(req).getPartitions();
+ return dropPartitions(getDefaultCatalog(conf), dbName, tblName, partExprs, options);
}
@Override
@@ -1054,7 +1108,7 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
List<ObjectPair<Integer, byte[]>> partExprs, boolean deleteData,
boolean ifExists, boolean needResult) throws NoSuchObjectException, MetaException, TException {
- return dropPartitions(dbName, tblName, partExprs,
+ return dropPartitions(getDefaultCatalog(conf), dbName, tblName, partExprs,
PartitionDropOptions.instance()
.deleteData(deleteData)
.ifExists(ifExists)
@@ -1067,33 +1121,58 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
List<ObjectPair<Integer, byte[]>> partExprs, boolean deleteData,
boolean ifExists) throws NoSuchObjectException, MetaException, TException {
// By default, we need the results from dropPartitions();
- return dropPartitions(dbName, tblName, partExprs,
+ return dropPartitions(getDefaultCatalog(conf), dbName, tblName, partExprs,
PartitionDropOptions.instance()
.deleteData(deleteData)
.ifExists(ifExists));
}
- /**
- * {@inheritDoc}
- * @see #dropTable(String, String, boolean, boolean, EnvironmentContext)
- */
+ @Override
+ public List<Partition> dropPartitions(String catName, String dbName, String tblName,
+ List<ObjectPair<Integer, byte[]>> partExprs,
+ PartitionDropOptions options) throws TException {
+ RequestPartsSpec rps = new RequestPartsSpec();
+ List<DropPartitionsExpr> exprs = new ArrayList<>(partExprs.size());
+ for (ObjectPair<Integer, byte[]> partExpr : partExprs) {
+ DropPartitionsExpr dpe = new DropPartitionsExpr();
+ dpe.setExpr(partExpr.getSecond());
+ dpe.setPartArchiveLevel(partExpr.getFirst());
+ exprs.add(dpe);
+ }
+ rps.setExprs(exprs);
+ DropPartitionsRequest req = new DropPartitionsRequest(dbName, tblName, rps);
+ req.setCatName(catName);
+ req.setDeleteData(options.deleteData);
+ req.setNeedResult(options.returnResults);
+ req.setIfExists(options.ifExists);
+ if (options.purgeData) {
+ LOG.info("Dropped partitions will be purged!");
+ req.setEnvironmentContext(getEnvironmentContextWithIfPurgeSet());
+ }
+ return client.drop_partitions_req(req).getPartitions();
+ }
+
@Override
public void dropTable(String dbname, String name, boolean deleteData,
boolean ignoreUnknownTab) throws MetaException, TException,
NoSuchObjectException, UnsupportedOperationException {
- dropTable(dbname, name, deleteData, ignoreUnknownTab, null);
+ dropTable(getDefaultCatalog(conf), dbname, name, deleteData, ignoreUnknownTab, null);
}
- /**
- * Drop the table and choose whether to save the data in the trash.
- * @param ifPurge completely purge the table (skipping trash) while removing
- * data from warehouse
- * @see #dropTable(String, String, boolean, boolean, EnvironmentContext)
- */
@Override
public void dropTable(String dbname, String name, boolean deleteData,
- boolean ignoreUnknownTab, boolean ifPurge)
- throws MetaException, TException, NoSuchObjectException, UnsupportedOperationException {
+ boolean ignoreUnknownTab, boolean ifPurge) throws TException {
+ dropTable(getDefaultCatalog(conf), dbname, name, deleteData, ignoreUnknownTab, ifPurge);
+ }
+
+ @Override
+ public void dropTable(String dbname, String name) throws TException {
+ dropTable(getDefaultCatalog(conf), dbname, name, true, true, null);
+ }
+
+ @Override
+ public void dropTable(String catName, String dbName, String tableName, boolean deleteData,
+ boolean ignoreUnknownTable, boolean ifPurge) throws TException {
//build new environmentContext with ifPurge;
EnvironmentContext envContext = null;
if(ifPurge){
@@ -1102,32 +1181,17 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
warehouseOptions.put("ifPurge", "TRUE");
envContext = new EnvironmentContext(warehouseOptions);
}
- dropTable(dbname, name, deleteData, ignoreUnknownTab, envContext);
- }
-
- /** {@inheritDoc} */
- @Override
- @Deprecated
- public void dropTable(String tableName, boolean deleteData)
- throws MetaException, UnknownTableException, TException, NoSuchObjectException {
- dropTable(DEFAULT_DATABASE_NAME, tableName, deleteData, false, null);
- }
+ dropTable(catName, dbName, tableName, deleteData, ignoreUnknownTable, envContext);
- /**
- * @see #dropTable(String, String, boolean, boolean, EnvironmentContext)
- */
- @Override
- public void dropTable(String dbname, String name)
- throws NoSuchObjectException, MetaException, TException {
- dropTable(dbname, name, true, true, null);
}
/**
* Drop the table and choose whether to: delete the underlying table data;
* throw if the table doesn't exist; save the data in the trash.
*
- * @param dbname
- * @param name
+ * @param catName catalog name
+ * @param dbname database name
+ * @param name table name
* @param deleteData
* delete the underlying data or just delete the table in metadata
* @param ignoreUnknownTab
@@ -1145,12 +1209,12 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
* @see org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore.Iface#drop_table(java.lang.String,
* java.lang.String, boolean)
*/
- public void dropTable(String dbname, String name, boolean deleteData,
+ public void dropTable(String catName, String dbname, String name, boolean deleteData,
boolean ignoreUnknownTab, EnvironmentContext envContext) throws MetaException, TException,
NoSuchObjectException, UnsupportedOperationException {
Table tbl;
try {
- tbl = getTable(dbname, name);
+ tbl = getTable(catName, dbname, name);
} catch (NoSuchObjectException e) {
if (!ignoreUnknownTab) {
throw e;
@@ -1163,7 +1227,7 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
}
boolean success = false;
try {
- drop_table_with_environment_context(dbname, name, deleteData, envContext);
+ drop_table_with_environment_context(catName, dbname, name, deleteData, envContext);
if (hook != null) {
hook.commitDropTable(tbl, deleteData || (envContext != null && "TRUE".equals(envContext.getProperties().get("ifPurge"))));
}
@@ -1179,21 +1243,15 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
}
}
- /**
- * Truncate the table/partitions in the DEFAULT database.
- * @param dbName
- * The db to which the table to be truncate belongs to
- * @param tableName
- * The table to truncate
- * @param partNames
- * List of partitions to truncate. NULL will truncate the whole table/all partitions
- * @throws MetaException
- * @throws TException
- * Could not truncate table properly.
- */
@Override
- public void truncateTable(String dbName, String tableName, List<String> partNames) throws MetaException, TException {
- client.truncate_table(dbName, tableName, partNames);
+ public void truncateTable(String dbName, String tableName, List<String> partNames) throws TException {
+ truncateTable(getDefaultCatalog(conf), dbName, tableName, partNames);
+ }
+
+ @Override
+ public void truncateTable(String catName, String dbName, String tableName, List<String> partNames)
+ throws TException {
+ client.truncate_table(prependCatalogToDbName(catName, dbName, conf), tableName, partNames);
}
/**
@@ -1239,111 +1297,144 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
return result;
}
- /** {@inheritDoc} */
@Override
- public List<String> getDatabases(String databasePattern)
- throws MetaException {
- try {
- return filterHook.filterDatabases(client.get_databases(databasePattern));
- } catch (Exception e) {
- MetaStoreUtils.logAndThrowMetaException(e);
- }
- return null;
+ public List<String> getDatabases(String databasePattern) throws TException {
+ return getDatabases(getDefaultCatalog(conf), databasePattern);
}
- /** {@inheritDoc} */
@Override
- public List<String> getAllDatabases() throws MetaException {
- try {
- return filterHook.filterDatabases(client.get_all_databases());
- } catch (Exception e) {
- MetaStoreUtils.logAndThrowMetaException(e);
- }
- return null;
+ public List<String> getDatabases(String catName, String databasePattern) throws TException {
+ return filterHook.filterDatabases(client.get_databases(prependCatalogToDbName(
+ catName, databasePattern, conf)));
}
- /**
- * @param tbl_name
- * @param db_name
- * @param max_parts
- * @return list of partitions
- * @throws NoSuchObjectException
- * @throws MetaException
- * @throws TException
- */
@Override
- public List<Partition> listPartitions(String db_name, String tbl_name,
- short max_parts) throws NoSuchObjectException, MetaException, TException {
- List<Partition> parts = client.get_partitions(db_name, tbl_name, max_parts);
- return fastpath ? parts : deepCopyPartitions(filterHook.filterPartitions(parts));
+ public List<String> getAllDatabases() throws TException {
+ return getAllDatabases(getDefaultCatalog(conf));
+ }
+
+ @Override
+ public List<String> getAllDatabases(String catName) throws TException {
+ return filterHook.filterDatabases(client.get_databases(prependCatalogToDbName(catName, null, conf)));
+ }
+
+ @Override
+ public List<Partition> listPartitions(String db_name, String tbl_name, short max_parts)
+ throws TException {
+ return listPartitions(getDefaultCatalog(conf), db_name, tbl_name, max_parts);
+ }
+
+ @Override
+ public List<Partition> listPartitions(String catName, String db_name, String tbl_name,
+ int max_parts) throws TException {
+ List<Partition> parts = client.get_partitions(prependCatalogToDbName(catName, db_name, conf),
+ tbl_name, shrinkMaxtoShort(max_parts));
+ return deepCopyPartitions(filterHook.filterPartitions(parts));
}
@Override
public PartitionSpecProxy listPartitionSpecs(String dbName, String tableName, int maxParts) throws TException {
+ return listPartitionSpecs(getDefaultCatalog(conf), dbName, tableName, maxParts);
+ }
+
+ @Override
+ public PartitionSpecProxy listPartitionSpecs(String catName, String dbName, String tableName,
+ int maxParts) throws TException {
return PartitionSpecProxy.Factory.get(filterHook.filterPartitionSpecs(
- client.get_partitions_pspec(dbName, tableName, maxParts)));
+ client.get_partitions_pspec(prependCatalogToDbName(catName, dbName, conf), tableName, maxParts)));
}
@Override
public List<Partition> listPartitions(String db_name, String tbl_name,
- List<String> part_vals, short max_parts)
- throws NoSuchObjectException, MetaException, TException {
- List<Partition> parts = client.get_partitions_ps(db_name, tbl_name, part_vals, max_parts);
- return fastpath ? parts : deepCopyPartitions(filterHook.filterPartitions(parts));
+ List<String> part_vals, short max_parts) throws TException {
+ return listPartitions(getDefaultCatalog(conf), db_name, tbl_name, part_vals, max_parts);
}
@Override
- public List<Partition> listPartitionsWithAuthInfo(String db_name,
- String tbl_name, short max_parts, String user_name, List<String> group_names)
- throws NoSuchObjectException, MetaException, TException {
- List<Partition> parts = client.get_partitions_with_auth(db_name, tbl_name, max_parts,
+ public List<Partition> listPartitions(String catName, String db_name, String tbl_name,
+ List<String> part_vals, int max_parts) throws TException {
+ List<Partition> parts = client.get_partitions_ps(prependCatalogToDbName(catName, db_name, conf),
+ tbl_name, part_vals, shrinkMaxtoShort(max_parts));
+ return deepCopyPartitions(filterHook.filterPartitions(parts));
+ }
+
+ @Override
+ public List<Partition> listPartitionsWithAuthInfo(String db_name, String tbl_name,
+ short max_parts, String user_name,
+ List<String> group_names) throws TException {
+ return listPartitionsWithAuthInfo(getDefaultCatalog(conf), db_name, tbl_name, max_parts, user_name,
+ group_names);
+ }
+
+ @Override
+ public List<Partition> listPartitionsWithAuthInfo(String catName, String dbName, String tableName,
+ int maxParts, String userName,
+ List<String> groupNames) throws TException {
+ List<Partition> parts = client.get_partitions_with_auth(prependCatalogToDbName(catName,
+ dbName, conf), tableName, shrinkMaxtoShort(maxParts), userName, groupNames);
+ return deepCopyPartitions(filterHook.filterPartitions(parts));
+ }
+
+ @Override
+ public List<Partition> listPartitionsWithAuthInfo(String db_name, String tbl_name,
+ List<String> part_vals, short max_parts,
+ String user_name, List<String> group_names)
+ throws TException {
+ return listPartitionsWithAuthInfo(getDefaultCatalog(conf), db_name, tbl_name, part_vals, max_parts,
user_name, group_names);
- return fastpath ? parts :deepCopyPartitions(filterHook.filterPartitions(parts));
}
@Override
- public List<Partition> listPartitionsWithAuthInfo(String db_name,
- String tbl_name, List<String> part_vals, short max_parts,
- String user_name, List<String> group_names) throws NoSuchObjectException,
- MetaException, TException {
- List<Partition> parts = client.get_partitions_ps_with_auth(db_name,
- tbl_name, part_vals, max_parts, user_name, group_names);
- return fastpath ? parts : deepCopyPartitions(filterHook.filterPartitions(parts));
+ public List<Partition> listPartitionsWithAuthInfo(String catName, String dbName, String tableName,
+ List<String> partialPvals, int maxParts,
+ String userName, List<String> groupNames)
+ throws TException {
+ List<Partition> parts = client.get_partitions_ps_with_auth(prependCatalogToDbName(catName,
+ dbName, conf), tableName, partialPvals, shrinkMaxtoShort(maxParts), userName, groupNames);
+ return deepCopyPartitions(filterHook.filterPartitions(parts));
}
- /**
- * Get list of partitions matching specified filter
- * @param db_name the database name
- * @param tbl_name the table name
- * @param filter the filter string,
- * for example "part1 = \"p1_abc\" and part2 <= "\p2_test\"". Filtering can
- * be done only on string partition keys.
- * @param max_parts the maximum number of partitions to return,
- * all partitions are returned if -1 is passed
- * @return list of partitions
- * @throws MetaException
- * @throws NoSuchObjectException
- * @throws TException
- */
@Override
public List<Partition> listPartitionsByFilter(String db_name, String tbl_name,
- String filter, short max_parts) throws MetaException,
- NoSuchObjectException, TException {
- List<Partition> parts = client.get_partitions_by_filter(db_name, tbl_name, filter, max_parts);
- return fastpath ? parts :deepCopyPartitions(filterHook.filterPartitions(parts));
+ String filter, short max_parts) throws TException {
+ return listPartitionsByFilter(getDefaultCatalog(conf), db_name, tbl_name, filter, max_parts);
+ }
+
+ @Override
+ public List<Partition> listPartitionsByFilter(String catName, String db_name, String tbl_name,
+ String filter, int max_parts) throws TException {
+ List<Partition> parts =client.get_partitions_by_filter(prependCatalogToDbName(
+ catName, db_name, conf), tbl_name, filter, shrinkMaxtoShort(max_parts));
+ return deepCopyPartitions(filterHook.filterPartitions(parts));
}
@Override
public PartitionSpecProxy listPartitionSpecsByFilter(String db_name, String tbl_name,
- String filter, int max_parts) throws MetaException,
- NoSuchObjectException, TException {
+ String filter, int max_parts)
+ throws TException {
+ return listPartitionSpecsByFilter(getDefaultCatalog(conf), db_name, tbl_name, filter, max_parts);
+ }
+
+ @Override
+ public PartitionSpecProxy listPartitionSpecsByFilter(String catName, String db_name,
+ String tbl_name, String filter,
+ int max_parts) throws TException {
return PartitionSpecProxy.Factory.get(filterHook.filterPartitionSpecs(
- client.get_part_specs_by_filter(db_name, tbl_name, filter, max_parts)));
+ client.get_part_specs_by_filter(prependCatalogToDbName(catName, db_name, conf), tbl_name, filter,
+ max_parts)));
}
@Override
public boolean listPartitionsByExpr(String db_name, String tbl_name, byte[] expr,
- String default_partition_name, short max_parts, List<Partition> result)
+ String default_partition_name, short max_parts,
+ List<Partition> result) throws TException {
+ return listPartitionsByExpr(getDefaultCatalog(conf), db_name, tbl_name, expr,
+ default_partition_name, max_parts, result);
+ }
+
+ @Override
+ public boolean listPartitionsByExpr(String catName, String db_name, String tbl_name, byte[] expr,
+ String default_partition_name, int max_parts, List<Partition> result)
throws TException {
assert result != null;
PartitionsByExprRequest req = new PartitionsByExprRequest(
@@ -1352,7 +1443,7 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
req.setDefaultPartitionName(default_partition_name);
}
if (max_parts >= 0) {
- req.setMaxParts(max_parts);
+ req.setMaxParts(shrinkMaxtoShort(max_parts));
}
PartitionsByExprResult r;
try {
@@ -1366,132 +1457,138 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
throw new IncompatibleMetastoreException(
"Metastore doesn't support listPartitionsByExpr: " + te.getMessage());
}
- if (fastpath) {
- result.addAll(r.getPartitions());
- } else {
- r.setPartitions(filterHook.filterPartitions(r.getPartitions()));
- // TODO: in these methods, do we really need to deepcopy?
- deepCopyPartitions(r.getPartitions(), result);
- }
+ r.setPartitions(filterHook.filterPartitions(r.getPartitions()));
+ // TODO: in these methods, do we really need to deepcopy?
+ deepCopyPartitions(r.getPartitions(), result);
return !r.isSetHasUnknownPartitions() || r.isHasUnknownPartitions(); // Assume the worst.
}
- /**
- * @param name
- * @return the database
- * @throws NoSuchObjectException
- * @throws MetaException
- * @throws TException
- * @see org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore.Iface#get_database(java.lang.String)
- */
@Override
- public Database getDatabase(String name) throws NoSuchObjectException,
- MetaException, TException {
- Database d = client.get_database(name);
- return fastpath ? d :deepCopy(filterHook.filterDatabase(d));
+ public Database getDatabase(String name) throws TException {
+ return getDatabase(getDefaultCatalog(conf), name);
+ }
+
+ @Override
+ public Database getDatabase(String catalogName, String databaseName) throws TException {
+ Database d = client.get_database(prependCatalogToDbName(catalogName, databaseName, conf));
+ return deepCopy(filterHook.filterDatabase(d));
}
- /**
- * @param tbl_name
- * @param db_name
- * @param part_vals
- * @return the partition
- * @throws MetaException
- * @throws TException
- * @see org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore.Iface#get_partition(java.lang.String,
- * java.lang.String, java.util.List)
- */
@Override
- public Partition getPartition(String db_name, String tbl_name,
- List<String> part_vals) throws NoSuchObjectException, MetaException, TException {
- Partition p = client.get_partition(db_name, tbl_name, part_vals);
- return fastpath ? p : deepCopy(filterHook.filterPartition(p));
+ public Partition getPartition(String db_name, String tbl_name, List<String> part_vals)
+ throws TException {
+ return getPartition(getDefaultCatalog(conf), db_name, tbl_name, part_vals);
+ }
+
+ @Override
+ public Partition getPartition(String catName, String dbName, String tblName,
+ List<String> partVals) throws TException {
+ Partition p = client.get_partition(prependCatalogToDbName(catName, dbName, conf), tblName, partVals);
+ return deepCopy(filterHook.filterPartition(p));
}
@Override
public List<Partition> getPartitionsByNames(String db_name, String tbl_name,
- List<String> part_names) throws NoSuchObjectException, MetaException, TException {
- List<Partition> parts = client.get_partitions_by_names(db_name, tbl_name, part_names);
- return fastpath ? parts : deepCopyPartitions(filterHook.filterPartitions(parts));
+ List<String> part_names) throws TException {
+ return getPartitionsByNames(getDefaultCatalog(conf), db_name, tbl_name, part_names);
+ }
+
+ @Override
+ public List<Partition> getPartitionsByNames(String catName, String db_name, String tbl_name,
+ List<String> part_names) throws TException {
+ List<Partition> parts =
+ client.get_partitions_by_names(prependCatalogToDbName(catName, db_name, conf), tbl_name, part_names);
+ return deepCopyPartitions(filterHook.filterPartitions(parts));
}
@Override
public PartitionValuesResponse listPartitionValues(PartitionValuesRequest request)
throws MetaException, TException, NoSuchObjectException {
+ if (!request.isSetCatName()) request.setCatName(getDefaultCatalog(conf));
return client.get_partition_values(request);
}
@Override
public Partition getPartitionWithAuthInfo(String db_name, String tbl_name,
List<String> part_vals, String user_name, List<String> group_names)
- throws MetaException, UnknownTableException, NoSuchObjectException,
- TException {
- Partition p = client.get_partition_with_auth(db_name, tbl_name, part_vals, user_name,
- group_names);
- return fastpath ? p : deepCopy(filterHook.filterPartition(p));
+ throws TException {
+ return getPartitionWithAuthInfo(getDefaultCatalog(conf), db_name, tbl_name, part_vals,
+ user_name, group_names);
+ }
+
+ @Override
+ public Partition getPartitionWithAuthInfo(String catName, String dbName, String tableName,
+ List<String> pvals, String userName,
+ List<String> groupNames) throws TException {
+ Partition p = client.get_partition_with_auth(prependCatalogToDbName(catName, dbName, conf), tableName,
+ pvals, userName, groupNames);
+ return deepCopy(filterHook.filterPartition(p));
}
- /**
- * @param name
- * @param dbname
- * @return the table
- * @throws NoSuchObjectException
- * @throws MetaException
- * @throws TException
- * @throws NoSuchObjectException
- * @see org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore.Iface#get_table(java.lang.String,
- * java.lang.String)
- */
@Override
- public Table getTable(String dbname, String name) throws MetaException,
- TException, NoSuchObjectException {
- GetTableRequest req = new GetTableRequest(dbname, name);
+ public Table getTable(String dbname, String name) throws TException {
+ return getTable(getDefaultCatalog(conf), dbname, name);
+ }
+
+ @Override
+ public Table getTable(String catName, String dbName, String tableName) throws TException {
+ GetTableRequest req = new GetTableRequest(dbName, tableName);
+ req.setCatName(catName);
req.setCapabilities(version);
Table t = client.get_table_req(req).getTable();
- return fastpath ? t : deepCopy(filterHook.filterTable(t));
+ return deepCopy(filterHook.filterTable(t));
}
- /** {@inheritDoc} */
@Override
- @Deprecated
- public Table getTable(String tableName) throws MetaException, TException,
- NoSuchObjectException {
- Table t = getTable(DEFAULT_DATABASE_NAME, tableName);
- return fastpath ? t : filterHook.filterTable(t);
+ public List<Table> getTableObjectsByName(String dbName, List<String> tableNames)
+ throws TException {
+ return getTableObjectsByName(getDefaultCatalog(conf), dbName, tableNames);
}
- /** {@inheritDoc} */
@Override
- public List<Table> getTableObjectsByName(String dbName, List<String> tableNames)
- throws MetaException, InvalidOperationException, UnknownDBException, TException {
+ public List<Table> getTableObjectsByName(String catName, String dbName,
+ List<String> tableNames) throws TException {
GetTablesRequest req = new GetTablesRequest(dbName);
+ req.setCatName(catName);
req.setTblNames(tableNames);
req.setCapabilities(version);
List<Table> tabs = client.get_table_objects_by_name_req(req).getTables();
- return fastpath ? tabs : deepCopyTables(filterHook.filterTables(tabs));
+ return deepCopyTables(filterHook.filterTables(tabs));
}
- /** {@inheritDoc} */
@Override
public Map<String, Materialization> getMaterializationsInvalidationInfo(String dbName, List<String> viewNames)
throws MetaException, InvalidOperationException, UnknownDBException, TException {
return client.get_materialization_invalidation_info(
- dbName, filterHook.filterTableNames(dbName, viewNames));
+ dbName, filterHook.filterTableNames(getDefaultCatalog(conf), dbName, viewNames));
}
- /** {@inheritDoc} */
@Override
public void updateCreationMetadata(String dbName, String tableName, CreationMetadata cm)
throws MetaException, InvalidOperationException, UnknownDBException, TException {
- client.update_creation_metadata(dbName, tableName, cm);
+ client.update_creation_metadata(getDefaultCatalog(conf), dbName, tableName, cm);
+ }
+
+ @Override
+ public void updateCreationMetadata(String catName, String dbName, String tableName,
+ CreationMetadata cm) throws MetaException, TException {
+ client.update_creation_metadata(catName, dbName, tableName, cm);
+
}
/** {@inheritDoc} */
@Override
public List<String> listTableNamesByFilter(String dbName, String filter, short maxTables)
- throws MetaException, TException, InvalidOperationException, UnknownDBException {
- return filterHook.filterTableNames(dbName,
- client.get_table_names_by_filter(dbName, filter, maxTables));
+ throws TException {
+ return listTableNamesByFilter(getDefaultCatalog(conf), dbName, filter, maxTables);
+ }
+
+ @Override
+ public List<String> listTableNamesByFilter(String catName, String dbName, String filter,
+ int maxTables) throws TException {
+ return filterHook.filterTableNames(catName, dbName,
+ client.get_table_names_by_filter(prependCatalogToDbName(catName, dbName, conf), filter,
+ shrinkMaxtoShort(maxTables)));
}
/**
@@ -1506,34 +1603,52 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
return deepCopy(client.get_type(name));
}
- /** {@inheritDoc} */
@Override
public List<String> getTables(String dbname, String tablePattern) throws MetaException {
try {
- return filterHook.filterTableNames(dbname, client.get_tables(dbname, tablePattern));
+ return getTables(getDefaultCatalog(conf), dbname, tablePattern);
} catch (Exception e) {
MetaStoreUtils.logAndThrowMetaException(e);
}
return null;
}
- /** {@inheritDoc} */
+ @Override
+ public List<String> getTables(String catName, String dbName, String tablePattern)
+ throws TException {
+ return filterHook.filterTableNames(catName, dbName,
+ client.get_tables(prependCatalogToDbName(catName, dbName, conf), tablePattern));
+ }
+
@Override
public List<String> getTables(String dbname, String tablePattern, TableType tableType) throws MetaException {
try {
- return filterHook.filterTableNames(dbname,
- client.get_tables_by_type(dbname, tablePattern, tableType.toString()));
+ return getTables(getDefaultCatalog(conf), dbname, tablePattern, tableType);
} catch (Exception e) {
MetaStoreUtils.logAndThrowMetaException(e);
}
return null;
}
- /** {@inheritDoc} */
@Override
- public List<String> getMaterializedViewsForRewriting(String dbname) throws MetaException {
+ public List<String> getTables(String catName, String dbName, String tablePattern,
+ TableType tableType) throws TException {
+ return filterHook.filterTableNames(catName, dbName,
+ client.get_tables_by_type(prependCatalogToDbName(catName, dbName, conf), tablePattern,
+ tableType.toString()));
+ }
+
+ @Override
+ public List<String> getMaterializedViewsForRewriting(String dbName) throws TException {
+ return getMaterializedViewsForRewriting(getDefaultCatalog(conf), dbName);
+ }
+
+ @Override
+ public List<String> getMaterializedViewsForRewriting(String catName, String dbname)
+ throws MetaException {
try {
- return filterHook.filterTableNames(dbname, client.get_materialized_views_for_rewriting(dbname));
+ return filterHook.filterTableNames(catName, dbname,
+ client.get_materialized_views_for_rewriting(prependCatalogToDbName(catName, dbname, conf)));
} catch (Exception e) {
MetaStoreUtils.logAndThrowMetaException(e);
}
@@ -1544,38 +1659,24 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
public List<TableMeta> getTableMeta(String dbPatterns, String tablePatterns, List<String> tableTypes)
throws MetaException {
try {
- return filterNames(client.get_table_meta(dbPatterns, tablePatterns, tableTypes));
+ return getTableMeta(getDefaultCatalog(conf), dbPatterns, tablePatterns, tableTypes);
} catch (Exception e) {
MetaStoreUtils.logAndThrowMetaException(e);
}
return null;
}
- private List<TableMeta> filterNames(List<TableMeta> metas) throws MetaException {
- Map<String, TableMeta> sources = new LinkedHashMap<>();
- Map<String, List<String>> dbTables = new LinkedHashMap<>();
- for (TableMeta meta : metas) {
- sources.put(meta.getDbName() + "." + meta.getTableName(), meta);
- List<String> tables = dbTables.get(meta.getDbName());
- if (tables == null) {
- dbTables.put(meta.getDbName(), tables = new ArrayList<>());
- }
- tables.add(meta.getTableName());
- }
- List<TableMeta> filtered = new ArrayList<>();
- for (Map.Entry<String, List<String>> entry : dbTables.entrySet()) {
- for (String table : filterHook.filterTableNames(entry.getKey(), entry.getValue())) {
- filtered.add(sources.get(entry.getKey() + "." + table));
- }
- }
- return filtered;
+ @Override
+ public List<TableMeta> getTableMeta(String catName, String dbPatterns, String tablePatterns,
+ List<String> tableTypes) throws TException {
+ return filterHook.filterTableMetas(client.get_table_meta(prependCatalogToDbName(
+ catName, dbPatterns, conf), tablePatterns, tableTypes));
}
- /** {@inheritDoc} */
@Override
public List<String> getAllTables(String dbname) throws MetaException {
try {
- return filterHook.filterTableNames(dbname, client.get_all_tables(dbname));
+ return getAllTables(getDefaultCatalog(conf), dbname);
} catch (Exception e) {
MetaStoreUtils.logAndThrowMetaException(e);
}
@@ -1583,10 +1684,21 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
}
@Override
- public boolean tableExists(String databaseName, String tableName) throws MetaException,
- TException, UnknownDBException {
+ public List<String> getAllTables(String catName, String dbName) throws TException {
+ return filterHook.filterTableNames(catName, dbName, client.get_all_tables(
+ prependCatalogToDbName(catName, dbName, conf)));
+ }
+
+ @Override
+ public boolean tableExists(String databaseName, String tableName) throws TException {
+ return tableExists(getDefaultCatalog(conf), databaseName, tableName);
+ }
+
+ @Override
+ public boolean tableExists(String catName, String dbName, String tableName) throws TException {
try {
- GetTableRequest req = new GetTableRequest(databaseName, tableName);
+ GetTableRequest req = new GetTableRequest(dbName, tableName);
+ req.setCatName(catName);
req.setCapabilities(version);
return filterHook.filterTable(client.get_table_req(req).getTable()) != null;
} catch (NoSuchObjectException e) {
@@ -1594,156 +1706,167 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
}
}
- /** {@inheritDoc} */
@Override
- @Deprecated
- public boolean tableExists(String tableName) throws MetaException,
- TException, UnknownDBException {
- return tableExists(DEFAULT_DATABASE_NAME, tableName);
+ public List<String> listPartitionNames(String dbName, String tblName,
+ short max) throws NoSuchObjectException, MetaException, TException {
+ return listPartitionNames(getDefaultCatalog(conf), dbName, tblName, max);
}
@Override
- public List<String> listPartitionNames(String dbName, String tblName,
- short max) throws NoSuchObjectException, MetaException, TException {
- return filterHook.filterPartitionNames(dbName, tblName,
- client.get_partition_names(dbName, tblName, max));
+ public List<String> listPartitionNames(String catName, String dbName, String tableName,
+ int maxParts) throws TException {
+ return filterHook.filterPartitionNames(catName, dbName, tableName,
+ client.get_partition_names(prependCatalogToDbName(catName, dbName, conf), tableName, shrinkMaxtoShort(maxParts)));
}
@Override
public List<String> listPartitionNames(String db_name, String tbl_name,
- List<String> part_vals, short max_parts)
- throws MetaException, TException, NoSuchObjectException {
- return filterHook.filterPartitionNames(db_name, tbl_name,
- client.get_partition_names_ps(db_name, tbl_name, part_vals, max_parts));
+ List<String> part_vals, short max_parts) throws TException {
+ return listPartitionNames(getDefaultCatalog(conf), db_name, tbl_name, part_vals, max_parts);
+ }
+
+ @Override
+ public List<String> listPartitionNames(String catName, String db_name, String tbl_name,
+ List<String> part_vals, int max_parts) throws TException {
+ return filterHook.filterPartitionNames(catName, db_name, tbl_name,
+ client.get_partition_names_ps(prependCatalogToDbName(catName, db_name, conf), tbl_name,
+ part_vals, shrinkMaxtoShort(max_parts)));
}
- /**
- * Get number of partitions matching specified filter
- * @param db_name the database name
- * @param tbl_name the table name
- * @param filter the filter string,
- * for example "part1 = \"p1_abc\" and part2 <= "\p2_test\"". Filtering can
- * be done only on string partition keys.
- * @return number of partitions
- * @throws MetaException
- * @throws NoSuchObjectException
- * @throws TException
- */
@Override
public int getNumPartitionsByFilter(String db_name, String tbl_name,
- String filter) throws MetaException,
- NoSuchObjectException, TException {
- return client.get_num_partitions_by_filter(db_name, tbl_name, filter);
+ String filter) throws TException {
+ return getNumPartitionsByFilter(getDefaultCatalog(conf), db_name, tbl_name, filter);
+ }
+
+ @Override
+ public int getNumPartitionsByFilter(String catName, String dbName, String tableName,
+ String filter) throws TException {
+ return client.get_num_partitions_by_filter(prependCatalogToDbName(catName, dbName, conf), tableName,
+ filter);
}
@Override
public void alter_partition(String dbName, String tblName, Partition newPart)
throws InvalidOperationException, MetaException, TException {
- client.alter_partition_with_environment_context(dbName, tblName, newPart, null);
+ alter_partition(getDefaultCatalog(conf), dbName, tblName, newPart, null);
}
@Override
public void alter_partition(String dbName, String tblName, Partition newPart, EnvironmentContext environmentContext)
throws InvalidOperationException, MetaException, TException {
- client.alter_partition_with_environment_context(dbName, tblName, newPart, environmentContext);
+ alter_partition(getDefaultCatalog(conf), dbName, tblName, newPart, environmentContext);
+ }
+
+ @Override
+ public void alter_partition(String catName, String dbName, String tblName, Partition newPart,
+ EnvironmentContext environmentContext) throws TException {
+ client.alter_partition_with_environment_context(prependCatalogToDbName(catName, dbName, conf), tblName,
+ newPart, environmentContext);
}
@Override
public void alter_partitions(String dbName, String tblName, List<Partition> newParts)
- throws InvalidOperationException, MetaException, TException {
- client.alter_partitions_with_environment_context(dbName, tblName, newParts, null);
+ throws TException {
+ alter_partitions(getDefaultCatalog(conf), dbName, tblName, newParts, null);
}
@Override
- public void alter_partitions(String dbName, String tblName, List<Partition> newParts, EnvironmentContext environmentContext)
- throws InvalidOperationException, MetaException, TException {
- client.alter_partitions_with_environment_context(dbName, tblName, newParts, environmentContext);
-}
+ public void alter_partitions(String dbName, String tblName, List<Partition> newParts,
+ EnvironmentContext environmentContext) throws TException {
+ alter_partitions(getDefaultCatalog(conf), dbName, tblName, newParts, environmentContext);
+ }
@Override
- public void alterDatabase(String dbName, Database db)
- throws MetaException, NoSuchObjectException, TException {
- client.alter_database(dbName, db);
+ public void alter_partitions(String catName, String dbName, String tblName,
+ List<Partition> newParts,
+ EnvironmentContext environmentContext) throws TException {
+ client.alter_partitions_with_environment_context(prependCatalogToDbName(catName, dbName, conf),
+ tblName, newParts, environmentContext);
}
- /**
- * @param db
- * @param tableName
- * @throws UnknownTableException
- * @throws UnknownDBException
- * @throws MetaException
- * @throws TException
- * @see org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore.Iface#get_fields(java.lang.String,
- * java.lang.String)
- */
+
@Override
- public List<FieldSchema> getFields(String db, String tableName)
- throws MetaException, TException, UnknownTableException,
- UnknownDBException {
- List<FieldSchema> fields = client.get_fields(db, tableName);
- return fastpath ? fields : deepCopyFieldSchemas(fields);
+ public void alterDatabase(String dbName, Database db) throws TException {
+ alterDatabase(getDefaultCatalog(conf), dbName, db);
}
@Override
- public List<SQLPrimaryKey> getPrimaryKeys(PrimaryKeysRequest req)
- throws MetaException, NoSuchObjectException, TException {
+ public void alterDatabase(String catName, String dbName, Database newDb) throws TException {
+ client.alter_database(prependCatalogToDbName(catName, dbName, conf), newDb);
+ }
+
+ @Override
+ public List<FieldSchema> getFields(String db, String tableName) throws TException {
+ return getFields(getDefaultCatalog(conf), db, tableName);
+ }
+
+ @Override
+ public List<FieldSchema> getFields(String catName, String db, String tableName)
+ throws TException {
+ List<FieldSchema> fields = client.get_fields(prependCatalogToDbName(catName, db, conf), tableName);
+ return deepCopyFieldSchemas(fields);
+ }
+
+ @Override
+ public List<SQLPrimaryKey> getPrimaryKeys(PrimaryKeysRequest req) throws TException {
+ if (!req.isSetCatName()) req.setCatName(getDefaultCatalog(conf));
return client.get_primary_keys(req).getPrimaryKeys();
}
@Override
public List<SQLForeignKey> getForeignKeys(ForeignKeysRequest req) throws MetaException,
NoSuchObjectException, TException {
+ if (!req.isSetCatName()) req.setCatName(getDefaultCatalog(conf));
return client.get_foreign_keys(req).getForeignKeys();
}
@Override
public List<SQLUniqueConstraint> getUniqueConstraints(UniqueConstraintsRequest req)
throws MetaException, NoSuchObjectException, TException {
+ if (!req.isSetCatName()) req.setCatName(getDefaultCatalog(conf));
return client.get_unique_constraints(req).getUniqueConstraints();
}
@Override
public List<SQLNotNullConstraint> getNotNullConstraints(NotNullConstraintsRequest req)
throws MetaException, NoSuchObjectException, TException {
+ if (!req.isSetCatName()) req.setCatName(getDefaultCatalog(conf));
return client.get_not_null_constraints(req).getNotNullConstraints();
}
@Override
public List<SQLDefaultConstraint> getDefaultConstraints(DefaultConstraintsRequest req)
throws MetaException, NoSuchObjectException, TException {
+ if (!req.isSetCatName()) req.setCatName(getDefaultCatalog(conf));
return client.get_default_constraints(req).getDefaultConstraints();
}
@Override
public List<SQLCheckConstraint> getCheckConstraints(CheckConstraintsRequest req)
throws MetaException, NoSuchObjectException, TException {
+ if (!req.isSetCatName()) req.setCatName(getDefaultCatalog(conf));
return client.get_check_constraints(req).getCheckConstraints();
}
/** {@inheritDoc} */
@Override
- @Deprecated
- //use setPartitionColumnStatistics instead
- public boolean updateTableColumnStatistics(ColumnStatistics statsObj)
- throws NoSuchObjectException, InvalidObjectException, MetaException, TException,
- InvalidInputException{
+ public boolean updateTableColumnStatistics(ColumnStatistics statsObj) throws TException {
+ if (!statsObj.getStatsDesc().isSetCatName()) statsObj.getStatsDesc().setCatName(getDefaultCatalog(conf));
return client.update_table_column_statistics(statsObj);
}
- /** {@inheritDoc} */
@Override
- @Deprecated
- //use setPartitionColumnStatistics instead
- public boolean updatePartitionColumnStatistics(ColumnStatistics statsObj)
- throws NoSuchObjectException, InvalidObjectException, MetaException, TException,
- InvalidInputException{
+ public boolean updatePartitionColumnStatistics(ColumnStatistics statsObj) throws TException {
+ if (!statsObj.getStatsDesc().isSetCatName()) statsObj.getStatsDesc().setCatName(getDefaultCatalog(conf));
return client.update_partition_column_statistics(statsObj);
}
- /** {@inheritDoc} */
@Override
- public boolean setPartitionColumnStatistics(SetPartitionsStatsRequest request)
- throws NoSuchObjectException, InvalidObjectException, MetaException, TException,
- InvalidInputException{
+ public boolean setPartitionColumnStatistics(SetPartitionsStatsRequest request) throws TException {
+ String defaultCat = getDefaultCatalog(conf);
+ for (ColumnStatistics stats : request.getColStats()) {
+ if (!stats.getStatsDesc().isSetCatName()) stats.getStatsDesc().setCatName(defaultCat);
+ }
return client.set_aggr_stats_for(request);
}
@@ -1757,66 +1880,84 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
}
}
- /** {@inheritDoc} */
@Override
public List<ColumnStatisticsObj> getTableColumnStatistics(String dbName, String tableName,
- List<String> colNames) throws NoSuchObjectException, MetaException, TException,
- InvalidInputException, InvalidObjectException {
- return client.get_table_statistics_req(
- new TableStatsRequest(dbName, tableName, colNames)).getTableStats();
+ List<String> colNames) throws TException {
+ return getTableColumnStatistics(getDefaultCatalog(conf), dbName, tableName, colNames);
+ }
+
+ @Override
+ public List<ColumnStatisticsObj> getTableColumnStatistics(String catName, String dbName,
+ String tableName,
+ List<String> colNames) throws TException {
+ TableStatsRequest rqst = new TableStatsRequest(dbName, tableName, colNames);
+ rqst.setCatName(catName);
+ return client.get_table_statistics_req(rqst).getTableStats();
}
- /** {@inheritDoc} */
@Override
public Map<String, List<ColumnStatisticsObj>> getPartitionColumnStatistics(
String dbName, String tableName, List<String> partNames, List<String> colNames)
- throws NoSuchObjectException, MetaException, TException {
- return client.get_partitions_statistics_req(
- new PartitionsStatsRequest(dbName, tableName, colNames, partNames)).getPartStats();
+ throws TException {
+ return getPartitionColumnStatistics(getDefaultCatalog(conf), dbName, tableName, partNames, colNames);
+ }
+
+ @Override
+ public Map<String, List<ColumnStatisticsObj>> getPartitionColumnStatistics(
+ String catName, String dbName, String tableName, List<String> partNames,
+ List<String> colNames) throws TException {
+ PartitionsStatsRequest rqst = new PartitionsStatsRequest(dbName, tableName, colNames,
+ partNames);
+ rqst.setCatName(catName);
+ return client.get_partitions_statistics_req(rqst).getPartStats();
}
- /** {@inheritDoc} */
@Override
public boolean deletePartitionColumnStatistics(String dbName, String tableName, String partName,
- String colName) throws NoSuchObjectException, InvalidObjectException, MetaException,
- TException, InvalidInputException
- {
- return client.delete_partition_column_statistics(dbName, tableName, partName, colName);
+ String colName) throws TException {
+ return deletePartitionColumnStatistics(getDefaultCatalog(conf), dbName, tableName, partName,
+ colName);
+ }
+
+ @Override
+ public boolean deletePartitionColumnStatistics(String catName, String dbName, String tableName,
+ String partName, String colName)
+ throws TException {
+ return client.delete_partition_column_statistics(prependCatalogToDbName(catName, dbName, conf),
+ tableName, partName, colName);
}
- /** {@inheritDoc} */
@Override
public boolean deleteTableColumnStatistics(String dbName, String tableName, String colName)
- throws NoSuchObjectException, InvalidObjectException, MetaException, TException,
- InvalidInputException
- {
- return client.delete_table_column_statistics(dbName, tableName, colName);
+ throws TException {
+ return deleteTableColumnStatistics(getDefaultCatalog(conf), dbName, tableName, colName);
+ }
+
+ @Override
+ public boolean deleteTableColumnStatistics(String catName, String dbName, String tableName,
+ String colName) throws TException {
+ return client.delete_table_column_statistics(prependCatalogToDbName(catName, dbName, conf),
+ tableName, colName);
+ }
+
+ @Override
+ public List<FieldSchema> getSchema(String db, String tableName) throws TException {
+ return getSchema(getDefaultCatalog(conf), db, tableName);
}
- /**
- * @param db
- * @param tableName
- * @throws UnknownTableException
- * @throws UnknownDBException
- * @throws MetaException
- * @throws TException
- * @see org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore.Iface#get_schema(java.lang.String,
- * java.lang.String)
- */
@Override
- public List<FieldSchema> getSchema(String db, String tableName)
- throws MetaException, TException, UnknownTableException,
- UnknownDBException {
- EnvironmentContext envCxt = null;
- String addedJars = MetastoreConf.getVar(conf, ConfVars.ADDED_JARS);
- if(org.apache.commons.lang.StringUtils.isNotBlank(addedJars)) {
- Map<String, String> props = new HashMap<String, String>();
- props.put("hive.added.jars.path", addedJars);
- envCxt = new EnvironmentContext(props);
- }
+ public List<FieldSchema> getSchema(String catName, String db, String tableName) throws TException {
+ EnvironmentContext envCxt = null;
+ String addedJars = MetastoreConf.getVar(conf, ConfVars.ADDED_JARS);
+ if(org.apache.commons.lang.StringUtils.isNotBlank(addedJars)) {
+ Map<String, String> props = new HashMap<>();
+ props.put("hive.added.jars.path", addedJars);
+ envCxt = new EnvironmentContext(props);
+ }
- List<FieldSchema> fields = client.get_schema_with_environment_context(db, tableName, envCxt);
- return fastpath ? fields : deepCopyFieldSchemas(fields);
+ List<FieldSchema> fields = client.get_schema_with_environment_context(prependCatalogToDbName(
+ catName, db, conf), tableName, envCxt);
+ return deepCopyFieldSchemas(fields);
}
@Override
@@ -1826,10 +1967,16 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
}
@Override
- public Partition getPartition(String db, String tableName, String partName)
- throws MetaException, TException, UnknownTableException, NoSuchObjectException {
- Partition p = client.get_partition_by_name(db, tableName, partName);
- return fastpath ? p : deepCopy(filterHook.filterPartition(p));
+ public Partition getPartition(String db, String tableName, String partName) throws TException {
+ return getPartition(getDefaultCatalog(conf), db, tableName, partName);
+ }
+
+ @Override
+ public Partition getPartition(String catName, String dbName, String tblName, String name)
+ throws TException {
+ Partition p = client.get_partition_by_name(prependCatalogToDbName(catName, dbName, conf), tblName,
+ name);
+ return deepCopy(filterHook.filterPartition(p));
}
public Partition appendPartitionByName(String dbName, String tableName, String partName)
@@ -1842,7 +1989,7 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
MetaException, TException {
Partition p = client.append_partition_by_name_with_environment_context(dbName, tableName,
partName, envContext);
- return fastpath ? p : deepCopy(p);
+ return deepCopy(p);
}
public boolean dropPartitionByName(String dbName, String tableName, String partName,
@@ -2030,6 +2177,10 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
@Override
public boolean grant_privileges(PrivilegeBag privileges)
throws MetaException, TException {
+ String defaultCat = getDefaultCatalog(conf);
+ for (HiveObjectPrivilege priv : privileges.getPrivileges()) {
+ if (!priv.getHiveObject().isSetCatName()) priv.getHiveObject().setCatName(defaultCat);
+ }
GrantRevokePrivilegeRequest req = new GrantRevokePrivilegeRequest();
req.setRequestType(GrantRevokeType.GRANT);
req.setPrivileges(privileges);
@@ -2059,6 +2210,10 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
@Override
public boolean revoke_privileges(PrivilegeBag privileges, boolean grantOption) throws MetaException,
TException {
+ String defaultCat = getDefaultCatalog(conf);
+ for (HiveObjectPrivilege priv : privileges.getPrivileges()) {
+ if (!priv.getHiveObject().isSetCatName()) priv.getHiveObject().setCatName(defaultCat);
+ }
GrantRevokePrivilegeRequest req = new GrantRevokePrivilegeRequest();
req.setRequestType(GrantRevokeType.REVOKE);
req.setPrivileges(privileges);
@@ -2074,6 +2229,7 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
public PrincipalPrivilegeSet get_privilege_set(HiveObjectRef hiveObject,
String userName, List<String> groupNames) throws MetaException,
TException {
+ if (!hiveObject.isSetCatName()) hiveObject.setCatName(getDefaultCatalog(conf));
return client.get_privilege_set(hiveObject, userName, groupNames);
}
@@ -2081,6 +2237,7 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
public List<HiveObjectPrivilege> list_privileges(String principalName,
PrincipalType principalType, HiveObjectRef hiveObject)
throws MetaException, TException {
+ if (!hiveObject.isSetCatName()) hiveObject.setCatName(getDefaultCatalog(conf));
return client.list_privileges(principalName, principalType, hiveObject);
}
@@ -2396,12 +2553,14 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
@Override
public NotificationEventsCountResponse getNotificationEventsCount(NotificationEventsCountRequest rqst)
throws TException {
+ if (!rqst.isSetCatName()) rqst.setCatName(getDefaultCatalog(conf));
return client.get_notification_events_count(rqst);
}
@InterfaceAudience.LimitedPrivate({"Apache Hive, HCatalog"})
@Override
public FireEventResponse fireListenerEvent(FireEventRequest rqst) throws TException {
+ if (!rqst.isSetCatName()) rqst.setCatName(getDefaultCatalog(conf));
return client.fire_listener_event(rqst);
}
@@ -2442,60 +2601,83 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
@Override
public void markPartitionForEvent(String db_name, String tbl_name, Map<String,String> partKVs, PartitionEventType eventType)
- throws MetaException, TException, NoSuchObjectException, UnknownDBException,
- UnknownTableException,
- InvalidPartitionException, UnknownPartitionException {
- assert db_name != null;
- assert tbl_name != null;
- assert partKVs != null;
- client.markPartitionForEvent(db_name, tbl_name, partKVs, eventType);
+ throws TException {
+ markPartitionForEvent(getDefaultCatalog(conf), db_name, tbl_name, partKVs, eventType);
+ }
+
+ @Override
+ public void markPartitionForEvent(String catName, String db_name, String tbl_name,
+ Map<String, String> partKVs,
+ PartitionEventType eventType) throws TException {
+ client.markPartitionForEvent(prependCatalogToDbName(catName, db_name, conf), tbl_name, partKVs,
+ eventType);
+
}
@Override
public boolean isPartitionMarkedForEvent(String db_name, String tbl_name, Map<String,String> partKVs, PartitionEventType eventType)
- throws MetaException, NoSuchObjectException, UnknownTableException, UnknownDBException, TException,
- InvalidPartitionException, UnknownPartitionException {
- assert db_name != null;
- assert tbl_name != null;
- assert partKVs != null;
- return client.isPartitionMarkedForEvent(db_name, tbl_name, partKVs, eventType);
+ throws TException {
+ return isPartitionMarkedForEvent(getDefaultCatalog(conf), db_name, tbl_name, partKVs, eventType);
}
@Override
- public void createFunction(Function func) throws InvalidObjectException,
- MetaException, TException {
+ public boolean isPartitionMarkedForEvent(String catName, String db_name, String tbl_name,
+ Map<String, String> partKVs,
+ PartitionEventType eventType) throws TException {
+ return client.isPartitionMarkedForEvent(prependCatalogToDbName(catName, db_name, conf), tbl_name,
+ partKVs, eventType);
+ }
+
+ @Override
+ public void createFunction(Function func) throws TException {
+ if (!func.isSetCatName()) func.setCatName(getDefaultCatalog(conf));
client.create_function(func);
}
@Override
public void alterFunction(String dbName, String funcName, Function newFunction)
- throws InvalidObjectException, MetaException, TException {
- client.alter_function(dbName, funcName, newFunction);
+ throws TException {
+ alterFunction(getDefaultCatalog(conf), dbName, funcName, newFunction);
}
@Override
- public void dropFunction(String dbName, String funcName)
- throws MetaException, NoSuchObjectException, InvalidObjectException,
- InvalidInputException, TException {
- client.drop_function(dbName, funcName);
+ public void alterFunction(String catName, String dbName, String funcName,
+ Function newFunction) throws TException {
+ client.alter_function(prependCatalogToDbName(catName, dbName, conf), funcName, newFunction);
}
@Override
- public Function getFunction(String dbName, String funcName)
- throws MetaException, TException {
- Function f = client.get_function(dbName, funcName);
- return fastpath ? f : deepCopy(f);
+ public void dropFunction(String dbName, String funcName) throws TException {
+ dropFunction(getDefaultCatalog(conf), dbName, funcName);
}
@Override
- public List<String> getFunctions(String dbName, String pattern)
- throws MetaException, TException {
- return client.get_functions(dbName, pattern);
+ public void dropFunction(String catName, String dbName, String funcName) throws TException {
+ client.drop_function(prependCatalogToDbName(catName, dbName, conf), funcName);
+ }
+
+ @Override
+ public Function getFunction(String dbName, String funcName) throws TException {
+ return getFunction(getDefaultCatalog(conf), dbName, funcName);
+ }
+
+ @Override
+ public Function getFunction(String catName, String dbName, String funcName) throws TException {
+ return deepCopy(client.get_function(prependCatalogToDbName(catName, dbName, conf), funcName));
+ }
+
+ @Override
+ public List<String> getFunctions(String dbName, String pattern) throws TException {
+ return getFunctions(getDefaultCatalog(conf), dbName, pattern);
+ }
+
+ @Override
+ public List<String> getFunctions(String catName, String dbName, String pattern) throws TException {
+ return client.get_functions(prependCatalogToDbName(catName, dbName, conf), pattern);
}
@Override
- public GetAllFunctionsResponse getAllFunctions()
- throws MetaException, TException {
+ public GetAllFunctionsResponse getAllFunctions() throws TException {
return client.get_all_functions();
}
@@ -2505,20 +2687,27 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
client.create_table_with_environment_context(tbl, envContext);
}
- protected void drop_table_with_environment_context(String dbname, String name,
- boolean deleteData, EnvironmentContext envContext) throws MetaException, TException,
- NoSuchObjectExcep
<TRUNCATED>