in core/src/main/java/org/apache/gravitino/storage/relational/service/MetalakeMetaService.java [176:314]
public boolean deleteMetalake(NameIdentifier ident, boolean cascade) {
NameIdentifierUtil.checkMetalake(ident);
Long metalakeId = getMetalakeIdByName(ident.name());
if (metalakeId != null) {
if (cascade) {
SessionUtils.doMultipleWithCommit(
() ->
SessionUtils.doWithoutCommit(
MetalakeMetaMapper.class,
mapper -> mapper.softDeleteMetalakeMetaByMetalakeId(metalakeId)),
() ->
SessionUtils.doWithoutCommit(
CatalogMetaMapper.class,
mapper -> mapper.softDeleteCatalogMetasByMetalakeId(metalakeId)),
() ->
SessionUtils.doWithoutCommit(
SchemaMetaMapper.class,
mapper -> mapper.softDeleteSchemaMetasByMetalakeId(metalakeId)),
() ->
SessionUtils.doWithoutCommit(
TableMetaMapper.class,
mapper -> mapper.softDeleteTableMetasByMetalakeId(metalakeId)),
() ->
SessionUtils.doWithoutCommit(
TableColumnMapper.class,
mapper -> mapper.softDeleteColumnsByMetalakeId(metalakeId)),
() ->
SessionUtils.doWithoutCommit(
FilesetMetaMapper.class,
mapper -> mapper.softDeleteFilesetMetasByMetalakeId(metalakeId)),
() ->
SessionUtils.doWithoutCommit(
FilesetVersionMapper.class,
mapper -> mapper.softDeleteFilesetVersionsByMetalakeId(metalakeId)),
() ->
SessionUtils.doWithoutCommit(
TopicMetaMapper.class,
mapper -> mapper.softDeleteTopicMetasByMetalakeId(metalakeId)),
() ->
SessionUtils.doWithoutCommit(
UserRoleRelMapper.class,
mapper -> mapper.softDeleteUserRoleRelByMetalakeId(metalakeId)),
() ->
SessionUtils.doWithoutCommit(
UserMetaMapper.class,
mapper -> mapper.softDeleteUserMetasByMetalakeId(metalakeId)),
() ->
SessionUtils.doWithoutCommit(
GroupRoleRelMapper.class,
mapper -> mapper.softDeleteGroupRoleRelByMetalakeId(metalakeId)),
() ->
SessionUtils.doWithoutCommit(
GroupMetaMapper.class,
mapper -> mapper.softDeleteGroupMetasByMetalakeId(metalakeId)),
() ->
SessionUtils.doWithoutCommit(
RoleMetaMapper.class,
mapper -> mapper.softDeleteRoleMetasByMetalakeId(metalakeId)),
() ->
SessionUtils.doWithoutCommit(
SecurableObjectMapper.class,
mapper -> mapper.softDeleteSecurableObjectsByMetalakeId(metalakeId)),
() ->
SessionUtils.doWithoutCommit(
TagMetaMapper.class,
mapper -> mapper.softDeleteTagMetasByMetalakeId(metalakeId)),
() ->
SessionUtils.doWithoutCommit(
TagMetadataObjectRelMapper.class,
mapper -> mapper.softDeleteTagMetadataObjectRelsByMetalakeId(metalakeId)),
() ->
SessionUtils.doWithoutCommit(
OwnerMetaMapper.class,
mapper -> mapper.softDeleteOwnerRelByMetalakeId(metalakeId)),
() ->
SessionUtils.doWithoutCommit(
ModelVersionAliasRelMapper.class,
mapper -> mapper.softDeleteModelVersionAliasRelsByMetalakeId(metalakeId)),
() ->
SessionUtils.doWithoutCommit(
ModelVersionMetaMapper.class,
mapper -> mapper.softDeleteModelVersionMetasByMetalakeId(metalakeId)),
() ->
SessionUtils.doWithoutCommit(
ModelMetaMapper.class,
mapper -> mapper.softDeleteModelMetasByMetalakeId(metalakeId)));
} else {
List<CatalogEntity> catalogEntities =
CatalogMetaService.getInstance()
.listCatalogsByNamespace(NamespaceUtil.ofCatalog(ident.name()));
if (!catalogEntities.isEmpty()) {
throw new NonEmptyEntityException(
"Entity %s has sub-entities, you should remove sub-entities first", ident);
}
SessionUtils.doMultipleWithCommit(
() ->
SessionUtils.doWithoutCommit(
MetalakeMetaMapper.class,
mapper -> mapper.softDeleteMetalakeMetaByMetalakeId(metalakeId)),
() ->
SessionUtils.doWithoutCommit(
UserRoleRelMapper.class,
mapper -> mapper.softDeleteUserRoleRelByMetalakeId(metalakeId)),
() ->
SessionUtils.doWithoutCommit(
UserMetaMapper.class,
mapper -> mapper.softDeleteUserMetasByMetalakeId(metalakeId)),
() ->
SessionUtils.doWithoutCommit(
GroupRoleRelMapper.class,
mapper -> mapper.softDeleteGroupRoleRelByMetalakeId(metalakeId)),
() ->
SessionUtils.doWithoutCommit(
GroupMetaMapper.class,
mapper -> mapper.softDeleteGroupMetasByMetalakeId(metalakeId)),
() ->
SessionUtils.doWithoutCommit(
RoleMetaMapper.class,
mapper -> mapper.softDeleteRoleMetasByMetalakeId(metalakeId)),
() ->
SessionUtils.doWithoutCommit(
SecurableObjectMapper.class,
mapper -> mapper.softDeleteSecurableObjectsByMetalakeId(metalakeId)),
() ->
SessionUtils.doWithoutCommit(
TagMetaMapper.class,
mapper -> mapper.softDeleteTagMetasByMetalakeId(metalakeId)),
() ->
SessionUtils.doWithoutCommit(
TagMetadataObjectRelMapper.class,
mapper -> mapper.softDeleteTagMetadataObjectRelsByMetalakeId(metalakeId)),
() ->
SessionUtils.doWithoutCommit(
OwnerMetaMapper.class,
mapper -> mapper.softDeleteOwnerRelByMetalakeId(metalakeId)));
}
}
return true;
}