in core/src/main/java/org/apache/gravitino/storage/relational/service/CatalogMetaService.java [213:308]
public boolean deleteCatalog(NameIdentifier identifier, boolean cascade) {
NameIdentifierUtil.checkCatalog(identifier);
String metalakeName = identifier.namespace().level(0);
String catalogName = identifier.name();
long catalogId = getCatalogIdByName(metalakeName, catalogName);
if (cascade) {
SessionUtils.doMultipleWithCommit(
() ->
SessionUtils.doWithoutCommit(
CatalogMetaMapper.class,
mapper -> mapper.softDeleteCatalogMetasByCatalogId(catalogId)),
() ->
SessionUtils.doWithoutCommit(
SchemaMetaMapper.class,
mapper -> mapper.softDeleteSchemaMetasByCatalogId(catalogId)),
() ->
SessionUtils.doWithoutCommit(
TableMetaMapper.class,
mapper -> mapper.softDeleteTableMetasByCatalogId(catalogId)),
() ->
SessionUtils.doWithoutCommit(
TableColumnMapper.class,
mapper -> mapper.softDeleteColumnsByCatalogId(catalogId)),
() ->
SessionUtils.doWithoutCommit(
FilesetMetaMapper.class,
mapper -> mapper.softDeleteFilesetMetasByCatalogId(catalogId)),
() ->
SessionUtils.doWithoutCommit(
FilesetVersionMapper.class,
mapper -> mapper.softDeleteFilesetVersionsByCatalogId(catalogId)),
() ->
SessionUtils.doWithoutCommit(
TopicMetaMapper.class,
mapper -> mapper.softDeleteTopicMetasByCatalogId(catalogId)),
() ->
SessionUtils.doWithoutCommit(
OwnerMetaMapper.class, mapper -> mapper.softDeleteOwnerRelByCatalogId(catalogId)),
() ->
SessionUtils.doWithoutCommit(
SecurableObjectMapper.class,
mapper -> mapper.softDeleteObjectRelsByCatalogId(catalogId)),
() ->
SessionUtils.doWithoutCommit(
TagMetadataObjectRelMapper.class,
mapper -> mapper.softDeleteTagMetadataObjectRelsByCatalogId(catalogId)),
() ->
SessionUtils.doWithoutCommit(
ModelVersionAliasRelMapper.class,
mapper -> mapper.softDeleteModelVersionAliasRelsByCatalogId(catalogId)),
() ->
SessionUtils.doWithoutCommit(
ModelVersionMetaMapper.class,
mapper -> mapper.softDeleteModelVersionMetasByCatalogId(catalogId)),
() ->
SessionUtils.doWithoutCommit(
ModelMetaMapper.class,
mapper -> mapper.softDeleteModelMetasByCatalogId(catalogId)));
} else {
List<SchemaEntity> schemaEntities =
SchemaMetaService.getInstance()
.listSchemasByNamespace(
NamespaceUtil.ofSchema(identifier.namespace().level(0), catalogName));
if (!schemaEntities.isEmpty()) {
throw new NonEmptyEntityException(
"Entity %s has sub-entities, you should remove sub-entities first", identifier);
}
SessionUtils.doMultipleWithCommit(
() ->
SessionUtils.doWithoutCommit(
CatalogMetaMapper.class,
mapper -> mapper.softDeleteCatalogMetasByCatalogId(catalogId)),
() ->
SessionUtils.doWithoutCommit(
OwnerMetaMapper.class,
mapper ->
mapper.softDeleteOwnerRelByMetadataObjectIdAndType(
catalogId, MetadataObject.Type.CATALOG.name())),
() ->
SessionUtils.doWithoutCommit(
SecurableObjectMapper.class,
mapper ->
mapper.softDeleteObjectRelsByMetadataObject(
catalogId, MetadataObject.Type.CATALOG.name())),
() ->
SessionUtils.doWithoutCommit(
TagMetadataObjectRelMapper.class,
mapper ->
mapper.softDeleteTagMetadataObjectRelsByMetadataObject(
catalogId, MetadataObject.Type.CATALOG.name())));
}
return true;
}