This is an automated email from the ASF dual-hosted git repository. zhangliang 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 d74313f48da Refactor MetaDataManagerPersistService (#34572) d74313f48da is described below commit d74313f48dac881849934c5442af14a50811dfc2 Author: Liang Zhang <zhangli...@apache.org> AuthorDate: Thu Feb 6 17:38:47 2025 +0800 Refactor MetaDataManagerPersistService (#34572) * Refactor MetaDataManagerPersistService * Refactor MetaDataManagerPersistService * Refactor MetaDataManagerPersistService * Refactor MetaDataManagerPersistService * Refactor MetaDataManagerPersistService * Refactor MetaDataManagerPersistService * Refactor MetaDataManagerPersistService * Refactor MetaDataManagerPersistService * Refactor MetaDataManagerPersistService * Refactor MetaDataManagerPersistService * Refactor MetaDataManagerPersistService * Refactor MetaDataManagerPersistService * Refactor MetaDataManagerPersistService * Refactor MetaDataManagerPersistService * Refactor MetaDataManagerPersistService * Refactor MetaDataManagerPersistService * Refactor MetaDataManagerPersistService --- .../CreateBroadcastTableRuleExecutorTest.java | 8 +- .../update/DropBroadcastTableRuleExecutorTest.java | 3 +- .../update/AlterEncryptRuleExecutorTest.java | 10 +- .../update/CreateEncryptRuleExecutorTest.java | 4 +- .../update/DropEncryptRuleExecutorTest.java | 8 +- .../handler/update/AlterMaskRuleExecutorTest.java | 6 +- .../handler/update/CreateMaskRuleExecutorTest.java | 6 +- .../handler/update/DropMaskRuleExecutorTest.java | 8 +- .../database/type/AlterDatabaseRuleOperator.java | 4 +- .../database/type/CreateDatabaseRuleOperator.java | 2 +- .../database/type/DropDatabaseRuleOperator.java | 6 +- .../rdl/resource/AlterStorageUnitExecutor.java | 2 +- .../resource/UnregisterStorageUnitExecutor.java | 2 +- .../UnregisterStorageUnitExecutorTest.java | 6 +- .../update/LoadSingleTableExecutorTest.java | 4 +- ...tDefaultSingleTableStorageUnitExecutorTest.java | 12 +-- .../type/AlterViewFederationMetaDataRefresher.java | 2 +- .../CreateViewFederationMetaDataRefresher.java | 2 +- .../type/DropViewFederationMetaDataRefresher.java | 2 +- .../index/AlterIndexPushDownMetaDataRefresher.java | 2 +- .../CreateIndexPushDownMetaDataRefresher.java | 2 +- .../index/DropIndexPushDownMetaDataRefresher.java | 3 +- .../AlterSchemaPushDownMetaDataRefresher.java | 2 +- .../CreateSchemaPushDownMetaDataRefresher.java | 2 +- .../DropSchemaPushDownMetaDataRefresher.java | 2 +- .../table/AlterTablePushDownMetaDataRefresher.java | 2 +- .../CreateTablePushDownMetaDataRefresher.java | 4 +- .../table/DropTablePushDownMetaDataRefresher.java | 4 +- .../RenameTablePushDownMetaDataRefresher.java | 2 +- .../view/AlterViewPushDownMetaDataRefresher.java | 2 +- .../view/CreateViewPushDownMetaDataRefresher.java | 2 +- .../view/DropViewPushDownMetaDataRefresher.java | 2 +- .../service/MetaDataManagerPersistService.java | 53 ++++++----- .../ClusterMetaDataManagerPersistService.java | 87 ++++++++--------- .../ClusterMetaDataManagerPersistServiceTest.java | 31 +++--- .../StandaloneMetaDataManagerPersistService.java | 105 ++++++++++----------- ...tandaloneMetaDataManagerPersistServiceTest.java | 30 +++--- .../database/DropDatabaseBackendHandler.java | 5 +- .../YamlDatabaseConfigurationImportExecutor.java | 6 +- 39 files changed, 226 insertions(+), 219 deletions(-) diff --git a/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/CreateBroadcastTableRuleExecutorTest.java b/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/CreateBroadcastTableRuleExecutorTest.java index ae57e0e4577..f3636ae0ccc 100644 --- a/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/CreateBroadcastTableRuleExecutorTest.java +++ b/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/CreateBroadcastTableRuleExecutorTest.java @@ -37,7 +37,7 @@ import java.util.Collections; import java.util.HashSet; import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.RETURNS_DEEP_STUBS; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; @@ -72,7 +72,7 @@ class CreateBroadcastTableRuleExecutorTest { ContextManager contextManager = mockContextManager(database, rule); new DistSQLUpdateExecuteEngine(sqlStatement, "foo_db", contextManager).executeUpdate(); MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); - verify(metaDataManagerPersistService).alterRuleConfiguration(eq("foo_db"), + verify(metaDataManagerPersistService).alterRuleConfiguration(any(), ArgumentMatchers.<BroadcastRuleConfiguration>argThat(x -> x.getTables().equals(new HashSet<>(Arrays.asList("foo_tbl", "bar_tbl"))))); } @@ -85,7 +85,7 @@ class CreateBroadcastTableRuleExecutorTest { ContextManager contextManager = mockContextManager(database, rule); new DistSQLUpdateExecuteEngine(sqlStatement, "foo_db", contextManager).executeUpdate(); MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); - verify(metaDataManagerPersistService).alterRuleConfiguration(eq("foo_db"), + verify(metaDataManagerPersistService).alterRuleConfiguration(any(), ArgumentMatchers.<BroadcastRuleConfiguration>argThat(x -> x.getTables().equals(new HashSet<>(Arrays.asList("foo_tbl", "bar_tbl"))))); } @@ -96,7 +96,7 @@ class CreateBroadcastTableRuleExecutorTest { ContextManager contextManager = mockContextManager(database, null); new DistSQLUpdateExecuteEngine(sqlStatement, "foo_db", contextManager).executeUpdate(); MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); - verify(metaDataManagerPersistService).alterRuleConfiguration(eq("foo_db"), + verify(metaDataManagerPersistService).alterRuleConfiguration(any(), ArgumentMatchers.<BroadcastRuleConfiguration>argThat(x -> x.getTables().equals(new HashSet<>(Arrays.asList("foo_tbl", "bar_tbl"))))); } diff --git a/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/DropBroadcastTableRuleExecutorTest.java b/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/DropBroadcastTableRuleExecutorTest.java index c8ce8ab05a4..6dc737f322b 100644 --- a/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/DropBroadcastTableRuleExecutorTest.java +++ b/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/update/DropBroadcastTableRuleExecutorTest.java @@ -52,12 +52,13 @@ class DropBroadcastTableRuleExecutorTest { void assertExecuteUpdate() throws SQLException { DropBroadcastTableRuleStatement sqlStatement = new DropBroadcastTableRuleStatement(true, new ArrayList<>(Arrays.asList("foo_tbl", "bar_tbl"))); ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS); + when(database.getName()).thenReturn("foo_db"); BroadcastRule rule = mock(BroadcastRule.class, RETURNS_DEEP_STUBS); when(rule.getConfiguration().getTables()).thenReturn(Collections.singleton("foo_tbl")); ContextManager contextManager = mockContextManager(database, rule); new DistSQLUpdateExecuteEngine(sqlStatement, "foo_db", contextManager).executeUpdate(); MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); - verify(metaDataManagerPersistService).removeRuleConfiguration("foo_db", "broadcast"); + verify(metaDataManagerPersistService).removeRuleConfiguration(database, "broadcast"); } private ContextManager mockContextManager(final ShardingSphereDatabase database, final BroadcastRule rule) { diff --git a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleExecutorTest.java b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleExecutorTest.java index 1580fd1b48e..c9d63d14b53 100644 --- a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleExecutorTest.java +++ b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleExecutorTest.java @@ -44,7 +44,7 @@ import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.RETURNS_DEEP_STUBS; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -90,8 +90,8 @@ class AlterEncryptRuleExecutorTest { ContextManager contextManager = mockContextManager(rule); MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); new DistSQLUpdateExecuteEngine(createSQLStatementWithAssistQueryAndLikeColumns(), "foo_db", contextManager).executeUpdate(); - metaDataManagerPersistService.removeRuleConfigurationItem(eq("foo_db"), ArgumentMatchers.argThat(this::assertToBeDroppedRuleConfiguration)); - metaDataManagerPersistService.alterRuleConfiguration(eq("foo_db"), ArgumentMatchers.argThat(this::assertToBeAlteredRuleConfiguration)); + metaDataManagerPersistService.removeRuleConfigurationItem(any(), ArgumentMatchers.argThat(this::assertToBeDroppedRuleConfiguration)); + metaDataManagerPersistService.alterRuleConfiguration(any(), ArgumentMatchers.argThat(this::assertToBeAlteredRuleConfiguration)); } @Test @@ -102,8 +102,8 @@ class AlterEncryptRuleExecutorTest { ContextManager contextManager = mockContextManager(rule); new DistSQLUpdateExecuteEngine(createSQLStatementWithoutAssistQueryAndLikeColumns(), "foo_db", contextManager).executeUpdate(); MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); - metaDataManagerPersistService.removeRuleConfigurationItem(eq("foo_db"), ArgumentMatchers.argThat(this::assertToBeDroppedRuleConfiguration)); - metaDataManagerPersistService.alterRuleConfiguration(eq("foo_db"), ArgumentMatchers.argThat(this::assertToBeAlteredRuleConfiguration)); + metaDataManagerPersistService.removeRuleConfigurationItem(any(), ArgumentMatchers.argThat(this::assertToBeDroppedRuleConfiguration)); + metaDataManagerPersistService.alterRuleConfiguration(any(), ArgumentMatchers.argThat(this::assertToBeAlteredRuleConfiguration)); } private ContextManager mockContextManager(final EncryptRule rule) { diff --git a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleExecutorTest.java b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleExecutorTest.java index 417f66a712f..f846b784cc1 100644 --- a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleExecutorTest.java +++ b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleExecutorTest.java @@ -48,7 +48,7 @@ import java.util.Properties; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.RETURNS_DEEP_STUBS; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -104,7 +104,7 @@ class CreateEncryptRuleExecutorTest { ContextManager contextManager = mockContextManager(rule); new DistSQLUpdateExecuteEngine(sqlStatement, "foo_db", contextManager).executeUpdate(); MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); - metaDataManagerPersistService.alterRuleConfiguration(eq("foo_db"), ArgumentMatchers.argThat(this::assertIfNotExistsRuleConfiguration)); + metaDataManagerPersistService.alterRuleConfiguration(any(), ArgumentMatchers.argThat(this::assertIfNotExistsRuleConfiguration)); } private CreateEncryptRuleStatement createAESEncryptRuleSQLStatement(final boolean ifNotExists) { diff --git a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutorTest.java b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutorTest.java index 981a1a9ea33..8be14c436e4 100644 --- a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutorTest.java +++ b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutorTest.java @@ -45,8 +45,8 @@ import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.RETURNS_DEEP_STUBS; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -69,7 +69,7 @@ class DropEncryptRuleExecutorTest { ContextManager contextManager = mockContextManager(rule); new DistSQLUpdateExecuteEngine(createSQLStatement("T_ENCRYPT"), "foo_db", contextManager).executeUpdate(); MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); - metaDataManagerPersistService.alterRuleConfiguration(eq("foo_db"), ArgumentMatchers.argThat(this::assertRuleConfiguration)); + metaDataManagerPersistService.alterRuleConfiguration(any(), ArgumentMatchers.argThat(this::assertRuleConfiguration)); } private boolean assertRuleConfiguration(final EncryptRuleConfiguration actual) { @@ -87,7 +87,7 @@ class DropEncryptRuleExecutorTest { ContextManager contextManager = mockContextManager(rule); new DistSQLUpdateExecuteEngine(createSQLStatement("T_ENCRYPT"), "foo_db", contextManager).executeUpdate(); MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); - metaDataManagerPersistService.alterRuleConfiguration(eq("foo_db"), ArgumentMatchers.argThat(this::assertRuleConfigurationWithoutEncryptors)); + metaDataManagerPersistService.alterRuleConfiguration(any(), ArgumentMatchers.argThat(this::assertRuleConfigurationWithoutEncryptors)); } private boolean assertRuleConfigurationWithoutEncryptors(final EncryptRuleConfiguration actual) { @@ -105,7 +105,7 @@ class DropEncryptRuleExecutorTest { ContextManager contextManager = mockContextManager(rule); new DistSQLUpdateExecuteEngine(statement, "foo_db", contextManager).executeUpdate(); MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); - metaDataManagerPersistService.alterRuleConfiguration(eq("foo_db"), ArgumentMatchers.argThat(this::assertRuleConfigurationWithoutEncryptors)); + metaDataManagerPersistService.alterRuleConfiguration(any(), ArgumentMatchers.argThat(this::assertRuleConfigurationWithoutEncryptors)); } private DropEncryptRuleStatement createSQLStatement(final String tableName) { diff --git a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/AlterMaskRuleExecutorTest.java b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/AlterMaskRuleExecutorTest.java index 36d1068dcde..c73c7e27f44 100644 --- a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/AlterMaskRuleExecutorTest.java +++ b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/AlterMaskRuleExecutorTest.java @@ -43,7 +43,7 @@ import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.RETURNS_DEEP_STUBS; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -68,8 +68,8 @@ class AlterMaskRuleExecutorTest { ContextManager contextManager = mockContextManager(rule); new DistSQLUpdateExecuteEngine(sqlStatement, "foo_db", contextManager).executeUpdate(); MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); - metaDataManagerPersistService.removeRuleConfigurationItem(eq("foo_db"), ArgumentMatchers.argThat(this::assertToBeDroppedRuleConfiguration)); - metaDataManagerPersistService.alterRuleConfiguration(eq("foo_db"), ArgumentMatchers.argThat(this::assertToBeAlteredRuleConfiguration)); + metaDataManagerPersistService.removeRuleConfigurationItem(any(), ArgumentMatchers.argThat(this::assertToBeDroppedRuleConfiguration)); + metaDataManagerPersistService.alterRuleConfiguration(any(), ArgumentMatchers.argThat(this::assertToBeAlteredRuleConfiguration)); } private boolean assertToBeDroppedRuleConfiguration(final MaskRuleConfiguration actual) { diff --git a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/CreateMaskRuleExecutorTest.java b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/CreateMaskRuleExecutorTest.java index 950c812c67b..9da63cc2e40 100644 --- a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/CreateMaskRuleExecutorTest.java +++ b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/CreateMaskRuleExecutorTest.java @@ -43,7 +43,7 @@ import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.RETURNS_DEEP_STUBS; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -66,7 +66,7 @@ class CreateMaskRuleExecutorTest { ContextManager contextManager = mockContextManager(rule); new DistSQLUpdateExecuteEngine(sqlStatement, "foo_db", contextManager).executeUpdate(); MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); - metaDataManagerPersistService.alterRuleConfiguration(eq("foo_db"), ArgumentMatchers.argThat(this::assertRuleConfiguration)); + metaDataManagerPersistService.alterRuleConfiguration(any(), ArgumentMatchers.argThat(this::assertRuleConfiguration)); } @Test @@ -78,7 +78,7 @@ class CreateMaskRuleExecutorTest { ContextManager contextManager = mockContextManager(rule); new DistSQLUpdateExecuteEngine(sqlStatement, "foo_db", contextManager).executeUpdate(); MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); - metaDataManagerPersistService.alterRuleConfiguration(eq("foo_db"), ArgumentMatchers.argThat(this::assertRuleConfiguration)); + metaDataManagerPersistService.alterRuleConfiguration(any(), ArgumentMatchers.argThat(this::assertRuleConfiguration)); } private CreateMaskRuleStatement createSQLStatement(final boolean ifNotExists, final String algorithmType) { diff --git a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/DropMaskRuleExecutorTest.java b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/DropMaskRuleExecutorTest.java index daa0b18fd59..dde951ef799 100644 --- a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/DropMaskRuleExecutorTest.java +++ b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/DropMaskRuleExecutorTest.java @@ -39,7 +39,7 @@ import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.RETURNS_DEEP_STUBS; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -61,7 +61,7 @@ class DropMaskRuleExecutorTest { ContextManager contextManager = mockContextManager(rule); new DistSQLUpdateExecuteEngine(createSQLStatement(false, "T_MASK"), "foo_db", contextManager).executeUpdate(); MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); - metaDataManagerPersistService.alterRuleConfiguration(eq("foo_db"), ArgumentMatchers.argThat(this::assertRuleConfigurationWithoutIfExists)); + metaDataManagerPersistService.alterRuleConfiguration(any(), ArgumentMatchers.argThat(this::assertRuleConfigurationWithoutIfExists)); } private boolean assertRuleConfigurationWithoutIfExists(final MaskRuleConfiguration actual) { @@ -79,8 +79,8 @@ class DropMaskRuleExecutorTest { ContextManager contextManager = mockContextManager(rule); new DistSQLUpdateExecuteEngine(createSQLStatement(true, "T_USER"), "foo_db", contextManager).executeUpdate(); MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); - metaDataManagerPersistService.alterRuleConfiguration(eq("foo_db"), ArgumentMatchers.argThat(this::assertRuleConfigurationWithoutIfExists)); - metaDataManagerPersistService.alterRuleConfiguration(eq("foo_db"), ArgumentMatchers.argThat(this::assertRuleConfigurationWithIfExists)); + metaDataManagerPersistService.alterRuleConfiguration(any(), ArgumentMatchers.argThat(this::assertRuleConfigurationWithoutIfExists)); + metaDataManagerPersistService.alterRuleConfiguration(any(), ArgumentMatchers.argThat(this::assertRuleConfigurationWithIfExists)); } private DropMaskRuleStatement createSQLStatement(final boolean ifExists, final String tableName) { diff --git a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/AlterDatabaseRuleOperator.java b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/AlterDatabaseRuleOperator.java index 7c6f0598e76..222f487f866 100644 --- a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/AlterDatabaseRuleOperator.java +++ b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/AlterDatabaseRuleOperator.java @@ -49,9 +49,9 @@ public final class AlterDatabaseRuleOperator implements DatabaseRuleOperator { public void operate(final DatabaseRuleDefinitionStatement sqlStatement, final ShardingSphereDatabase database, final RuleConfiguration currentRuleConfig) throws SQLException { RuleConfiguration toBeAlteredRuleConfig = executor.buildToBeAlteredRuleConfiguration(sqlStatement); MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); - metaDataManagerPersistService.alterRuleConfiguration(database.getName(), decorateRuleConfiguration(database, toBeAlteredRuleConfig)); + metaDataManagerPersistService.alterRuleConfiguration(database, decorateRuleConfiguration(database, toBeAlteredRuleConfig)); RuleConfiguration toBeDroppedRuleConfig = executor.buildToBeDroppedRuleConfiguration(toBeAlteredRuleConfig); - metaDataManagerPersistService.removeRuleConfigurationItem(database.getName(), toBeDroppedRuleConfig); + metaDataManagerPersistService.removeRuleConfigurationItem(database, toBeDroppedRuleConfig); } @SuppressWarnings("unchecked") diff --git a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/CreateDatabaseRuleOperator.java b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/CreateDatabaseRuleOperator.java index 8645350a27c..79abcc49f2b 100644 --- a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/CreateDatabaseRuleOperator.java +++ b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/CreateDatabaseRuleOperator.java @@ -49,7 +49,7 @@ public final class CreateDatabaseRuleOperator implements DatabaseRuleOperator { public void operate(final DatabaseRuleDefinitionStatement sqlStatement, final ShardingSphereDatabase database, final RuleConfiguration currentRuleConfig) throws SQLException { RuleConfiguration toBeCreatedRuleConfig = executor.buildToBeCreatedRuleConfiguration(sqlStatement); MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); - metaDataManagerPersistService.alterRuleConfiguration(database.getName(), decorateRuleConfiguration(database, toBeCreatedRuleConfig)); + metaDataManagerPersistService.alterRuleConfiguration(database, decorateRuleConfiguration(database, toBeCreatedRuleConfig)); } @SuppressWarnings("unchecked") diff --git a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/DropDatabaseRuleOperator.java b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/DropDatabaseRuleOperator.java index 273cf15dc9c..72c5cf7983b 100644 --- a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/DropDatabaseRuleOperator.java +++ b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/DropDatabaseRuleOperator.java @@ -62,14 +62,14 @@ public final class DropDatabaseRuleOperator implements DatabaseRuleOperator { } MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); RuleConfiguration toBeDroppedRuleConfig = executor.buildToBeDroppedRuleConfiguration(sqlStatement); - metaDataManagerPersistService.removeRuleConfigurationItem(database.getName(), toBeDroppedRuleConfig); + metaDataManagerPersistService.removeRuleConfigurationItem(database, toBeDroppedRuleConfig); RuleConfiguration toBeAlteredRuleConfig = executor.buildToBeAlteredRuleConfiguration(sqlStatement); if (null != toBeAlteredRuleConfig && TypedSPILoader.getService(DatabaseRuleConfigurationEmptyChecker.class, toBeAlteredRuleConfig.getClass()).isEmpty((DatabaseRuleConfiguration) toBeAlteredRuleConfig)) { YamlRuleConfiguration yamlRuleConfig = new YamlRuleConfigurationSwapperEngine().swapToYamlRuleConfiguration(currentRuleConfig); - metaDataManagerPersistService.removeRuleConfiguration(database.getName(), Objects.requireNonNull(yamlRuleConfig.getClass().getAnnotation(RepositoryTupleEntity.class)).value()); + metaDataManagerPersistService.removeRuleConfiguration(database, Objects.requireNonNull(yamlRuleConfig.getClass().getAnnotation(RepositoryTupleEntity.class)).value()); } else { - metaDataManagerPersistService.alterRuleConfiguration(database.getName(), toBeAlteredRuleConfig); + metaDataManagerPersistService.alterRuleConfiguration(database, toBeAlteredRuleConfig); } } } diff --git a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/AlterStorageUnitExecutor.java b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/AlterStorageUnitExecutor.java index bc68f391b2e..1a8859dbcc2 100644 --- a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/AlterStorageUnitExecutor.java +++ b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/AlterStorageUnitExecutor.java @@ -66,7 +66,7 @@ public final class AlterStorageUnitExecutor implements DistSQLUpdateExecutor<Alt Map<String, DataSourcePoolProperties> propsMap = DataSourceSegmentsConverter.convert(database.getProtocolType(), sqlStatement.getStorageUnits()); validateHandler.validate(propsMap, getExpectedPrivileges(sqlStatement)); try { - contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().alterStorageUnits(database.getName(), propsMap); + contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().alterStorageUnits(database, propsMap); } catch (final SQLException | ShardingSphereExternalException ex) { throw new StorageUnitsOperateException("alter", propsMap.keySet(), ex); } diff --git a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/UnregisterStorageUnitExecutor.java b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/UnregisterStorageUnitExecutor.java index a01b50de523..d6ab102b574 100644 --- a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/UnregisterStorageUnitExecutor.java +++ b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/UnregisterStorageUnitExecutor.java @@ -57,7 +57,7 @@ public final class UnregisterStorageUnitExecutor implements DistSQLUpdateExecuto } checkInUsed(sqlStatement); try { - contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().unregisterStorageUnits(database.getName(), sqlStatement.getStorageUnitNames()); + contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().unregisterStorageUnits(database, sqlStatement.getStorageUnitNames()); } catch (final SQLException | ShardingSphereServerException ex) { throw new StorageUnitsOperateException("unregister", sqlStatement.getStorageUnitNames(), ex); } diff --git a/infra/distsql-handler/src/test/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/UnregisterStorageUnitExecutorTest.java b/infra/distsql-handler/src/test/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/UnregisterStorageUnitExecutorTest.java index 18e5451b9a5..7eceece1709 100644 --- a/infra/distsql-handler/src/test/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/UnregisterStorageUnitExecutorTest.java +++ b/infra/distsql-handler/src/test/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/UnregisterStorageUnitExecutorTest.java @@ -96,7 +96,7 @@ class UnregisterStorageUnitExecutorTest { when(database.getRuleMetaData().getInUsedStorageUnitNameAndRulesMap()).thenReturn(Collections.emptyMap()); UnregisterStorageUnitStatement sqlStatement = new UnregisterStorageUnitStatement(Collections.singleton("foo_ds"), false, false); executor.executeUpdate(sqlStatement, contextManager); - verify(metaDataManagerPersistService).unregisterStorageUnits("foo_db", sqlStatement.getStorageUnitNames()); + verify(metaDataManagerPersistService).unregisterStorageUnits(database, sqlStatement.getStorageUnitNames()); } @Test @@ -127,14 +127,14 @@ class UnregisterStorageUnitExecutorTest { when(database.getRuleMetaData()).thenReturn(new RuleMetaData(Collections.singleton(new DistSQLHandlerFixtureRule()))); UnregisterStorageUnitStatement sqlStatement = new UnregisterStorageUnitStatement(Collections.singleton("foo_ds"), true, false); executor.executeUpdate(sqlStatement, contextManager); - verify(metaDataManagerPersistService).unregisterStorageUnits("foo_db", sqlStatement.getStorageUnitNames()); + verify(metaDataManagerPersistService).unregisterStorageUnits(database, sqlStatement.getStorageUnitNames()); } @Test void assertExecuteUpdateWithIfExists() throws SQLException { UnregisterStorageUnitStatement sqlStatement = new UnregisterStorageUnitStatement(true, Collections.singleton("foo_ds"), true, false); executor.executeUpdate(sqlStatement, contextManager); - verify(metaDataManagerPersistService).unregisterStorageUnits("foo_db", sqlStatement.getStorageUnitNames()); + verify(metaDataManagerPersistService).unregisterStorageUnits(database, sqlStatement.getStorageUnitNames()); } @Test diff --git a/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/update/LoadSingleTableExecutorTest.java b/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/update/LoadSingleTableExecutorTest.java index 17c3edf0c9d..f1b93d172d6 100644 --- a/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/update/LoadSingleTableExecutorTest.java +++ b/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/update/LoadSingleTableExecutorTest.java @@ -146,7 +146,7 @@ class LoadSingleTableExecutorTest { ContextManager contextManager = mockContextManager(rule); new DistSQLUpdateExecuteEngine(sqlStatement, "foo_db", contextManager).executeUpdate(); MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); - verify(metaDataManagerPersistService).alterRuleConfiguration(eq("foo_db"), any()); + verify(metaDataManagerPersistService).alterRuleConfiguration(any(), any()); } @Test @@ -165,6 +165,6 @@ class LoadSingleTableExecutorTest { ContextManager contextManager = mockContextManager(null); new DistSQLUpdateExecuteEngine(sqlStatement, "foo_db", contextManager).executeUpdate(); MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); - verify(metaDataManagerPersistService).alterRuleConfiguration(eq("foo_db"), any()); + verify(metaDataManagerPersistService).alterRuleConfiguration(any(), any()); } } diff --git a/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/update/SetDefaultSingleTableStorageUnitExecutorTest.java b/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/update/SetDefaultSingleTableStorageUnitExecutorTest.java index 85f18249981..bfd7d8ee89e 100644 --- a/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/update/SetDefaultSingleTableStorageUnitExecutorTest.java +++ b/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/update/SetDefaultSingleTableStorageUnitExecutorTest.java @@ -37,7 +37,7 @@ import java.util.HashSet; import java.util.Optional; import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.RETURNS_DEEP_STUBS; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; @@ -64,14 +64,14 @@ class SetDefaultSingleTableStorageUnitExecutorTest { ContextManager contextManager = mockContextManager(database, rule); new DistSQLUpdateExecuteEngine(new SetDefaultSingleTableStorageUnitStatement(null), "foo_db", contextManager).executeUpdate(); MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); - verify(metaDataManagerPersistService) - .removeRuleConfigurationItem(eq("foo_db"), ArgumentMatchers.<SingleRuleConfiguration>argThat(x -> x.getDefaultDataSource().equals(Optional.of("foo_ds")))); - verify(metaDataManagerPersistService).alterRuleConfiguration(eq("foo_db"), ArgumentMatchers.<SingleRuleConfiguration>argThat(x -> !x.getDefaultDataSource().isPresent())); + verify(metaDataManagerPersistService).removeRuleConfigurationItem(any(), ArgumentMatchers.<SingleRuleConfiguration>argThat(x -> x.getDefaultDataSource().equals(Optional.of("foo_ds")))); + verify(metaDataManagerPersistService).alterRuleConfiguration(any(), ArgumentMatchers.<SingleRuleConfiguration>argThat(x -> !x.getDefaultDataSource().isPresent())); } @Test void assertExecuteUpdateWithDefaultStorageUnit() throws SQLException { ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS); + when(database.getName()).thenReturn("foo_db"); when(database.getResourceMetaData().getStorageUnits().keySet()).thenReturn(new HashSet<>(Arrays.asList("foo_ds", "bar_ds"))); when(database.getRuleMetaData().getAttributes(DataSourceMapperRuleAttribute.class)).thenReturn(Collections.emptyList()); SingleRule rule = mock(SingleRule.class, RETURNS_DEEP_STUBS); @@ -80,8 +80,8 @@ class SetDefaultSingleTableStorageUnitExecutorTest { ContextManager contextManager = mockContextManager(database, rule); new DistSQLUpdateExecuteEngine(new SetDefaultSingleTableStorageUnitStatement("bar_ds"), "foo_db", contextManager).executeUpdate(); MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); - verify(metaDataManagerPersistService).removeRuleConfigurationItem("foo_db", null); - verify(metaDataManagerPersistService).alterRuleConfiguration(eq("foo_db"), ArgumentMatchers.<SingleRuleConfiguration>argThat(x -> x.getDefaultDataSource().equals(Optional.of("bar_ds")))); + verify(metaDataManagerPersistService).removeRuleConfigurationItem(database, null); + verify(metaDataManagerPersistService).alterRuleConfiguration(any(), ArgumentMatchers.<SingleRuleConfiguration>argThat(x -> x.getDefaultDataSource().equals(Optional.of("bar_ds")))); } private ContextManager mockContextManager(final ShardingSphereDatabase database, final SingleRule rule) { diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/federation/type/AlterViewFederationMetaDataRefresher.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/federation/type/AlterViewFederationMetaDataRefresher.java index 3a94ad2700a..518e61ec03b 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/federation/type/AlterViewFederationMetaDataRefresher.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/federation/type/AlterViewFederationMetaDataRefresher.java @@ -48,7 +48,7 @@ public final class AlterViewFederationMetaDataRefresher implements FederationMet droppedViews.add(viewName); } sqlStatement.getViewDefinition().ifPresent(optional -> alteredViews.add(new ShardingSphereView(viewName, optional))); - metaDataManagerPersistService.alterSchema(database.getName(), schemaName, Collections.emptyList(), alteredViews, Collections.emptyList(), droppedViews); + metaDataManagerPersistService.alterSchema(database, schemaName, Collections.emptyList(), alteredViews, Collections.emptyList(), droppedViews); } @Override diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/federation/type/CreateViewFederationMetaDataRefresher.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/federation/type/CreateViewFederationMetaDataRefresher.java index bc01b703836..efe29a46e5b 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/federation/type/CreateViewFederationMetaDataRefresher.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/federation/type/CreateViewFederationMetaDataRefresher.java @@ -34,7 +34,7 @@ public final class CreateViewFederationMetaDataRefresher implements FederationMe @Override public void refresh(final MetaDataManagerPersistService metaDataManagerPersistService, final ShardingSphereDatabase database, final String schemaName, final CreateViewStatement sqlStatement) { String viewName = TableRefreshUtils.getTableName(sqlStatement.getView().getTableName().getIdentifier(), sqlStatement.getDatabaseType()); - metaDataManagerPersistService.alterSchema(database.getName(), schemaName, + metaDataManagerPersistService.alterSchema(database, schemaName, Collections.emptyList(), Collections.singleton(new ShardingSphereView(viewName, sqlStatement.getViewDefinition())), Collections.emptyList(), Collections.emptyList()); } diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/federation/type/DropViewFederationMetaDataRefresher.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/federation/type/DropViewFederationMetaDataRefresher.java index ba1dae4fac9..c379f6649e6 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/federation/type/DropViewFederationMetaDataRefresher.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/federation/type/DropViewFederationMetaDataRefresher.java @@ -34,7 +34,7 @@ public final class DropViewFederationMetaDataRefresher implements FederationMeta @Override public void refresh(final MetaDataManagerPersistService metaDataManagerPersistService, final ShardingSphereDatabase database, final String schemaName, final DropViewStatement sqlStatement) { Collection<String> droppedViews = sqlStatement.getViews().stream().map(each -> each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()); - metaDataManagerPersistService.alterSchema(database.getName(), schemaName, Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), droppedViews); + metaDataManagerPersistService.alterSchema(database, schemaName, Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), droppedViews); } @Override diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/index/AlterIndexPushDownMetaDataRefresher.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/index/AlterIndexPushDownMetaDataRefresher.java index d846f4de881..a722eaa58e2 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/index/AlterIndexPushDownMetaDataRefresher.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/index/AlterIndexPushDownMetaDataRefresher.java @@ -61,7 +61,7 @@ public final class AlterIndexPushDownMetaDataRefresher implements PushDownMetaDa newTable.removeIndex(indexName); String renameIndexName = renameIndex.get().getIndexName().getIdentifier().getValue(); newTable.putIndex(new ShardingSphereIndex(renameIndexName, new LinkedList<>(), false)); - metaDataManagerPersistService.alterSchema(database.getName(), actualSchemaName, Collections.singleton(newTable), Collections.emptyList(), Collections.emptyList(), Collections.emptyList()); + metaDataManagerPersistService.alterSchema(database, actualSchemaName, Collections.singleton(newTable), Collections.emptyList(), Collections.emptyList(), Collections.emptyList()); } private Optional<String> findLogicTableName(final ShardingSphereSchema schema, final String indexName) { diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/index/CreateIndexPushDownMetaDataRefresher.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/index/CreateIndexPushDownMetaDataRefresher.java index 1f25ec77d2c..e686e9d221b 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/index/CreateIndexPushDownMetaDataRefresher.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/index/CreateIndexPushDownMetaDataRefresher.java @@ -53,7 +53,7 @@ public final class CreateIndexPushDownMetaDataRefresher implements PushDownMetaD ShardingSphereTable table = schema.getTable(tableName); ShardingSphereTable newTable = new ShardingSphereTable(table.getName(), table.getAllColumns(), table.getAllIndexes(), table.getAllConstraints(), table.getType()); newTable.putIndex(new ShardingSphereIndex(indexName, new LinkedList<>(), false)); - metaDataManagerPersistService.alterSchema(database.getName(), schemaName, Collections.singleton(newTable), Collections.emptyList(), Collections.emptyList(), Collections.emptyList()); + metaDataManagerPersistService.alterSchema(database, schemaName, Collections.singleton(newTable), Collections.emptyList(), Collections.emptyList(), Collections.emptyList()); } @Override diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/index/DropIndexPushDownMetaDataRefresher.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/index/DropIndexPushDownMetaDataRefresher.java index 30cb1982e1b..7cfe11e96a3 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/index/DropIndexPushDownMetaDataRefresher.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/index/DropIndexPushDownMetaDataRefresher.java @@ -57,8 +57,7 @@ public final class DropIndexPushDownMetaDataRefresher implements PushDownMetaDat ShardingSphereTable table = schema.getTable(logicTableName.get()); ShardingSphereTable newTable = new ShardingSphereTable(table.getName(), table.getAllColumns(), table.getAllIndexes(), table.getAllConstraints(), table.getType()); newTable.removeIndex(each.getIndexName().getIdentifier().getValue()); - metaDataManagerPersistService.alterSchema(database.getName(), actualSchemaName, - Collections.singleton(newTable), Collections.emptyList(), Collections.emptyList(), Collections.emptyList()); + metaDataManagerPersistService.alterSchema(database, actualSchemaName, Collections.singleton(newTable), Collections.emptyList(), Collections.emptyList(), Collections.emptyList()); } } diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/schema/AlterSchemaPushDownMetaDataRefresher.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/schema/AlterSchemaPushDownMetaDataRefresher.java index d2aa7bdc60a..0f2ff50bcdc 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/schema/AlterSchemaPushDownMetaDataRefresher.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/schema/AlterSchemaPushDownMetaDataRefresher.java @@ -40,7 +40,7 @@ public final class AlterSchemaPushDownMetaDataRefresher implements PushDownMetaD if (!renameSchemaName.isPresent()) { return; } - metaDataManagerPersistService.renameSchema(database.getName(), sqlStatement.getSchemaName().getValue().toLowerCase(), renameSchemaName.get()); + metaDataManagerPersistService.renameSchema(database, sqlStatement.getSchemaName().getValue().toLowerCase(), renameSchemaName.get()); } @Override diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/schema/CreateSchemaPushDownMetaDataRefresher.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/schema/CreateSchemaPushDownMetaDataRefresher.java index 57ed9b87bd4..28da59909a8 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/schema/CreateSchemaPushDownMetaDataRefresher.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/schema/CreateSchemaPushDownMetaDataRefresher.java @@ -36,7 +36,7 @@ public final class CreateSchemaPushDownMetaDataRefresher implements PushDownMeta @Override public void refresh(final MetaDataManagerPersistService metaDataManagerPersistService, final ShardingSphereDatabase database, final Collection<String> logicDataSourceNames, final String schemaName, final DatabaseType databaseType, final CreateSchemaStatement sqlStatement, final ConfigurationProperties props) { - getSchemaName(sqlStatement).ifPresent(optional -> metaDataManagerPersistService.createSchema(database.getName(), optional.getValue().toLowerCase())); + getSchemaName(sqlStatement).ifPresent(optional -> metaDataManagerPersistService.createSchema(database, optional.getValue().toLowerCase())); } private static Optional<IdentifierValue> getSchemaName(final CreateSchemaStatement sqlStatement) { diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/schema/DropSchemaPushDownMetaDataRefresher.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/schema/DropSchemaPushDownMetaDataRefresher.java index f739b292f99..0e78c512e19 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/schema/DropSchemaPushDownMetaDataRefresher.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/schema/DropSchemaPushDownMetaDataRefresher.java @@ -35,7 +35,7 @@ public final class DropSchemaPushDownMetaDataRefresher implements PushDownMetaDa @Override public void refresh(final MetaDataManagerPersistService metaDataManagerPersistService, final ShardingSphereDatabase database, final Collection<String> logicDataSourceNames, final String schemaName, final DatabaseType databaseType, final DropSchemaStatement sqlStatement, final ConfigurationProperties props) { - metaDataManagerPersistService.dropSchema(database.getName(), getSchemaNames(sqlStatement)); + metaDataManagerPersistService.dropSchema(database, getSchemaNames(sqlStatement)); } private Collection<String> getSchemaNames(final DropSchemaStatement sqlStatement) { diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/AlterTablePushDownMetaDataRefresher.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/AlterTablePushDownMetaDataRefresher.java index 2027161fc3c..6f501c7bc70 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/AlterTablePushDownMetaDataRefresher.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/AlterTablePushDownMetaDataRefresher.java @@ -56,7 +56,7 @@ public final class AlterTablePushDownMetaDataRefresher implements PushDownMetaDa } else { alteredTables.add(getTable(database, logicDataSourceNames, schemaName, tableName, props)); } - metaDataManagerPersistService.alterSchema(database.getName(), schemaName, alteredTables, Collections.emptyList(), droppedTables, Collections.emptyList()); + metaDataManagerPersistService.alterSchema(database, schemaName, alteredTables, Collections.emptyList(), droppedTables, Collections.emptyList()); } private ShardingSphereTable getTable(final ShardingSphereDatabase database, final Collection<String> logicDataSourceNames, final String schemaName, diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/CreateTablePushDownMetaDataRefresher.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/CreateTablePushDownMetaDataRefresher.java index a98f0cc65ae..fd9ecf9e361 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/CreateTablePushDownMetaDataRefresher.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/CreateTablePushDownMetaDataRefresher.java @@ -52,9 +52,9 @@ public final class CreateTablePushDownMetaDataRefresher implements PushDownMetaD ruleMetaData.getAttributes(MutableDataNodeRuleAttribute.class).forEach(each -> each.put(logicDataSourceNames.iterator().next(), schemaName, tableName)); } ShardingSphereTable loadedTable = loadTable(database, schemaName, tableName, ruleMetaData, props); - metaDataManagerPersistService.createTable(database.getName(), schemaName, loadedTable); + metaDataManagerPersistService.createTable(database, schemaName, loadedTable); if (isSingleTable && TableRefreshUtils.isNeedRefresh(ruleMetaData, schemaName, tableName)) { - metaDataManagerPersistService.alterSingleRuleConfiguration(database.getName(), ruleMetaData); + metaDataManagerPersistService.alterSingleRuleConfiguration(database, ruleMetaData); } } diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/DropTablePushDownMetaDataRefresher.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/DropTablePushDownMetaDataRefresher.java index 804decb3424..f7ee2b0a21e 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/DropTablePushDownMetaDataRefresher.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/DropTablePushDownMetaDataRefresher.java @@ -40,9 +40,9 @@ public final class DropTablePushDownMetaDataRefresher implements PushDownMetaDat boolean needRefresh = TableRefreshUtils.isNeedRefresh(database.getRuleMetaData(), schemaName, sqlStatement.getTables()); boolean isRefreshed = false; for (SimpleTableSegment each : sqlStatement.getTables()) { - metaDataManagerPersistService.dropTable(database.getName(), schemaName, each.getTableName().getIdentifier().getValue()); + metaDataManagerPersistService.dropTable(database, schemaName, each.getTableName().getIdentifier().getValue()); if (!isRefreshed && needRefresh && TableRefreshUtils.isSingleTable(each.getTableName().getIdentifier().getValue(), database)) { - metaDataManagerPersistService.alterSingleRuleConfiguration(database.getName(), database.getRuleMetaData()); + metaDataManagerPersistService.alterSingleRuleConfiguration(database, database.getRuleMetaData()); isRefreshed = true; } } diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/RenameTablePushDownMetaDataRefresher.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/RenameTablePushDownMetaDataRefresher.java index 357d87001c9..a7522f7d3f3 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/RenameTablePushDownMetaDataRefresher.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/RenameTablePushDownMetaDataRefresher.java @@ -48,7 +48,7 @@ public final class RenameTablePushDownMetaDataRefresher implements PushDownMetaD each.getRenameTable().getTableName().getIdentifier().getValue(), toBeRenamedTable.getAllColumns(), toBeRenamedTable.getAllIndexes(), toBeRenamedTable.getAllConstraints())); droppedTables.add(toBeRenamedTableName); } - metaDataManagerPersistService.alterSchema(database.getName(), schemaName, alteredTables, Collections.emptyList(), droppedTables, Collections.emptyList()); + metaDataManagerPersistService.alterSchema(database, schemaName, alteredTables, Collections.emptyList(), droppedTables, Collections.emptyList()); } @Override diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/view/AlterViewPushDownMetaDataRefresher.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/view/AlterViewPushDownMetaDataRefresher.java index fd1dd1b5abc..91e945b7249 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/view/AlterViewPushDownMetaDataRefresher.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/view/AlterViewPushDownMetaDataRefresher.java @@ -69,7 +69,7 @@ public final class AlterViewPushDownMetaDataRefresher implements PushDownMetaDat alteredTables.add(schema.getTable(viewName)); alteredViews.add(schema.getView(viewName)); } - metaDataManagerPersistService.alterSchema(database.getName(), schemaName, alteredTables, alteredViews, droppedTables, droppedViews); + metaDataManagerPersistService.alterSchema(database, schemaName, alteredTables, alteredViews, droppedTables, droppedViews); } private ShardingSphereSchema getSchema(final ShardingSphereDatabase database, final Collection<String> logicDataSourceNames, diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/view/CreateViewPushDownMetaDataRefresher.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/view/CreateViewPushDownMetaDataRefresher.java index eee33b07c14..0cd31423f74 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/view/CreateViewPushDownMetaDataRefresher.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/view/CreateViewPushDownMetaDataRefresher.java @@ -57,7 +57,7 @@ public final class CreateViewPushDownMetaDataRefresher implements PushDownMetaDa Map<String, ShardingSphereSchema> schemas = GenericSchemaBuilder.build(Collections.singletonList(viewName), database.getProtocolType(), material); Optional<ShardingSphereTable> actualTableMetaData = Optional.ofNullable(schemas.get(schemaName)).map(optional -> optional.getTable(viewName)); Preconditions.checkState(actualTableMetaData.isPresent(), "Load actual view metadata '%s' failed.", viewName); - metaDataManagerPersistService.alterSchema(database.getName(), schemaName, + metaDataManagerPersistService.alterSchema(database, schemaName, Collections.singleton(actualTableMetaData.get()), Collections.singleton(new ShardingSphereView(viewName, sqlStatement.getViewDefinition())), Collections.emptyList(), Collections.emptyList()); } diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/view/DropViewPushDownMetaDataRefresher.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/view/DropViewPushDownMetaDataRefresher.java index 358c87af0e5..8229a3a03cc 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/view/DropViewPushDownMetaDataRefresher.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/view/DropViewPushDownMetaDataRefresher.java @@ -44,7 +44,7 @@ public final class DropViewPushDownMetaDataRefresher implements PushDownMetaData droppedTables.add(viewName); droppedViews.add(viewName); } - metaDataManagerPersistService.alterSchema(database.getName(), schemaName, Collections.emptyList(), Collections.emptyList(), droppedTables, droppedViews); + metaDataManagerPersistService.alterSchema(database, schemaName, Collections.emptyList(), Collections.emptyList(), droppedTables, droppedViews); } @Override diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/MetaDataManagerPersistService.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/MetaDataManagerPersistService.java index 85f33b8fc9a..3d81153cb31 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/MetaDataManagerPersistService.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/MetaDataManagerPersistService.java @@ -19,6 +19,7 @@ package org.apache.shardingsphere.mode.persist.service; import org.apache.shardingsphere.infra.config.rule.RuleConfiguration; import org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties; +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.ShardingSphereTable; import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereView; @@ -43,65 +44,65 @@ public interface MetaDataManagerPersistService { /** * Drop database. * - * @param databaseName database name + * @param database database */ - void dropDatabase(String databaseName); + void dropDatabase(ShardingSphereDatabase database); /** * Create schema. * - * @param databaseName database name + * @param database database * @param schemaName schema name */ - void createSchema(String databaseName, String schemaName); + void createSchema(ShardingSphereDatabase database, String schemaName); /** * Alter schema. * - * @param databaseName database name + * @param database database * @param schemaName schema name * @param alteredTables altered tables * @param alteredViews altered views * @param droppedTables dropped tables * @param droppedViews dropped views */ - void alterSchema(String databaseName, String schemaName, + void alterSchema(ShardingSphereDatabase database, String schemaName, Collection<ShardingSphereTable> alteredTables, Collection<ShardingSphereView> alteredViews, Collection<String> droppedTables, Collection<String> droppedViews); /** * Rename schema. * - * @param databaseName database name + * @param database database * @param schemaName schema name * @param renameSchemaName rename schema name */ - void renameSchema(String databaseName, String schemaName, String renameSchemaName); + void renameSchema(ShardingSphereDatabase database, String schemaName, String renameSchemaName); /** * Drop schema. * - * @param databaseName database name + * @param database database * @param schemaNames schema names */ - void dropSchema(String databaseName, Collection<String> schemaNames); + void dropSchema(ShardingSphereDatabase database, Collection<String> schemaNames); /** * Create table. * - * @param databaseName database name + * @param database database * @param schemaName schema name * @param table table */ - void createTable(String databaseName, String schemaName, ShardingSphereTable table); + void createTable(ShardingSphereDatabase database, String schemaName, ShardingSphereTable table); /** * Drop tables. * - * @param databaseName database name + * @param database database * @param schemaName schema name * @param tableName table name */ - void dropTable(String databaseName, String schemaName, String tableName); + void dropTable(ShardingSphereDatabase database, String schemaName, String tableName); /** * Register storage units. @@ -115,55 +116,55 @@ public interface MetaDataManagerPersistService { /** * Alter storage units. * - * @param databaseName database name + * @param database database * @param toBeUpdatedProps to be updated storage unit properties * @throws SQLException SQL exception */ - void alterStorageUnits(String databaseName, Map<String, DataSourcePoolProperties> toBeUpdatedProps) throws SQLException; + void alterStorageUnits(ShardingSphereDatabase database, Map<String, DataSourcePoolProperties> toBeUpdatedProps) throws SQLException; /** * Unregister storage units. - * @param databaseName database name + * @param database database * @param toBeDroppedStorageUnitNames to be dropped storage unit names * @throws SQLException SQL exception */ - void unregisterStorageUnits(String databaseName, Collection<String> toBeDroppedStorageUnitNames) throws SQLException; + void unregisterStorageUnits(ShardingSphereDatabase database, Collection<String> toBeDroppedStorageUnitNames) throws SQLException; /** * Alter single rule configuration. * - * @param databaseName database name + * @param database database * @param ruleMetaData rule meta data * @throws SQLException SQL exception */ - void alterSingleRuleConfiguration(String databaseName, RuleMetaData ruleMetaData) throws SQLException; + void alterSingleRuleConfiguration(ShardingSphereDatabase database, RuleMetaData ruleMetaData) throws SQLException; /** * Alter rule configuration. * - * @param databaseName database name + * @param database database * @param toBeAlteredRuleConfig to be altered rule config * @throws SQLException SQL exception */ - void alterRuleConfiguration(String databaseName, RuleConfiguration toBeAlteredRuleConfig) throws SQLException; + void alterRuleConfiguration(ShardingSphereDatabase database, RuleConfiguration toBeAlteredRuleConfig) throws SQLException; /** * Remove rule configuration item. * - * @param databaseName database name + * @param database database * @param toBeRemovedRuleConfig to be removed rule config * @throws SQLException SQL exception */ - void removeRuleConfigurationItem(String databaseName, RuleConfiguration toBeRemovedRuleConfig) throws SQLException; + void removeRuleConfigurationItem(ShardingSphereDatabase database, RuleConfiguration toBeRemovedRuleConfig) throws SQLException; /** * Remove rule configuration. * - * @param databaseName database name + * @param database database * @param ruleName rule name * @throws SQLException SQL exception */ - void removeRuleConfiguration(String databaseName, String ruleName) throws SQLException; + void removeRuleConfiguration(ShardingSphereDatabase database, String ruleName) throws SQLException; /** * Alter global rule configuration. 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 69651c39e70..5ed3375d85a 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 @@ -21,6 +21,7 @@ import lombok.SneakyThrows; import org.apache.shardingsphere.infra.config.rule.RuleConfiguration; import org.apache.shardingsphere.infra.datasource.pool.destroyer.DataSourcePoolDestroyer; import org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties; +import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase; import org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNode; import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData; import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema; @@ -75,42 +76,42 @@ public final class ClusterMetaDataManagerPersistService implements MetaDataManag } @Override - public void dropDatabase(final String databaseName) { - clusterDatabaseListenerPersistCoordinator.persist(databaseName, ClusterDatabaseListenerCoordinatorType.DROP); - metaDataPersistFacade.getDatabaseMetaDataFacade().getDatabase().drop(databaseName); + public void dropDatabase(final ShardingSphereDatabase database) { + clusterDatabaseListenerPersistCoordinator.persist(database.getName(), ClusterDatabaseListenerCoordinatorType.DROP); + metaDataPersistFacade.getDatabaseMetaDataFacade().getDatabase().drop(database.getName()); } @Override - public void createSchema(final String databaseName, final String schemaName) { - metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema().add(databaseName, schemaName); + public void createSchema(final ShardingSphereDatabase database, final String schemaName) { + metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema().add(database.getName(), schemaName); } @Override - public void alterSchema(final String databaseName, final String schemaName, + public void alterSchema(final ShardingSphereDatabase database, final String schemaName, final Collection<ShardingSphereTable> alteredTables, final Collection<ShardingSphereView> alteredViews, final Collection<String> droppedTables, final Collection<String> droppedViews) { DatabaseMetaDataPersistFacade databaseMetaDataFacade = metaDataPersistFacade.getDatabaseMetaDataFacade(); - databaseMetaDataFacade.getTable().persist(databaseName, schemaName, alteredTables); - databaseMetaDataFacade.getView().persist(databaseName, schemaName, alteredViews); - droppedTables.forEach(each -> databaseMetaDataFacade.getTable().drop(databaseName, schemaName, each)); - droppedViews.forEach(each -> databaseMetaDataFacade.getView().drop(databaseName, schemaName, each)); + databaseMetaDataFacade.getTable().persist(database.getName(), schemaName, alteredTables); + databaseMetaDataFacade.getView().persist(database.getName(), schemaName, alteredViews); + droppedTables.forEach(each -> databaseMetaDataFacade.getTable().drop(database.getName(), schemaName, each)); + droppedViews.forEach(each -> databaseMetaDataFacade.getView().drop(database.getName(), schemaName, each)); } @Override - public void renameSchema(final String databaseName, final String schemaName, final String renameSchemaName) { - ShardingSphereSchema schema = metaDataContextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getSchema(schemaName); + public void renameSchema(final ShardingSphereDatabase database, final String schemaName, final String renameSchemaName) { + ShardingSphereSchema schema = metaDataContextManager.getMetaDataContexts().getMetaData().getDatabase(database.getName()).getSchema(schemaName); if (schema.isEmpty()) { - metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema().add(databaseName, renameSchemaName); + metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema().add(database.getName(), renameSchemaName); } else { - metaDataPersistFacade.getDatabaseMetaDataFacade().getTable().persist(databaseName, renameSchemaName, schema.getAllTables()); - metaDataPersistFacade.getDatabaseMetaDataFacade().getView().persist(databaseName, renameSchemaName, schema.getAllViews()); + metaDataPersistFacade.getDatabaseMetaDataFacade().getTable().persist(database.getName(), renameSchemaName, schema.getAllTables()); + metaDataPersistFacade.getDatabaseMetaDataFacade().getView().persist(database.getName(), renameSchemaName, schema.getAllViews()); } - metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema().drop(databaseName, schemaName); + metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema().drop(database.getName(), schemaName); } @Override - public void dropSchema(final String databaseName, final Collection<String> schemaNames) { - schemaNames.forEach(each -> dropSchema(databaseName, each)); + public void dropSchema(final ShardingSphereDatabase database, final Collection<String> schemaNames) { + schemaNames.forEach(each -> dropSchema(database.getName(), each)); } private void dropSchema(final String databaseName, final String schemaName) { @@ -118,13 +119,13 @@ public final class ClusterMetaDataManagerPersistService implements MetaDataManag } @Override - public void createTable(final String databaseName, final String schemaName, final ShardingSphereTable table) { - metaDataPersistFacade.getDatabaseMetaDataFacade().getTable().persist(databaseName, schemaName, Collections.singleton(table)); + public void createTable(final ShardingSphereDatabase database, final String schemaName, final ShardingSphereTable table) { + metaDataPersistFacade.getDatabaseMetaDataFacade().getTable().persist(database.getName(), schemaName, Collections.singleton(table)); } @Override - public void dropTable(final String databaseName, final String schemaName, final String tableName) { - metaDataPersistFacade.getDatabaseMetaDataFacade().getTable().drop(databaseName, schemaName, tableName); + public void dropTable(final ShardingSphereDatabase database, final String schemaName, final String tableName) { + metaDataPersistFacade.getDatabaseMetaDataFacade().getTable().drop(database.getName(), schemaName, tableName); } @Override @@ -146,19 +147,19 @@ public final class ClusterMetaDataManagerPersistService implements MetaDataManag } @Override - public void alterStorageUnits(final String databaseName, final Map<String, DataSourcePoolProperties> toBeUpdatedProps) throws SQLException { + public void alterStorageUnits(final ShardingSphereDatabase database, final Map<String, DataSourcePoolProperties> toBeUpdatedProps) throws SQLException { MetaDataContexts originalMetaDataContexts = new MetaDataContexts(metaDataContextManager.getMetaDataContexts().getMetaData(), metaDataContextManager.getMetaDataContexts().getStatistics()); Map<StorageNode, DataSource> newDataSources = new HashMap<>(toBeUpdatedProps.size()); try { SwitchingResource switchingResource = metaDataContextManager.getResourceSwitchManager() - .switchByAlterStorageUnit(originalMetaDataContexts.getMetaData().getDatabase(databaseName).getResourceMetaData(), toBeUpdatedProps); + .switchByAlterStorageUnit(originalMetaDataContexts.getMetaData().getDatabase(database.getName()).getResourceMetaData(), toBeUpdatedProps); newDataSources.putAll(switchingResource.getNewDataSources()); MetaDataContexts reloadMetaDataContexts = new MetaDataContextsFactory(metaDataPersistFacade, metaDataContextManager.getComputeNodeInstanceContext()).createBySwitchResource( - databaseName, false, switchingResource, originalMetaDataContexts); + database.getName(), false, switchingResource, originalMetaDataContexts); DataSourceUnitPersistService dataSourceService = metaDataPersistFacade.getDataSourceUnitService(); metaDataPersistFacade.getMetaDataVersionService() - .switchActiveVersion(dataSourceService.persist(databaseName, toBeUpdatedProps)); - afterStorageUnitsAltered(databaseName, originalMetaDataContexts, reloadMetaDataContexts); + .switchActiveVersion(dataSourceService.persist(database.getName(), toBeUpdatedProps)); + afterStorageUnitsAltered(database.getName(), originalMetaDataContexts, reloadMetaDataContexts); reloadMetaDataContexts.getMetaData().close(); } finally { closeNewDataSources(newDataSources); @@ -166,15 +167,15 @@ public final class ClusterMetaDataManagerPersistService implements MetaDataManag } @Override - public void unregisterStorageUnits(final String databaseName, final Collection<String> toBeDroppedStorageUnitNames) throws SQLException { - for (String each : getToBeDroppedResourceNames(databaseName, toBeDroppedStorageUnitNames)) { + public void unregisterStorageUnits(final ShardingSphereDatabase database, final Collection<String> toBeDroppedStorageUnitNames) throws SQLException { + for (String each : getToBeDroppedResourceNames(database.getName(), toBeDroppedStorageUnitNames)) { MetaDataContexts originalMetaDataContexts = new MetaDataContexts(metaDataContextManager.getMetaDataContexts().getMetaData(), metaDataContextManager.getMetaDataContexts().getStatistics()); SwitchingResource switchingResource = metaDataContextManager.getResourceSwitchManager() - .createByUnregisterStorageUnit(originalMetaDataContexts.getMetaData().getDatabase(databaseName).getResourceMetaData(), Collections.singletonList(each)); + .createByUnregisterStorageUnit(originalMetaDataContexts.getMetaData().getDatabase(database.getName()).getResourceMetaData(), Collections.singletonList(each)); MetaDataContexts reloadMetaDataContexts = new MetaDataContextsFactory(metaDataPersistFacade, metaDataContextManager.getComputeNodeInstanceContext()).createBySwitchResource( - databaseName, false, switchingResource, originalMetaDataContexts); - metaDataPersistFacade.getDataSourceUnitService().delete(databaseName, each); - afterStorageUnitsDropped(databaseName, originalMetaDataContexts, reloadMetaDataContexts); + database.getName(), false, switchingResource, originalMetaDataContexts); + metaDataPersistFacade.getDataSourceUnitService().delete(database.getName(), each); + afterStorageUnitsDropped(database.getName(), originalMetaDataContexts, reloadMetaDataContexts); reloadMetaDataContexts.getMetaData().close(); } } @@ -211,21 +212,21 @@ public final class ClusterMetaDataManagerPersistService implements MetaDataManag } @Override - public void alterSingleRuleConfiguration(final String databaseName, final RuleMetaData ruleMetaData) { + public void alterSingleRuleConfiguration(final ShardingSphereDatabase database, final RuleMetaData ruleMetaData) { SingleRuleConfiguration singleRuleConfig = ruleMetaData.getSingleRule(SingleRule.class).getConfiguration(); - Collection<MetaDataVersion> metaDataVersions = metaDataPersistFacade.getDatabaseRuleService().persist(databaseName, Collections.singleton(singleRuleConfig)); + Collection<MetaDataVersion> metaDataVersions = metaDataPersistFacade.getDatabaseRuleService().persist(database.getName(), Collections.singleton(singleRuleConfig)); metaDataPersistFacade.getMetaDataVersionService().switchActiveVersion(metaDataVersions); } @Override - public void alterRuleConfiguration(final String databaseName, final RuleConfiguration toBeAlteredRuleConfig) { + public void alterRuleConfiguration(final ShardingSphereDatabase database, final RuleConfiguration toBeAlteredRuleConfig) { if (null == toBeAlteredRuleConfig) { return; } MetaDataContexts originalMetaDataContexts = new MetaDataContexts(metaDataContextManager.getMetaDataContexts().getMetaData(), metaDataContextManager.getMetaDataContexts().getStatistics()); - Collection<MetaDataVersion> metaDataVersions = metaDataPersistFacade.getDatabaseRuleService().persist(databaseName, Collections.singleton(toBeAlteredRuleConfig)); + Collection<MetaDataVersion> metaDataVersions = metaDataPersistFacade.getDatabaseRuleService().persist(database.getName(), Collections.singleton(toBeAlteredRuleConfig)); metaDataPersistFacade.getMetaDataVersionService().switchActiveVersion(metaDataVersions); - afterRuleConfigurationAltered(databaseName, originalMetaDataContexts); + afterRuleConfigurationAltered(database.getName(), originalMetaDataContexts); } @SneakyThrows(InterruptedException.class) @@ -237,17 +238,17 @@ public final class ClusterMetaDataManagerPersistService implements MetaDataManag } @Override - public void removeRuleConfigurationItem(final String databaseName, final RuleConfiguration toBeRemovedRuleConfig) { + public void removeRuleConfigurationItem(final ShardingSphereDatabase database, final RuleConfiguration toBeRemovedRuleConfig) { if (null != toBeRemovedRuleConfig) { - metaDataPersistFacade.getDatabaseRuleService().delete(databaseName, Collections.singleton(toBeRemovedRuleConfig)); + metaDataPersistFacade.getDatabaseRuleService().delete(database.getName(), Collections.singleton(toBeRemovedRuleConfig)); } } @Override - public void removeRuleConfiguration(final String databaseName, final String ruleName) { + public void removeRuleConfiguration(final ShardingSphereDatabase database, final String ruleName) { MetaDataContexts originalMetaDataContexts = new MetaDataContexts(metaDataContextManager.getMetaDataContexts().getMetaData(), metaDataContextManager.getMetaDataContexts().getStatistics()); - metaDataPersistFacade.getDatabaseRuleService().delete(databaseName, ruleName); - afterRuleConfigurationDropped(databaseName, originalMetaDataContexts); + metaDataPersistFacade.getDatabaseRuleService().delete(database.getName(), ruleName); + afterRuleConfigurationDropped(database.getName(), originalMetaDataContexts); } @SneakyThrows(InterruptedException.class) 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 371f8299632..242359075f3 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 @@ -19,6 +19,7 @@ package org.apache.shardingsphere.mode.manager.cluster.persist.service; import lombok.SneakyThrows; import org.apache.shardingsphere.infra.config.rule.RuleConfiguration; +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; import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable; @@ -80,20 +81,21 @@ class ClusterMetaDataManagerPersistServiceTest { @Test void assertDropDatabase() { - metaDataManagerPersistService.dropDatabase("foo_db"); + metaDataManagerPersistService.dropDatabase(new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList())); verify(clusterDatabaseListenerPersistCoordinator).persist("foo_db", ClusterDatabaseListenerCoordinatorType.DROP); verify(metaDataPersistFacade.getDatabaseMetaDataFacade().getDatabase()).drop("foo_db"); } @Test void assertCreateSchema() { - metaDataManagerPersistService.createSchema("foo_db", "foo_schema"); + metaDataManagerPersistService.createSchema(new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()), "foo_schema"); verify(metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema()).add("foo_db", "foo_schema"); } @Test void assertAlterSchema() { - metaDataManagerPersistService.alterSchema("foo_db", "foo_schema", Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), Collections.emptyList()); + metaDataManagerPersistService.alterSchema(new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()), + "foo_schema", Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), Collections.emptyList()); verify(metaDataPersistFacade.getDatabaseMetaDataFacade().getTable()).persist("foo_db", "foo_schema", Collections.emptyList()); verify(metaDataPersistFacade.getDatabaseMetaDataFacade().getView()).persist("foo_db", "foo_schema", Collections.emptyList()); } @@ -102,7 +104,7 @@ class ClusterMetaDataManagerPersistServiceTest { void assertRenameNotEmptySchemaName() { ShardingSphereSchema schema = mock(ShardingSphereSchema.class); when(metaDataContextManager.getMetaDataContexts().getMetaData().getDatabase("foo_db").getSchema("foo_schema")).thenReturn(schema); - metaDataManagerPersistService.renameSchema("foo_db", "foo_schema", "bar_schema"); + metaDataManagerPersistService.renameSchema(new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()), "foo_schema", "bar_schema"); verify(metaDataPersistFacade.getDatabaseMetaDataFacade().getTable()).persist(eq("foo_db"), eq("bar_schema"), anyCollection()); verify(metaDataPersistFacade.getDatabaseMetaDataFacade().getView()).persist(eq("foo_db"), eq("bar_schema"), anyCollection()); verify(metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema()).drop("foo_db", "foo_schema"); @@ -114,14 +116,14 @@ class ClusterMetaDataManagerPersistServiceTest { ShardingSphereSchema schema = mock(ShardingSphereSchema.class); when(schema.isEmpty()).thenReturn(true); when(metaDataContextManager.getMetaDataContexts().getMetaData().getDatabase("foo_db").getSchema("foo_schema")).thenReturn(schema); - metaDataManagerPersistService.renameSchema("foo_db", "foo_schema", "bar_schema"); + metaDataManagerPersistService.renameSchema(new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()), "foo_schema", "bar_schema"); verify(metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema()).drop("foo_db", "foo_schema"); verify(metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema()).add("foo_db", "bar_schema"); } @Test void assertDropSchema() { - metaDataManagerPersistService.dropSchema("foo_db", Collections.singleton("foo_schema")); + metaDataManagerPersistService.dropSchema(new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()), Collections.singleton("foo_schema")); verify(metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema()).drop("foo_db", "foo_schema"); } @@ -131,39 +133,40 @@ class ClusterMetaDataManagerPersistServiceTest { SingleRuleConfiguration singleRuleConfig = new SingleRuleConfiguration(); when(singleRule.getConfiguration()).thenReturn(singleRuleConfig); when(metaDataPersistFacade.getDatabaseRuleService().persist("foo_db", Collections.singleton(singleRuleConfig))).thenReturn(Collections.emptyList()); - metaDataManagerPersistService.alterSingleRuleConfiguration("foo_db", new RuleMetaData(Collections.singleton(singleRule))); + metaDataManagerPersistService.alterSingleRuleConfiguration( + new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()), new RuleMetaData(Collections.singleton(singleRule))); verify(metaDataPersistFacade.getMetaDataVersionService()).switchActiveVersion(Collections.emptyList()); } @Test void assertAlterNullRuleConfiguration() { - metaDataManagerPersistService.alterRuleConfiguration("foo_db", null); + metaDataManagerPersistService.alterRuleConfiguration(new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()), null); verify(metaDataPersistFacade.getDatabaseRuleService(), times(0)).persist(eq("foo_db"), any()); } @Test void assertAlterRuleConfiguration() { RuleConfiguration ruleConfig = new SingleRuleConfiguration(); - metaDataManagerPersistService.alterRuleConfiguration("foo_db", ruleConfig); + metaDataManagerPersistService.alterRuleConfiguration(new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()), ruleConfig); verify(metaDataPersistFacade.getDatabaseRuleService()).persist("foo_db", Collections.singleton(ruleConfig)); } @Test void assertRemoveNullRuleConfigurationItem() { - metaDataManagerPersistService.removeRuleConfigurationItem("foo_db", null); + metaDataManagerPersistService.removeRuleConfigurationItem(new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()), null); verify(metaDataPersistFacade.getDatabaseRuleService(), times(0)).delete(eq("foo_db"), anyCollection()); } @Test void assertRemoveRuleConfigurationItem() { RuleConfiguration ruleConfig = new SingleRuleConfiguration(); - metaDataManagerPersistService.removeRuleConfigurationItem("foo_db", ruleConfig); + metaDataManagerPersistService.removeRuleConfigurationItem(new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()), ruleConfig); verify(metaDataPersistFacade.getDatabaseRuleService()).delete("foo_db", Collections.singleton(ruleConfig)); } @Test void assertRemoveRuleConfiguration() { - metaDataManagerPersistService.removeRuleConfiguration("foo_db", "fixtureRule"); + metaDataManagerPersistService.removeRuleConfiguration(new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()), "fixtureRule"); verify(metaDataPersistFacade.getDatabaseRuleService()).delete("foo_db", "fixtureRule"); } @@ -184,13 +187,13 @@ class ClusterMetaDataManagerPersistServiceTest { @Test void assertCreateTable() { ShardingSphereTable table = mock(ShardingSphereTable.class); - metaDataManagerPersistService.createTable("foo_db", "foo_schema", table); + metaDataManagerPersistService.createTable(new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()), "foo_schema", table); verify(metaDataPersistFacade.getDatabaseMetaDataFacade().getTable()).persist("foo_db", "foo_schema", Collections.singleton(table)); } @Test void assertDropTable() { - metaDataManagerPersistService.dropTable("foo_db", "foo_schema", "foo_tbl"); + metaDataManagerPersistService.dropTable(new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()), "foo_schema", "foo_tbl"); verify(metaDataPersistFacade.getDatabaseMetaDataFacade().getTable()).drop("foo_db", "foo_schema", "foo_tbl"); } } diff --git a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java index a984bc3b8cd..e1d29fa919c 100644 --- a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java +++ b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java @@ -78,51 +78,51 @@ public final class StandaloneMetaDataManagerPersistService implements MetaDataMa } @Override - public void dropDatabase(final String databaseName) { - metaDataPersistFacade.getDatabaseMetaDataFacade().getDatabase().drop(databaseName); - metaDataContextManager.getDatabaseMetaDataManager().dropDatabase(databaseName); + public void dropDatabase(final ShardingSphereDatabase database) { + metaDataPersistFacade.getDatabaseMetaDataFacade().getDatabase().drop(database.getName()); + metaDataContextManager.getDatabaseMetaDataManager().dropDatabase(database.getName()); clearServiceCache(); } @Override - public void createSchema(final String databaseName, final String schemaName) { - metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema().add(databaseName, schemaName); - metaDataContextManager.getDatabaseMetaDataManager().addSchema(databaseName, schemaName); + public void createSchema(final ShardingSphereDatabase database, final String schemaName) { + metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema().add(database.getName(), schemaName); + metaDataContextManager.getDatabaseMetaDataManager().addSchema(database.getName(), schemaName); } @Override - public void alterSchema(final String databaseName, final String schemaName, + public void alterSchema(final ShardingSphereDatabase database, final String schemaName, final Collection<ShardingSphereTable> alteredTables, final Collection<ShardingSphereView> alteredViews, final Collection<String> droppedTables, final Collection<String> droppedViews) { DatabaseMetaDataPersistFacade databaseMetaDataFacade = metaDataPersistFacade.getDatabaseMetaDataFacade(); - databaseMetaDataFacade.getTable().persist(databaseName, schemaName, alteredTables); - databaseMetaDataFacade.getView().persist(databaseName, schemaName, alteredViews); - droppedTables.forEach(each -> databaseMetaDataFacade.getTable().drop(databaseName, schemaName, each)); - droppedViews.forEach(each -> databaseMetaDataFacade.getView().drop(databaseName, schemaName, each)); - alteredTables.forEach(each -> metaDataContextManager.getDatabaseMetaDataManager().alterTable(databaseName, schemaName, each)); - alteredViews.forEach(each -> metaDataContextManager.getDatabaseMetaDataManager().alterView(databaseName, schemaName, each)); - droppedTables.forEach(each -> metaDataContextManager.getDatabaseMetaDataManager().dropTable(databaseName, schemaName, each)); - droppedViews.forEach(each -> metaDataContextManager.getDatabaseMetaDataManager().dropView(databaseName, schemaName, each)); + databaseMetaDataFacade.getTable().persist(database.getName(), schemaName, alteredTables); + databaseMetaDataFacade.getView().persist(database.getName(), schemaName, alteredViews); + droppedTables.forEach(each -> databaseMetaDataFacade.getTable().drop(database.getName(), schemaName, each)); + droppedViews.forEach(each -> databaseMetaDataFacade.getView().drop(database.getName(), schemaName, each)); + alteredTables.forEach(each -> metaDataContextManager.getDatabaseMetaDataManager().alterTable(database.getName(), schemaName, each)); + alteredViews.forEach(each -> metaDataContextManager.getDatabaseMetaDataManager().alterView(database.getName(), schemaName, each)); + droppedTables.forEach(each -> metaDataContextManager.getDatabaseMetaDataManager().dropTable(database.getName(), schemaName, each)); + droppedViews.forEach(each -> metaDataContextManager.getDatabaseMetaDataManager().dropView(database.getName(), schemaName, each)); ShardingSphereMetaData metaData = metaDataContextManager.getMetaDataContexts().getMetaData(); metaData.getGlobalRuleMetaData().getRules().forEach(each -> ((GlobalRule) each).refresh(metaData.getAllDatabases(), GlobalRuleChangedType.SCHEMA_CHANGED)); } @Override - public void renameSchema(final String databaseName, final String schemaName, final String renameSchemaName) { - ShardingSphereSchema schema = metaDataContextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getSchema(schemaName); + public void renameSchema(final ShardingSphereDatabase database, final String schemaName, final String renameSchemaName) { + ShardingSphereSchema schema = metaDataContextManager.getMetaDataContexts().getMetaData().getDatabase(database.getName()).getSchema(schemaName); if (schema.isEmpty()) { - metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema().add(databaseName, renameSchemaName); + metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema().add(database.getName(), renameSchemaName); } else { - metaDataPersistFacade.getDatabaseMetaDataFacade().getTable().persist(databaseName, renameSchemaName, schema.getAllTables()); - metaDataPersistFacade.getDatabaseMetaDataFacade().getView().persist(databaseName, renameSchemaName, schema.getAllViews()); + metaDataPersistFacade.getDatabaseMetaDataFacade().getTable().persist(database.getName(), renameSchemaName, schema.getAllTables()); + metaDataPersistFacade.getDatabaseMetaDataFacade().getView().persist(database.getName(), renameSchemaName, schema.getAllViews()); } - metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema().drop(databaseName, schemaName); - metaDataContextManager.getDatabaseMetaDataManager().renameSchema(databaseName, schemaName, renameSchemaName); + metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema().drop(database.getName(), schemaName); + metaDataContextManager.getDatabaseMetaDataManager().renameSchema(database.getName(), schemaName, renameSchemaName); } @Override - public void dropSchema(final String databaseName, final Collection<String> schemaNames) { - schemaNames.forEach(each -> dropSchema(databaseName, each)); + public void dropSchema(final ShardingSphereDatabase database, final Collection<String> schemaNames) { + schemaNames.forEach(each -> dropSchema(database.getName(), each)); } private void dropSchema(final String databaseName, final String schemaName) { @@ -131,15 +131,15 @@ public final class StandaloneMetaDataManagerPersistService implements MetaDataMa } @Override - public void createTable(final String databaseName, final String schemaName, final ShardingSphereTable table) { - metaDataPersistFacade.getDatabaseMetaDataFacade().getTable().persist(databaseName, schemaName, Collections.singleton(table)); - metaDataContextManager.getDatabaseMetaDataManager().alterTable(databaseName, schemaName, table); + public void createTable(final ShardingSphereDatabase database, final String schemaName, final ShardingSphereTable table) { + metaDataPersistFacade.getDatabaseMetaDataFacade().getTable().persist(database.getName(), schemaName, Collections.singleton(table)); + metaDataContextManager.getDatabaseMetaDataManager().alterTable(database.getName(), schemaName, table); } @Override - public void dropTable(final String databaseName, final String schemaName, final String tableName) { - metaDataPersistFacade.getDatabaseMetaDataFacade().getTable().drop(databaseName, schemaName, tableName); - metaDataContextManager.getDatabaseMetaDataManager().dropTable(databaseName, schemaName, tableName); + public void dropTable(final ShardingSphereDatabase database, final String schemaName, final String tableName) { + metaDataPersistFacade.getDatabaseMetaDataFacade().getTable().drop(database.getName(), schemaName, tableName); + metaDataContextManager.getDatabaseMetaDataManager().dropTable(database.getName(), schemaName, tableName); } @Override @@ -165,54 +165,53 @@ public final class StandaloneMetaDataManagerPersistService implements MetaDataMa } @Override - public void alterStorageUnits(final String databaseName, final Map<String, DataSourcePoolProperties> toBeUpdatedProps) throws SQLException { + public void alterStorageUnits(final ShardingSphereDatabase database, final Map<String, DataSourcePoolProperties> toBeUpdatedProps) throws SQLException { SwitchingResource switchingResource = metaDataContextManager.getResourceSwitchManager().switchByAlterStorageUnit(metaDataContextManager.getMetaDataContexts().getMetaData() - .getDatabase(databaseName).getResourceMetaData(), toBeUpdatedProps); + .getDatabase(database.getName()).getResourceMetaData(), toBeUpdatedProps); ShardingSphereDatabase changedDatabase = new MetaDataContextsFactory(metaDataPersistFacade, metaDataContextManager.getComputeNodeInstanceContext()).createChangedDatabase( - databaseName, true, switchingResource, null, metaDataContextManager.getMetaDataContexts()); + database.getName(), true, switchingResource, null, metaDataContextManager.getMetaDataContexts()); metaDataContextManager.getMetaDataContexts().getMetaData().putDatabase(changedDatabase); metaDataContextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getRules() .forEach(each -> ((GlobalRule) each).refresh(metaDataContextManager.getMetaDataContexts().getMetaData().getAllDatabases(), GlobalRuleChangedType.DATABASE_CHANGED)); DataSourceUnitPersistService dataSourceService = metaDataPersistFacade.getDataSourceUnitService(); - metaDataPersistFacade.getMetaDataVersionService().switchActiveVersion(dataSourceService.persist(databaseName, toBeUpdatedProps)); + metaDataPersistFacade.getMetaDataVersionService().switchActiveVersion(dataSourceService.persist(database.getName(), toBeUpdatedProps)); switchingResource.closeStaleDataSources(); clearServiceCache(); } @Override - public void unregisterStorageUnits(final String databaseName, final Collection<String> toBeDroppedStorageUnitNames) throws SQLException { + public void unregisterStorageUnits(final ShardingSphereDatabase database, final Collection<String> toBeDroppedStorageUnitNames) throws SQLException { SwitchingResource switchingResource = metaDataContextManager.getResourceSwitchManager().switchByUnregisterStorageUnit(metaDataContextManager.getMetaDataContexts().getMetaData() - .getDatabase(databaseName).getResourceMetaData(), toBeDroppedStorageUnitNames); + .getDatabase(database.getName()).getResourceMetaData(), toBeDroppedStorageUnitNames); MetaDataContexts reloadMetaDataContexts = new MetaDataContextsFactory(metaDataPersistFacade, metaDataContextManager.getComputeNodeInstanceContext()).createBySwitchResource( - databaseName, false, switchingResource, metaDataContextManager.getMetaDataContexts()); - ShardingSphereDatabase reloadDatabase = reloadMetaDataContexts.getMetaData().getDatabase(databaseName); - ShardingSphereDatabase currentDatabase = metaDataContextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName); - metaDataPersistFacade.persistReloadDatabaseByDrop(databaseName, reloadDatabase, currentDatabase); - GenericSchemaManager.getToBeDroppedSchemaNames(reloadDatabase, currentDatabase).forEach(each -> metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema().drop(databaseName, each)); + database.getName(), false, switchingResource, metaDataContextManager.getMetaDataContexts()); + ShardingSphereDatabase reloadDatabase = reloadMetaDataContexts.getMetaData().getDatabase(database.getName()); + ShardingSphereDatabase currentDatabase = metaDataContextManager.getMetaDataContexts().getMetaData().getDatabase(database.getName()); + metaDataPersistFacade.persistReloadDatabaseByDrop(database.getName(), reloadDatabase, currentDatabase); + GenericSchemaManager.getToBeDroppedSchemaNames(reloadDatabase, currentDatabase).forEach(each -> metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema().drop(database.getName(), each)); metaDataContextManager.getMetaDataContexts().update(reloadMetaDataContexts); switchingResource.closeStaleDataSources(); clearServiceCache(); } @Override - public void alterSingleRuleConfiguration(final String databaseName, final RuleMetaData ruleMetaData) throws SQLException { + public void alterSingleRuleConfiguration(final ShardingSphereDatabase database, final RuleMetaData ruleMetaData) throws SQLException { SingleRuleConfiguration singleRuleConfig = ruleMetaData.getSingleRule(SingleRule.class).getConfiguration(); - Collection<MetaDataVersion> metaDataVersions = metaDataPersistFacade.getDatabaseRuleService().persist(databaseName, Collections.singleton(singleRuleConfig)); + Collection<MetaDataVersion> metaDataVersions = metaDataPersistFacade.getDatabaseRuleService().persist(database.getName(), Collections.singleton(singleRuleConfig)); metaDataPersistFacade.getMetaDataVersionService().switchActiveVersion(metaDataVersions); - metaDataContextManager.getDatabaseRuleConfigurationManager().alter(databaseName, singleRuleConfig); + metaDataContextManager.getDatabaseRuleConfigurationManager().alter(database.getName(), singleRuleConfig); clearServiceCache(); } @Override - public void alterRuleConfiguration(final String databaseName, final RuleConfiguration toBeAlteredRuleConfig) throws SQLException { + public void alterRuleConfiguration(final ShardingSphereDatabase database, final RuleConfiguration toBeAlteredRuleConfig) throws SQLException { if (null == toBeAlteredRuleConfig) { return; } - Collection<MetaDataVersion> metaDataVersions = metaDataPersistFacade.getDatabaseRuleService() - .persist(metaDataContextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getName(), Collections.singleton(toBeAlteredRuleConfig)); + Collection<MetaDataVersion> metaDataVersions = metaDataPersistFacade.getDatabaseRuleService().persist(database.getName(), Collections.singleton(toBeAlteredRuleConfig)); metaDataPersistFacade.getMetaDataVersionService().switchActiveVersion(metaDataVersions); for (MetaDataVersion each : metaDataVersions) { - Optional<AlterRuleItem> alterRuleItem = ruleItemChangedBuilder.build(databaseName, each.getActiveVersionNodePath(), each.getNextActiveVersion(), new RuleItemAlteredBuildExecutor()); + Optional<AlterRuleItem> alterRuleItem = ruleItemChangedBuilder.build(database.getName(), each.getActiveVersionNodePath(), each.getNextActiveVersion(), new RuleItemAlteredBuildExecutor()); if (alterRuleItem.isPresent()) { metaDataContextManager.getDatabaseRuleItemManager().alter(alterRuleItem.get()); } @@ -221,13 +220,13 @@ public final class StandaloneMetaDataManagerPersistService implements MetaDataMa } @Override - public void removeRuleConfigurationItem(final String databaseName, final RuleConfiguration toBeRemovedRuleConfig) throws SQLException { + public void removeRuleConfigurationItem(final ShardingSphereDatabase database, final RuleConfiguration toBeRemovedRuleConfig) throws SQLException { if (null == toBeRemovedRuleConfig) { return; } - Collection<MetaDataVersion> metaDataVersions = metaDataPersistFacade.getDatabaseRuleService().delete(databaseName, Collections.singleton(toBeRemovedRuleConfig)); + Collection<MetaDataVersion> metaDataVersions = metaDataPersistFacade.getDatabaseRuleService().delete(database.getName(), Collections.singleton(toBeRemovedRuleConfig)); for (MetaDataVersion each : metaDataVersions) { - Optional<DropRuleItem> dropRuleItem = ruleItemChangedBuilder.build(databaseName, each.getActiveVersionNodePath(), each.getNextActiveVersion(), new RuleItemDroppedBuildExecutor()); + Optional<DropRuleItem> dropRuleItem = ruleItemChangedBuilder.build(database.getName(), each.getActiveVersionNodePath(), each.getNextActiveVersion(), new RuleItemDroppedBuildExecutor()); if (dropRuleItem.isPresent()) { metaDataContextManager.getDatabaseRuleItemManager().drop(dropRuleItem.get()); } @@ -236,8 +235,8 @@ public final class StandaloneMetaDataManagerPersistService implements MetaDataMa } @Override - public void removeRuleConfiguration(final String databaseName, final String ruleName) { - metaDataPersistFacade.getDatabaseRuleService().delete(databaseName, ruleName); + public void removeRuleConfiguration(final ShardingSphereDatabase database, final String ruleName) { + metaDataPersistFacade.getDatabaseRuleService().delete(database.getName(), ruleName); clearServiceCache(); } diff --git a/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistServiceTest.java b/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistServiceTest.java index ef0b2e58b74..c83fbc26bdc 100644 --- a/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistServiceTest.java +++ b/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistServiceTest.java @@ -87,14 +87,14 @@ class StandaloneMetaDataManagerPersistServiceTest { @Test void assertDropDatabase() { - metaDataManagerPersistService.dropDatabase("foo_db"); + metaDataManagerPersistService.dropDatabase(new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList())); verify(metaDataContextManager.getDatabaseMetaDataManager()).dropDatabase("foo_db"); verify(metaDataPersistFacade.getDatabaseMetaDataFacade().getDatabase()).drop("foo_db"); } @Test void assertCreateSchema() { - metaDataManagerPersistService.createSchema("foo_db", "foo_schema"); + metaDataManagerPersistService.createSchema(new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()), "foo_schema"); verify(metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema()).add("foo_db", "foo_schema"); } @@ -102,7 +102,8 @@ class StandaloneMetaDataManagerPersistServiceTest { void assertAlterSchema() { DatabaseMetaDataPersistFacade databaseMetaDataFacade = mock(DatabaseMetaDataPersistFacade.class, RETURNS_DEEP_STUBS); when(metaDataPersistFacade.getDatabaseMetaDataFacade()).thenReturn(databaseMetaDataFacade); - metaDataManagerPersistService.alterSchema("foo_db", "foo_schema", Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), Collections.emptyList()); + metaDataManagerPersistService.alterSchema(new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()), + "foo_schema", Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), Collections.emptyList()); verify(databaseMetaDataFacade.getTable()).persist("foo_db", "foo_schema", new LinkedList<>()); } @@ -114,7 +115,7 @@ class StandaloneMetaDataManagerPersistServiceTest { when(metaDataContextManager.getMetaDataContexts().getMetaData()).thenReturn(metaData); DatabaseMetaDataPersistFacade databaseMetaDataFacade = mock(DatabaseMetaDataPersistFacade.class, RETURNS_DEEP_STUBS); when(metaDataPersistFacade.getDatabaseMetaDataFacade()).thenReturn(databaseMetaDataFacade); - metaDataManagerPersistService.renameSchema("foo_db", "foo_schema", "bar_schema"); + metaDataManagerPersistService.renameSchema(new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()), "foo_schema", "bar_schema"); verify(databaseMetaDataFacade.getSchema(), times(0)).add("foo_db", "bar_schema"); verify(databaseMetaDataFacade.getTable()).persist(eq("foo_db"), eq("bar_schema"), anyCollection()); verify(databaseMetaDataFacade.getView()).persist(eq("foo_db"), eq("bar_schema"), anyCollection()); @@ -131,7 +132,7 @@ class StandaloneMetaDataManagerPersistServiceTest { when(metaDataContextManager.getMetaDataContexts().getMetaData()).thenReturn(metaData); DatabaseMetaDataPersistFacade databaseMetaDataFacade = mock(DatabaseMetaDataPersistFacade.class, RETURNS_DEEP_STUBS); when(metaDataPersistFacade.getDatabaseMetaDataFacade()).thenReturn(databaseMetaDataFacade); - metaDataManagerPersistService.renameSchema("foo_db", "foo_schema", "bar_schema"); + metaDataManagerPersistService.renameSchema(new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()), "foo_schema", "bar_schema"); verify(databaseMetaDataFacade.getSchema()).add("foo_db", "bar_schema"); verify(databaseMetaDataFacade.getSchema()).drop("foo_db", "foo_schema"); } @@ -143,7 +144,7 @@ class StandaloneMetaDataManagerPersistServiceTest { when(database.getSchema("foo_schema")).thenReturn(new ShardingSphereSchema("foo_schema")); ShardingSphereMetaData metaData = new ShardingSphereMetaData(Collections.singleton(database), mock(), mock(), new ConfigurationProperties(new Properties())); when(metaDataContextManager.getMetaDataContexts().getMetaData()).thenReturn(metaData); - metaDataManagerPersistService.dropSchema("foo_db", Collections.singleton("foo_schema")); + metaDataManagerPersistService.dropSchema(new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()), Collections.singleton("foo_schema")); verify(metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema()).drop("foo_db", "foo_schema"); verify(metaDataContextManager.getDatabaseMetaDataManager()).dropSchema("foo_db", "foo_schema"); } @@ -153,14 +154,15 @@ class StandaloneMetaDataManagerPersistServiceTest { SingleRuleConfiguration singleRuleConfig = new SingleRuleConfiguration(); SingleRule singleRule = mock(SingleRule.class); when(singleRule.getConfiguration()).thenReturn(singleRuleConfig); - metaDataManagerPersistService.alterSingleRuleConfiguration("foo_db", new RuleMetaData(Collections.singleton(singleRule))); + metaDataManagerPersistService.alterSingleRuleConfiguration( + new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()), new RuleMetaData(Collections.singleton(singleRule))); verify(metaDataPersistFacade.getMetaDataVersionService()).switchActiveVersion(any()); verify(metaDataContextManager.getDatabaseRuleConfigurationManager()).alter("foo_db", singleRuleConfig); } @Test void assertAlterNullRuleConfiguration() throws SQLException { - metaDataManagerPersistService.alterRuleConfiguration("foo_db", null); + metaDataManagerPersistService.alterRuleConfiguration(new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()), null); verify(metaDataPersistFacade, times(0)).getMetaDataVersionService(); } @@ -177,14 +179,14 @@ class StandaloneMetaDataManagerPersistServiceTest { RuleItemChangedBuilder ruleItemChangedBuilder = mock(RuleItemChangedBuilder.class); when(ruleItemChangedBuilder.build(eq("foo_db"), any(), anyInt(), any())).thenReturn(Optional.of(alterRuleItem)); setRuleConfigurationEventBuilder(ruleItemChangedBuilder); - metaDataManagerPersistService.alterRuleConfiguration("foo_db", ruleConfig); + metaDataManagerPersistService.alterRuleConfiguration(database, ruleConfig); verify(metaDataPersistFacade.getMetaDataVersionService()).switchActiveVersion(metaDataVersion); verify(metaDataContextManager.getDatabaseRuleItemManager()).alter(any(AlterRuleItem.class)); } @Test void assertRemoveNullRuleConfigurationItem() throws SQLException { - metaDataManagerPersistService.removeRuleConfigurationItem("foo_db", null); + metaDataManagerPersistService.removeRuleConfigurationItem(new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()), null); verify(metaDataPersistFacade, times(0)).getMetaDataVersionService(); } @@ -197,13 +199,13 @@ class StandaloneMetaDataManagerPersistServiceTest { DropRuleItem dropRuleItem = mock(DropRuleItem.class); when(ruleItemChangedBuilder.build(eq("foo_db"), any(), anyInt(), any())).thenReturn(Optional.of(dropRuleItem)); setRuleConfigurationEventBuilder(ruleItemChangedBuilder); - metaDataManagerPersistService.removeRuleConfigurationItem("foo_db", ruleConfig); + metaDataManagerPersistService.removeRuleConfigurationItem(new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()), ruleConfig); verify(metaDataContextManager.getDatabaseRuleItemManager()).drop(any(DropRuleItem.class)); } @Test void assertRemoveRuleConfiguration() { - metaDataManagerPersistService.removeRuleConfiguration("foo_db", "foo_rule"); + metaDataManagerPersistService.removeRuleConfiguration(new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()), "foo_rule"); verify(metaDataPersistFacade.getDatabaseRuleService()).delete("foo_db", "foo_rule"); } @@ -226,13 +228,13 @@ class StandaloneMetaDataManagerPersistServiceTest { @Test void assertCreateTable() { ShardingSphereTable table = new ShardingSphereTable("foo_tbl", Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), TableType.TABLE); - metaDataManagerPersistService.createTable("foo_db", "foo_schema", table); + metaDataManagerPersistService.createTable(new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()), "foo_schema", table); verify(metaDataPersistFacade.getDatabaseMetaDataFacade().getTable()).persist("foo_db", "foo_schema", Collections.singleton(table)); } @Test void assertDropTable() { - metaDataManagerPersistService.dropTable("foo_db", "foo_schema", "foo_tbl"); + metaDataManagerPersistService.dropTable(new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()), "foo_schema", "foo_tbl"); verify(metaDataPersistFacade.getDatabaseMetaDataFacade().getTable()).drop("foo_db", "foo_schema", "foo_tbl"); } diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/DropDatabaseBackendHandler.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/DropDatabaseBackendHandler.java index c6de2b3f49a..463c0b968be 100644 --- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/DropDatabaseBackendHandler.java +++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/DropDatabaseBackendHandler.java @@ -26,6 +26,7 @@ import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry; import org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions; import org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.DatabaseDropNotExistsException; import org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.UnknownDatabaseException; +import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase; import org.apache.shardingsphere.infra.metadata.user.Grantee; import org.apache.shardingsphere.proxy.backend.context.ProxyContext; import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler; @@ -54,8 +55,8 @@ public final class DropDatabaseBackendHandler implements ProxyBackendHandler { connectionSession.setCurrentDatabaseName(null); } if (ProxyContext.getInstance().databaseExists(sqlStatement.getDatabaseName())) { - String databaseName = ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabase(sqlStatement.getDatabaseName()).getName(); - ProxyContext.getInstance().getContextManager().getPersistServiceFacade().getMetaDataManagerPersistService().dropDatabase(databaseName); + ShardingSphereDatabase database = ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabase(sqlStatement.getDatabaseName()); + ProxyContext.getInstance().getContextManager().getPersistServiceFacade().getMetaDataManagerPersistService().dropDatabase(database); } return new UpdateResponseHeader(sqlStatement); } diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/YamlDatabaseConfigurationImportExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/YamlDatabaseConfigurationImportExecutor.java index 0e590cb6625..e427faa3106 100644 --- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/YamlDatabaseConfigurationImportExecutor.java +++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/YamlDatabaseConfigurationImportExecutor.java @@ -85,7 +85,7 @@ public final class YamlDatabaseConfigurationImportExecutor { importDataSources(databaseName, yamlConfig.getDataSources()); importRules(databaseName, yamlConfig.getRules()); } catch (final ShardingSphereSQLException ex) { - dropDatabase(contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getName()); + dropDatabase(contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName)); throw ex; } } @@ -160,7 +160,7 @@ public final class YamlDatabaseConfigurationImportExecutor { return result; } - private void dropDatabase(final String databaseName) { - contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().dropDatabase(databaseName); + private void dropDatabase(final ShardingSphereDatabase database) { + contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().dropDatabase(database); } }