in aws-glue-datacatalog-client-common/src/main/java/com/amazonaws/glue/catalog/metastore/GlueMetastoreClientDelegate.java [246:284]
public void dropDatabase(String name, boolean deleteData, boolean ignoreUnknownDb, boolean cascade) throws TException {
checkArgument(StringUtils.isNotEmpty(name), "name cannot be null or empty");
String dbLocation;
try {
List<String> tables = getTables(name, MATCH_ALL);
boolean isEmptyDatabase = tables.isEmpty();
org.apache.hadoop.hive.metastore.api.Database db = getDatabase(name);
dbLocation = db.getLocationUri();
// TODO: handle cascade
if (isEmptyDatabase || cascade) {
glueMetastore.deleteDatabase(name);
} else {
throw new InvalidOperationException("Database " + name + " is not empty.");
}
} catch (NoSuchObjectException e) {
if (ignoreUnknownDb) {
return;
} else {
throw e;
}
} catch (AmazonServiceException e) {
throw CatalogToHiveConverter.wrapInHiveException(e);
} catch (Exception e){
String msg = "Unable to drop database: ";
logger.error(msg, e);
throw new MetaException(msg + e);
}
if (deleteData) {
try {
wh.deleteDir(new Path(dbLocation), true);
} catch (Exception e) {
logger.error("Unable to remove database directory " + dbLocation, e);
}
}
}