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 9b777f016fd Use database default schema in cluster metadata rebuild
(#39502)
9b777f016fd is described below
commit 9b777f016fd6b89d75a030b855087831aff43383
Author: Haoran Meng <[email protected]>
AuthorDate: Wed Aug 19 10:16:39 2026 +0800
Use database default schema in cluster metadata rebuild (#39502)
---
.../persist/service/ClusterMetaDataManagerPersistService.java | 4 +---
.../persist/service/ClusterMetaDataManagerPersistServiceTest.java | 7 ++++++-
2 files changed, 7 insertions(+), 4 deletions(-)
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterMetaDataManagerPersistService.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterMetaDataManagerPersistService.java
index f5a8653c66d..2e6d9f280af 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterMetaDataManagerPersistService.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterMetaDataManagerPersistService.java
@@ -23,7 +23,6 @@ import
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePo
import org.apache.shardingsphere.infra.exception.ShardingSpherePreconditions;
import
org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericSchemaBuilder;
import
org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericSchemaBuilderMaterial;
-import
org.apache.shardingsphere.database.connector.core.type.DatabaseTypeRegistry;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
@@ -288,8 +287,7 @@ public final class ClusterMetaDataManagerPersistService
implements MetaDataManag
private ShardingSphereDatabase rebuildDatabaseSchemaIndex(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.getIdentifierContext(),
- database.getAllSchemas());
+ reloadMetaDataContexts.getMetaData().getProps(),
database.getDefaultSchemaName(), database.getIdentifierContext(),
database.getAllSchemas());
Collection<ShardingSphereSchema> schemas = new
LinkedList<>(GenericSchemaBuilder.build(database.getProtocolType(),
material).values());
return new ShardingSphereDatabase(database.getName(),
database.getProtocolType(), database.getResourceMetaData(),
database.getRuleMetaData(), schemas,
reloadMetaDataContexts.getMetaData().getProps());
diff --git
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterMetaDataManagerPersistServiceTest.java
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterMetaDataManagerPersistServiceTest.java
index 7d9aa0f2b61..cb8e2840ba0 100644
---
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterMetaDataManagerPersistServiceTest.java
+++
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterMetaDataManagerPersistServiceTest.java
@@ -54,6 +54,7 @@ import java.util.Properties;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyCollection;
+import static org.mockito.ArgumentMatchers.argThat;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
@@ -166,6 +167,7 @@ class ClusterMetaDataManagerPersistServiceTest {
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class,
Answers.RETURNS_DEEP_STUBS);
when(database.getName()).thenReturn("foo_db");
when(database.getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
"MySQL"));
+ when(database.getDefaultSchemaName()).thenReturn("foo_default_schema");
ShardingSphereRule rule = mock(ShardingSphereRule.class);
when(rule.getAttributes()).thenReturn(new RuleAttributes());
when(database.getRuleMetaData().getRules()).thenReturn(Collections.singleton(rule));
@@ -182,6 +184,7 @@ class ClusterMetaDataManagerPersistServiceTest {
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class,
Answers.RETURNS_DEEP_STUBS);
when(database.getName()).thenReturn("foo_db");
when(database.getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
"MySQL"));
+ when(database.getDefaultSchemaName()).thenReturn("foo_default_schema");
ShardingSphereRule rule = mock(ShardingSphereRule.class);
when(rule.getAttributes()).thenReturn(new RuleAttributes());
when(database.getRuleMetaData().getRules()).thenReturn(Collections.singleton(rule));
@@ -209,7 +212,8 @@ class ClusterMetaDataManagerPersistServiceTest {
mockReloadedMetaDataContext();
metaDataManagerPersistService.removeRuleConfigurationItem(database,
ruleConfig);
verify(metaDataPersistFacade.getDatabaseRuleService()).delete("foo_db",
Collections.singleton(ruleConfig));
-
verify(metaDataPersistFacade.getDatabaseMetaDataFacade()).persistReloadDatabaseByUnloadSingleTable(eq("foo_db"),
any(), any());
+
verify(metaDataPersistFacade.getDatabaseMetaDataFacade()).persistReloadDatabaseByUnloadSingleTable(
+ eq("foo_db"), argThat(each ->
each.containsSchema("foo_default_schema")), any());
verify(metaDataPersistFacade.getDatabaseMetaDataFacade(),
never()).persistAlteredTables(eq("foo_db"), any(), any());
}
@@ -271,6 +275,7 @@ class ClusterMetaDataManagerPersistServiceTest {
ShardingSphereDatabase loadedDatabase =
mock(ShardingSphereDatabase.class, Answers.RETURNS_DEEP_STUBS);
when(loadedDatabase.getName()).thenReturn("foo_db");
when(loadedDatabase.getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
"MySQL"));
+
when(loadedDatabase.getDefaultSchemaName()).thenReturn("foo_default_schema");
when(loadedDatabase.getRuleMetaData().getRules()).thenReturn(Collections.singleton(rule));
when(loadedDatabase.getResourceMetaData().getStorageUnits()).thenReturn(new
LinkedHashMap<>());
ShardingSphereMetaData metaData = new
ShardingSphereMetaData(Collections.singleton(loadedDatabase), mock(), mock(),
new ConfigurationProperties(new Properties()));