pvary commented on code in PR #3220:
URL: https://github.com/apache/hive/pull/3220#discussion_r857355770
##########
standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java:
##########
@@ -1534,43 +1538,50 @@ public void dropDatabase(String catalogName, String
dbName, boolean deleteData,
* @param maxBatchSize
* @throws TException
*/
- private void dropDatabaseCascadePerTable(String catName, String dbName,
List<String> tableList,
- boolean deleteData, int
maxBatchSize) throws TException {
- String dbNameWithCatalog = prependCatalogToDbName(catName, dbName, conf);
- for (Table table : new TableIterable(this, catName, dbName, tableList,
maxBatchSize)) {
+ private void dropDatabaseCascadePerTable(DropDatabaseRequest req,
List<String> tableList, int maxBatchSize)
+ throws TException {
+ String dbNameWithCatalog = prependCatalogToDbName(req.getCatalogName(),
req.getName(), conf);
+ for (Table table : new TableIterable(
+ this, req.getCatalogName(), req.getName(), tableList, maxBatchSize)) {
boolean success = false;
HiveMetaHook hook = getHook(table);
- if (hook == null) {
- continue;
- }
try {
- hook.preDropTable(table);
- client.drop_table_with_environment_context(dbNameWithCatalog,
table.getTableName(), deleteData, null);
- hook.commitDropTable(table, deleteData);
+ if (hook != null) {
+ hook.preDropTable(table);
+ }
+ boolean isSoftDelete = req.isSoftDelete() && Boolean.parseBoolean(
+ table.getParameters().getOrDefault(SOFT_DELETE_TABLE, "false"));
+ EnvironmentContext context = null;
+ if (req.isSetTxnId()) {
+ context = new EnvironmentContext();
+ context.putToProperties("txnId", String.valueOf(req.getTxnId()));
+ req.setDeleteManagedDir(false);
+ }
+ client.drop_table_with_environment_context(dbNameWithCatalog,
table.getTableName(),
+ req.isDeleteData() && !isSoftDelete, context);
+ if (hook != null) {
+ hook.commitDropTable(table, req.isDeleteData());
+ }
success = true;
} finally {
- if (!success) {
+ if (!success && hook != null) {
hook.rollbackDropTable(table);
}
}
}
- client.drop_database(dbNameWithCatalog, deleteData, true);
+ client.drop_database_req(req);
}
/**
* Handles dropDatabase by invoking drop_database in HMS.
* Useful when table list in DB can fit in memory, it will retrieve all
tables at once and
* call drop_database once. Also handles drop_table hooks.
- * @param catName
- * @param dbName
+ * @param req
* @param tableList
- * @param deleteData
* @throws TException
*/
- private void dropDatabaseCascadePerDb(String catName, String dbName,
List<String> tableList,
- boolean deleteData) throws TException {
- String dbNameWithCatalog = prependCatalogToDbName(catName, dbName, conf);
- List<Table> tables = getTableObjectsByName(catName, dbName, tableList);
+ private void dropDatabaseCascadePerDb(DropDatabaseRequest req, List<String>
tableList) throws TException {
Review Comment:
What happens when the tables inside the db has a different configuration.
Some of the tables are soft delete, and some of the tables are hard delete.
Also what happens if the db and the table soft delete configuration is
different?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]