Skip to content

Commit 5a624d2

Browse files
committed
refactor(core): Optimize Catalog storage queries using JOIN for JDBC backend
1 parent 8ac10ce commit 5a624d2

File tree

4 files changed

+27
-4
lines changed

4 files changed

+27
-4
lines changed

core/src/main/java/org/apache/gravitino/storage/relational/mapper/CatalogMetaMapper.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@
3838
public interface CatalogMetaMapper {
3939
String TABLE_NAME = "catalog_meta";
4040

41+
@SelectProvider(
42+
type = CatalogMetaSQLProviderFactory.class,
43+
method = "listCatalogPOsByMetalakeName")
44+
List<CatalogPO> listCatalogPOsByMetalakeName(@Param("metalakeName") String metalakeName);
45+
4146
@SelectProvider(type = CatalogMetaSQLProviderFactory.class, method = "listCatalogPOsByMetalakeId")
4247
List<CatalogPO> listCatalogPOsByMetalakeId(@Param("metalakeId") Long metalakeId);
4348

core/src/main/java/org/apache/gravitino/storage/relational/mapper/CatalogMetaSQLProviderFactory.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@ static class CatalogMetaMySQLProvider extends CatalogMetaBaseSQLProvider {}
5353

5454
static class CatalogMetaH2Provider extends CatalogMetaBaseSQLProvider {}
5555

56+
public static String listCatalogPOsByMetalakeName(@Param("metalakeName") String metalakeName) {
57+
return getProvider().listCatalogPOsByMetalakeName(metalakeName);
58+
}
59+
5660
public static String listCatalogPOsByMetalakeId(@Param("metalakeId") Long metalakeId) {
5761
return getProvider().listCatalogPOsByMetalakeId(metalakeId);
5862
}

core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/CatalogMetaBaseSQLProvider.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,26 @@
2222
import static org.apache.gravitino.storage.relational.mapper.CatalogMetaMapper.TABLE_NAME;
2323

2424
import java.util.List;
25+
import org.apache.gravitino.storage.relational.mapper.MetalakeMetaMapper;
2526
import org.apache.gravitino.storage.relational.po.CatalogPO;
2627
import org.apache.ibatis.annotations.Param;
2728

2829
public class CatalogMetaBaseSQLProvider {
30+
public String listCatalogPOsByMetalakeName(@Param("metalakeName") String metalakeName) {
31+
return "SELECT cm.catalog_id as catalogId, cm.catalog_name as catalogName,"
32+
+ " cm.metalake_id as metalakeId, cm.type, cm.provider,"
33+
+ " cm.catalog_comment as catalogComment, cm.properties, cm.audit_info as auditInfo,"
34+
+ " cm.current_version as currentVersion, cm.last_version as lastVersion,"
35+
+ " cm.deleted_at as deletedAt"
36+
+ " FROM "
37+
+ TABLE_NAME
38+
+ " cm JOIN "
39+
+ MetalakeMetaMapper.TABLE_NAME
40+
+ " mm ON cm.metalake_id = mm.metalake_id"
41+
+ " WHERE mm.metalake_name = #{metalakeName}"
42+
+ " AND mm.deleted_at = 0 AND cm.deleted_at = 0";
43+
}
44+
2945
public String listCatalogPOsByMetalakeId(@Param("metalakeId") Long metalakeId) {
3046
return "SELECT catalog_id as catalogId, catalog_name as catalogName,"
3147
+ " metalake_id as metalakeId, type, provider,"

core/src/main/java/org/apache/gravitino/storage/relational/service/CatalogMetaService.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -119,12 +119,10 @@ public CatalogEntity getCatalogByIdentifier(NameIdentifier identifier) {
119119

120120
public List<CatalogEntity> listCatalogsByNamespace(Namespace namespace) {
121121
NamespaceUtil.checkCatalog(namespace);
122-
123-
Long metalakeId = CommonMetaService.getInstance().getParentEntityIdByNamespace(namespace);
124-
125122
List<CatalogPO> catalogPOS =
126123
SessionUtils.getWithoutCommit(
127-
CatalogMetaMapper.class, mapper -> mapper.listCatalogPOsByMetalakeId(metalakeId));
124+
CatalogMetaMapper.class,
125+
mapper -> mapper.listCatalogPOsByMetalakeName(namespace.level(0)));
128126

129127
return POConverters.fromCatalogPOs(catalogPOS, namespace);
130128
}

0 commit comments

Comments
 (0)