This is an automated email from the ASF dual-hosted git repository.

menghaoranss pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new d0ea2260962 Use database default schema in metadata persist facade 
(#39497)
d0ea2260962 is described below

commit d0ea2260962d856aa290caa0415329d3faba9b30
Author: Haoran Meng <[email protected]>
AuthorDate: Tue Aug 18 14:06:37 2026 +0800

    Use database default schema in metadata persist facade (#39497)
---
 .../metadata/DatabaseMetaDataPersistFacade.java    |  6 +-
 .../DatabaseMetaDataPersistFacadeTest.java         | 94 ++++++++--------------
 2 files changed, 37 insertions(+), 63 deletions(-)

diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/DatabaseMetaDataPersistFacade.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/DatabaseMetaDataPersistFacade.java
index 08a92298998..05bbb42c2d9 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/DatabaseMetaDataPersistFacade.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/DatabaseMetaDataPersistFacade.java
@@ -18,7 +18,6 @@
 package org.apache.shardingsphere.mode.metadata.persist.metadata;
 
 import lombok.Getter;
-import 
org.apache.shardingsphere.database.connector.core.type.DatabaseTypeRegistry;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericSchemaBuilder;
@@ -105,7 +104,7 @@ public final class DatabaseMetaDataPersistFacade {
     public void unregisterStorageUnits(final String databaseName, final 
MetaDataContexts reloadMetaDataContexts) {
         ShardingSphereDatabase database = 
reloadMetaDataContexts.getMetaData().getDatabase(databaseName);
         GenericSchemaBuilderMaterial material = new 
GenericSchemaBuilderMaterial(database.getResourceMetaData().getStorageUnits(),
-                database.getRuleMetaData().getRules(), 
reloadMetaDataContexts.getMetaData().getProps(), new 
DatabaseTypeRegistry(database.getProtocolType()).getDefaultSchemaName(databaseName),
+                database.getRuleMetaData().getRules(), 
reloadMetaDataContexts.getMetaData().getProps(), 
database.getDefaultSchemaName(),
                 database.getIdentifierContext(), database.getAllSchemas());
         try {
             Map<String, ShardingSphereSchema> schemas = 
GenericSchemaBuilder.build(database.getProtocolType(), material);
@@ -129,8 +128,7 @@ public final class DatabaseMetaDataPersistFacade {
     public Map<String, Collection<ShardingSphereTable>> 
persistAlteredTables(final String databaseName, final MetaDataContexts 
reloadMetaDataContexts, final Collection<String> needReloadTables) {
         ShardingSphereDatabase database = 
reloadMetaDataContexts.getMetaData().getDatabase(databaseName);
         GenericSchemaBuilderMaterial material = new 
GenericSchemaBuilderMaterial(database.getResourceMetaData().getStorageUnits(),
-                database.getRuleMetaData().getRules(), 
reloadMetaDataContexts.getMetaData().getProps(),
-                new 
DatabaseTypeRegistry(database.getProtocolType()).getDefaultSchemaName(databaseName),
 database.getIdentifierContext(), database.getAllSchemas());
+                database.getRuleMetaData().getRules(), 
reloadMetaDataContexts.getMetaData().getProps(), 
database.getDefaultSchemaName(), database.getIdentifierContext(), 
database.getAllSchemas());
         try {
             Map<String, ShardingSphereSchema> schemas = 
GenericSchemaBuilder.build(needReloadTables, database.getProtocolType(), 
material);
             Map<String, Collection<ShardingSphereTable>> result = new 
HashMap<>(schemas.size(), 1F);
diff --git 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/metadata/DatabaseMetaDataPersistFacadeTest.java
 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/metadata/DatabaseMetaDataPersistFacadeTest.java
index 41bbe0980c4..36b4c442e08 100644
--- 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/metadata/DatabaseMetaDataPersistFacadeTest.java
+++ 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/metadata/DatabaseMetaDataPersistFacadeTest.java
@@ -17,11 +17,6 @@
 
 package org.apache.shardingsphere.mode.metadata.persist.metadata;
 
-import 
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
-import 
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.IdentifierPatternType;
-import 
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DefaultSchemaOption;
-import 
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaSemantics;
-import 
org.apache.shardingsphere.database.connector.core.spi.DatabaseTypedSPILoader;
 import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import 
org.apache.shardingsphere.infra.datasource.pool.props.creator.DataSourcePoolPropertiesCreator;
@@ -50,7 +45,6 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.Mock;
-import org.mockito.MockedStatic;
 import org.mockito.internal.configuration.plugins.Plugins;
 
 import java.sql.SQLException;
@@ -67,10 +61,12 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyCollection;
 import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.argThat;
 import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.mockStatic;
 import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
@@ -155,63 +151,50 @@ class DatabaseMetaDataPersistFacadeTest {
     
     @Test
     void assertUnregisterStorageUnitsDropsTables() throws SQLException {
-        DialectDatabaseMetaData dialectDatabaseMetaData = 
createDialectDatabaseMetaData();
-        try (MockedStatic<DatabaseTypedSPILoader> mocked = 
mockStatic(DatabaseTypedSPILoader.class)) {
-            mocked.when(() -> 
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, 
databaseType)).thenReturn(dialectDatabaseMetaData);
-            ShardingSphereSchema schema = new 
ShardingSphereSchema("foo_schema", mock(DatabaseType.class));
-            ShardingSphereDatabase database = createDatabase("foo_db", 
Collections.singleton(schema));
-            ShardingSphereTable toBeDroppedTable = new 
ShardingSphereTable("foo_table", Collections.emptyList(), 
Collections.emptyList(), Collections.emptyList());
-            when(GenericSchemaBuilder.build(eq(databaseType), 
any(GenericSchemaBuilderMaterial.class))).thenReturn(Collections.singletonMap("foo_schema",
 schema));
-            when(GenericSchemaManager.getToBeDroppedTables(schema, 
schema)).thenReturn(Collections.singleton(toBeDroppedTable));
-            databaseMetaDataFacade.unregisterStorageUnits("foo_db", new 
MetaDataContexts(createMetaData(database), mock()));
-            verify(tableMetaDataService).drop("foo_db", "foo_schema", 
"foo_table");
-        }
+        ShardingSphereSchema schema = new ShardingSphereSchema("foo_schema", 
mock(DatabaseType.class));
+        ShardingSphereDatabase database = spy(createDatabase("foo_db", 
Collections.singleton(schema)));
+        doReturn("foo_default_schema").when(database).getDefaultSchemaName();
+        ShardingSphereTable toBeDroppedTable = new 
ShardingSphereTable("foo_table", Collections.emptyList(), 
Collections.emptyList(), Collections.emptyList());
+        when(GenericSchemaBuilder.build(eq(databaseType), argThat(each -> 
"foo_default_schema".equals(each.getDefaultSchemaName()))))
+                .thenReturn(Collections.singletonMap("foo_schema", schema));
+        when(GenericSchemaManager.getToBeDroppedTables(schema, 
schema)).thenReturn(Collections.singleton(toBeDroppedTable));
+        databaseMetaDataFacade.unregisterStorageUnits("foo_db", new 
MetaDataContexts(createMetaData(database), mock()));
+        verify(tableMetaDataService).drop("foo_db", "foo_schema", "foo_table");
     }
     
     @Test
     void assertUnregisterStorageUnitsWhenLoadFailed() throws SQLException {
-        DialectDatabaseMetaData dialectDatabaseMetaData = 
createDialectDatabaseMetaData();
-        try (MockedStatic<DatabaseTypedSPILoader> mocked = 
mockStatic(DatabaseTypedSPILoader.class)) {
-            mocked.when(() -> 
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, 
databaseType)).thenReturn(dialectDatabaseMetaData);
-            ShardingSphereDatabase database = createDatabase("foo_db", 
Collections.singleton(new ShardingSphereSchema("foo_schema", 
mock(DatabaseType.class))));
-            MetaDataContexts reloadMetaDataContexts = new 
MetaDataContexts(createMetaData(database), mock());
-            when(GenericSchemaBuilder.build(eq(databaseType), 
any(GenericSchemaBuilderMaterial.class))).thenThrow(SQLException.class);
-            assertThrows(LoadTableMetaDataFailedException.class, () -> 
databaseMetaDataFacade.unregisterStorageUnits("foo_db", 
reloadMetaDataContexts));
-        }
+        ShardingSphereDatabase database = createDatabase("foo_db", 
Collections.singleton(new ShardingSphereSchema("foo_schema", 
mock(DatabaseType.class))));
+        MetaDataContexts reloadMetaDataContexts = new 
MetaDataContexts(createMetaData(database), mock());
+        when(GenericSchemaBuilder.build(eq(databaseType), 
any(GenericSchemaBuilderMaterial.class))).thenThrow(SQLException.class);
+        assertThrows(LoadTableMetaDataFailedException.class, () -> 
databaseMetaDataFacade.unregisterStorageUnits("foo_db", 
reloadMetaDataContexts));
     }
     
     @Test
     void assertPersistAlteredTables() throws SQLException {
-        DialectDatabaseMetaData dialectDatabaseMetaData = 
createDialectDatabaseMetaData();
-        try (MockedStatic<DatabaseTypedSPILoader> mocked = 
mockStatic(DatabaseTypedSPILoader.class)) {
-            mocked.when(() -> 
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, 
databaseType)).thenReturn(dialectDatabaseMetaData);
-            ShardingSphereSchema existedSchema = new 
ShardingSphereSchema("foo_schema", mock(DatabaseType.class));
-            ShardingSphereDatabase database = createDatabase("foo_db", 
Collections.singleton(existedSchema));
-            MetaDataContexts reloadMetaDataContexts = new 
MetaDataContexts(createMetaData(database), mock());
-            ShardingSphereSchema schema = new 
ShardingSphereSchema("foo_schema", mock(DatabaseType.class));
-            ShardingSphereTable addedTable = new 
ShardingSphereTable("foo_table", Collections.emptyList(), 
Collections.emptyList(), Collections.emptyList());
-            Collection<ShardingSphereTable> expectedTables = 
Collections.singletonList(addedTable);
-            Collection<String> needReloadTables = 
Collections.singleton("foo_table");
-            Map<String, ShardingSphereSchema> schemas = 
Collections.singletonMap("foo_schema", schema);
-            when(GenericSchemaBuilder.build(eq(needReloadTables), 
eq(databaseType), any(GenericSchemaBuilderMaterial.class))).thenReturn(schemas);
-            when(GenericSchemaManager.getToBeAddedTables(schema, 
existedSchema)).thenReturn(expectedTables);
-            Map<String, Collection<ShardingSphereTable>> actualTables = 
databaseMetaDataFacade.persistAlteredTables("foo_db", reloadMetaDataContexts, 
needReloadTables);
-            assertThat(actualTables.get("foo_schema"), is(expectedTables));
-            verify(tableMetaDataService).persist("foo_db", "foo_schema", 
expectedTables);
-        }
+        ShardingSphereSchema existedSchema = new 
ShardingSphereSchema("foo_schema", mock(DatabaseType.class));
+        ShardingSphereDatabase database = spy(createDatabase("foo_db", 
Collections.singleton(existedSchema)));
+        doReturn("foo_default_schema").when(database).getDefaultSchemaName();
+        MetaDataContexts reloadMetaDataContexts = new 
MetaDataContexts(createMetaData(database), mock());
+        ShardingSphereSchema schema = new ShardingSphereSchema("foo_schema", 
mock(DatabaseType.class));
+        ShardingSphereTable addedTable = new ShardingSphereTable("foo_table", 
Collections.emptyList(), Collections.emptyList(), Collections.emptyList());
+        Collection<ShardingSphereTable> expectedTables = 
Collections.singletonList(addedTable);
+        Collection<String> needReloadTables = 
Collections.singleton("foo_table");
+        Map<String, ShardingSphereSchema> schemas = 
Collections.singletonMap("foo_schema", schema);
+        when(GenericSchemaBuilder.build(eq(needReloadTables), 
eq(databaseType), argThat(each -> 
"foo_default_schema".equals(each.getDefaultSchemaName())))).thenReturn(schemas);
+        when(GenericSchemaManager.getToBeAddedTables(schema, 
existedSchema)).thenReturn(expectedTables);
+        Map<String, Collection<ShardingSphereTable>> actualTables = 
databaseMetaDataFacade.persistAlteredTables("foo_db", reloadMetaDataContexts, 
needReloadTables);
+        assertThat(actualTables.get("foo_schema"), is(expectedTables));
+        verify(tableMetaDataService).persist("foo_db", "foo_schema", 
expectedTables);
     }
     
     @Test
     void assertPersistAlteredTablesWhenLoadFailed() throws SQLException {
-        DialectDatabaseMetaData dialectDatabaseMetaData = 
createDialectDatabaseMetaData();
-        try (MockedStatic<DatabaseTypedSPILoader> mocked = 
mockStatic(DatabaseTypedSPILoader.class)) {
-            mocked.when(() -> 
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, 
databaseType)).thenReturn(dialectDatabaseMetaData);
-            ShardingSphereDatabase database = createDatabase("foo_db", 
Collections.singleton(new ShardingSphereSchema("foo_schema", 
mock(DatabaseType.class))));
-            MetaDataContexts reloadMetaDataContexts = new 
MetaDataContexts(createMetaData(database), mock());
-            Collection<String> needReloadTables = 
Collections.singleton("foo_table");
-            when(GenericSchemaBuilder.build(eq(needReloadTables), 
eq(databaseType), 
any(GenericSchemaBuilderMaterial.class))).thenThrow(SQLException.class);
-            assertThrows(LoadTableMetaDataFailedException.class, () -> 
databaseMetaDataFacade.persistAlteredTables("foo_db", reloadMetaDataContexts, 
needReloadTables));
-        }
+        ShardingSphereDatabase database = createDatabase("foo_db", 
Collections.singleton(new ShardingSphereSchema("foo_schema", 
mock(DatabaseType.class))));
+        MetaDataContexts reloadMetaDataContexts = new 
MetaDataContexts(createMetaData(database), mock());
+        Collection<String> needReloadTables = 
Collections.singleton("foo_table");
+        when(GenericSchemaBuilder.build(eq(needReloadTables), 
eq(databaseType), 
any(GenericSchemaBuilderMaterial.class))).thenThrow(SQLException.class);
+        assertThrows(LoadTableMetaDataFailedException.class, () -> 
databaseMetaDataFacade.persistAlteredTables("foo_db", reloadMetaDataContexts, 
needReloadTables));
     }
     
     @Test
@@ -229,13 +212,6 @@ class DatabaseMetaDataPersistFacadeTest {
                 new ResourceMetaData(Collections.emptyMap(), 
Collections.emptyMap()), new RuleMetaData(Collections.emptyList()), schemas, 
new ConfigurationProperties(new Properties()));
     }
     
-    private DialectDatabaseMetaData createDialectDatabaseMetaData() {
-        DialectDatabaseMetaData result = mock(DialectDatabaseMetaData.class);
-        when(result.getSchemaOption()).thenReturn(new 
DefaultSchemaOption(false, null, DialectSchemaSemantics.NATIVE_SCHEMA));
-        
when(result.getIdentifierPatternType()).thenReturn(IdentifierPatternType.KEEP_ORIGIN);
-        return result;
-    }
-    
     private ShardingSphereMetaData createMetaData(final ShardingSphereDatabase 
database) {
         return new ShardingSphereMetaData(Collections.singleton(database),
                 new ResourceMetaData(Collections.emptyMap(), 
Collections.emptyMap()), new RuleMetaData(Collections.emptyList()), new 
ConfigurationProperties(new Properties()));

Reply via email to