diff --git a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/CatalogMetaMapper.java b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/CatalogMetaMapper.java index bb4229e5ddd..cfafdbebb32 100644 --- a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/CatalogMetaMapper.java +++ b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/CatalogMetaMapper.java @@ -56,7 +56,8 @@ Long selectCatalogIdByMetalakeIdAndName( @Param("metalakeId") Long metalakeId, @Param("catalogName") String name); @SelectProvider(type = CatalogMetaSQLProviderFactory.class, method = "selectCatalogIdByName") - Long selectCatalogIdByName(@Param("catalogName") String name); + Long selectCatalogIdByName( + @Param("metalakeName") String metalakeName, @Param("catalogName") String name); @SelectProvider( type = CatalogMetaSQLProviderFactory.class, @@ -65,7 +66,8 @@ CatalogPO selectCatalogMetaByMetalakeIdAndName( @Param("metalakeId") Long metalakeId, @Param("catalogName") String name); @SelectProvider(type = CatalogMetaSQLProviderFactory.class, method = "selectCatalogMetaByName") - CatalogPO selectCatalogMetaByName(@Param("catalogName") String catalogName); + CatalogPO selectCatalogMetaByName( + @Param("metalakeName") String metalakeName, @Param("catalogName") String catalogName); @SelectProvider(type = CatalogMetaSQLProviderFactory.class, method = "selectCatalogMetaById") CatalogPO selectCatalogMetaById(@Param("catalogId") Long catalogId); diff --git a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/CatalogMetaSQLProviderFactory.java b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/CatalogMetaSQLProviderFactory.java index 34a191f9016..b32972b6451 100644 --- a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/CatalogMetaSQLProviderFactory.java +++ b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/CatalogMetaSQLProviderFactory.java @@ -65,8 +65,9 @@ public static String listCatalogPOsByCatalogIds(@Param("catalogIds") List return getProvider().listCatalogPOsByCatalogIds(catalogIds); } - public static String selectCatalogIdByName(@Param("catalogName") String name) { - return getProvider().selectCatalogIdByName(name); + public static String selectCatalogIdByName( + @Param("metalakeName") String metalakeName, @Param("catalogName") String catalogName) { + return getProvider().selectCatalogIdByName(metalakeName, catalogName); } public static String selectCatalogIdByMetalakeIdAndName( @@ -79,8 +80,9 @@ public static String selectCatalogMetaByMetalakeIdAndName( return getProvider().selectCatalogMetaByMetalakeIdAndName(metalakeId, name); } - public static String selectCatalogMetaByName(@Param("catalogName") String name) { - return getProvider().selectCatalogMetaByName(name); + public static String selectCatalogMetaByName( + @Param("metalakeName") String metalakeName, @Param("catalogName") String catalogName) { + return getProvider().selectCatalogMetaByName(metalakeName, catalogName); } public static String selectCatalogMetaById(@Param("catalogId") Long catalogId) { diff --git a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/CatalogMetaBaseSQLProvider.java b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/CatalogMetaBaseSQLProvider.java index 09621b7ed03..5d289c18eba 100644 --- a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/CatalogMetaBaseSQLProvider.java +++ b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/CatalogMetaBaseSQLProvider.java @@ -71,13 +71,15 @@ public String listCatalogPOsByCatalogIds(@Param("catalogIds") List catalog + ""; } - public String selectCatalogIdByName(@Param("catalogName") String name) { + public String selectCatalogIdByName( + @Param("metalakeName") String metalakeName, @Param("catalogName") String catalogName) { return "SELECT cm.catalog_id as catalogId FROM " + TABLE_NAME + " cm JOIN " + MetalakeMetaMapper.TABLE_NAME + " mm ON cm.metalake_id = mm.metalake_id" - + " WHERE catalog_name = #{catalogName} AND cm.deleted_at = 0"; + + " WHERE catalog_name = #{catalogName} AND mm.metalake_name = #{metalakeName}" + + " AND cm.deleted_at = 0 AND mm.deleted_at = 0"; } public String selectCatalogIdByMetalakeIdAndName( @@ -99,7 +101,8 @@ public String selectCatalogMetaByMetalakeIdAndName( + " WHERE metalake_id = #{metalakeId} AND catalog_name = #{catalogName} AND deleted_at = 0"; } - public String selectCatalogMetaByName(@Param("catalogName") String name) { + public String selectCatalogMetaByName( + @Param("metalakeName") String metalakeName, @Param("catalogName") String catalogName) { return "SELECT cm.catalog_id as catalogId, cm.catalog_name as catalogName," + " cm.metalake_id as metalakeId, cm.type, cm.provider," + " cm.catalog_comment as catalogComment, cm.properties, cm.audit_info as auditInfo," @@ -110,7 +113,8 @@ public String selectCatalogMetaByName(@Param("catalogName") String name) { + " cm JOIN " + MetalakeMetaMapper.TABLE_NAME + " mm ON cm.metalake_id = mm.metalake_id" - + " WHERE cm.catalog_name = #{catalogName} AND cm.deleted_at = 0"; + + " WHERE cm.catalog_name = #{catalogName} AND mm.metalake_name = #{metalakeName}" + + " AND cm.deleted_at = 0 AND mm.deleted_at = 0"; } public String selectCatalogMetaById(@Param("catalogId") Long catalogId) { diff --git a/core/src/main/java/org/apache/gravitino/storage/relational/service/CatalogMetaService.java b/core/src/main/java/org/apache/gravitino/storage/relational/service/CatalogMetaService.java index 23efe7caf4e..b9b6e7c2d0a 100644 --- a/core/src/main/java/org/apache/gravitino/storage/relational/service/CatalogMetaService.java +++ b/core/src/main/java/org/apache/gravitino/storage/relational/service/CatalogMetaService.java @@ -65,10 +65,11 @@ public static CatalogMetaService getInstance() { private CatalogMetaService() {} - public CatalogPO getCatalogPOByName(String catalogName) { + public CatalogPO getCatalogPOByName(String metalakeName, String catalogName) { CatalogPO catalogPO = SessionUtils.getWithoutCommit( - CatalogMetaMapper.class, mapper -> mapper.selectCatalogMetaByName(catalogName)); + CatalogMetaMapper.class, + mapper -> mapper.selectCatalogMetaByName(metalakeName, catalogName)); if (catalogPO == null) { throw new NoSuchEntityException( @@ -104,10 +105,11 @@ public Long getCatalogIdByMetalakeIdAndName(Long metalakeId, String catalogName) return catalogId; } - public Long getCatalogIdByName(String catalogName) { + public Long getCatalogIdByName(String metalakeName, String catalogName) { Long catalogId = SessionUtils.doWithCommitAndFetchResult( - CatalogMetaMapper.class, mapper -> mapper.selectCatalogIdByName(catalogName)); + CatalogMetaMapper.class, + mapper -> mapper.selectCatalogIdByName(metalakeName, catalogName)); if (catalogId == null) { throw new NoSuchEntityException( @@ -122,7 +124,7 @@ public CatalogEntity getCatalogByIdentifier(NameIdentifier identifier) { NameIdentifierUtil.checkCatalog(identifier); String catalogName = identifier.name(); - CatalogPO catalogPO = getCatalogPOByName(catalogName); + CatalogPO catalogPO = getCatalogPOByName(identifier.namespace().level(0), catalogName); return POConverters.fromCatalogPO(catalogPO, identifier.namespace()); } @@ -167,7 +169,7 @@ public CatalogEntity updateCatalog( String catalogName = identifier.name(); - CatalogPO oldCatalogPO = getCatalogPOByName(catalogName); + CatalogPO oldCatalogPO = getCatalogPOByName(identifier.namespace().level(0), catalogName); CatalogEntity oldCatalogEntity = POConverters.fromCatalogPO(oldCatalogPO, identifier.namespace()); @@ -204,8 +206,9 @@ public CatalogEntity updateCatalog( public boolean deleteCatalog(NameIdentifier identifier, boolean cascade) { NameIdentifierUtil.checkCatalog(identifier); + String metalakeName = identifier.namespace().level(0); String catalogName = identifier.name(); - long catalogId = getCatalogIdByName(catalogName); + long catalogId = getCatalogIdByName(metalakeName, catalogName); if (cascade) { SessionUtils.doMultipleWithCommit( diff --git a/core/src/test/java/org/apache/gravitino/storage/relational/TestJDBCBackend.java b/core/src/test/java/org/apache/gravitino/storage/relational/TestJDBCBackend.java index 1cef092c066..9145a618a2c 100644 --- a/core/src/test/java/org/apache/gravitino/storage/relational/TestJDBCBackend.java +++ b/core/src/test/java/org/apache/gravitino/storage/relational/TestJDBCBackend.java @@ -794,8 +794,13 @@ public void testMetaLifeCycleFromCreationToDeletion() throws IOException { CatalogEntity catalogEntity = backend.get(catalog.nameIdentifier(), Entity.EntityType.CATALOG); assertEquals(catalog, catalogEntity); - assertNotNull(CatalogMetaService.getInstance().getCatalogPOByName(catalog.name())); - assertEquals(catalog.id(), CatalogMetaService.getInstance().getCatalogIdByName(catalog.name())); + assertNotNull( + CatalogMetaService.getInstance() + .getCatalogPOByName(catalogEntity.namespace().level(0), catalog.name())); + assertEquals( + catalog.id(), + CatalogMetaService.getInstance() + .getCatalogIdByName(catalog.namespace().level(0), catalog.name())); UserEntity userEntity = backend.get(user.nameIdentifier(), Entity.EntityType.USER); assertEquals(user, userEntity);