in aws-glue-datacatalog-client-common/src/main/java/com/amazonaws/glue/catalog/metastore/GlueMetastoreClientDelegate.java [465:507]
public void dropTable(
String dbName,
String tableName,
boolean deleteData,
boolean ignoreUnknownTbl,
boolean ifPurge
) throws TException {
checkArgument(StringUtils.isNotEmpty(dbName), "dbName cannot be null or empty");
checkArgument(StringUtils.isNotEmpty(tableName), "tableName cannot be null or empty");
if (!tableExists(dbName, tableName)) {
if (!ignoreUnknownTbl) {
throw new UnknownTableException("Cannot find table: " + dbName + "." + tableName);
} else {
return;
}
}
org.apache.hadoop.hive.metastore.api.Table tbl = getTable(dbName, tableName);
String tblLocation = tbl.getSd().getLocation();
boolean isExternal = isExternalTable(tbl);
dropPartitionsForTable(dbName, tableName, deleteData && !isExternal);
dropIndexesForTable(dbName, tableName, deleteData && !isExternal);
try {
glueMetastore.deleteTable(dbName, tableName);
} catch (AmazonServiceException e){
throw CatalogToHiveConverter.wrapInHiveException(e);
} catch (Exception e){
String msg = "Unable to drop table: ";
logger.error(msg, e);
throw new MetaException(msg + e);
}
if (StringUtils.isNotEmpty(tblLocation) && deleteData && !isExternal) {
Path tblPath = new Path(tblLocation);
try {
wh.deleteDir(tblPath, true, ifPurge);
} catch (Exception e){
logger.error("Unable to remove table directory " + tblPath, e);
}
}
}