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 0397269891a Refactor GenericSchemaManager (#33858)
0397269891a is described below
commit 0397269891a7a909630062839c938b8b213f091f
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Dec 1 13:19:53 2024 +0800
Refactor GenericSchemaManager (#33858)
---
.../schema/manager/GenericSchemaManager.java | 20 ++++++++++----------
.../schema/manager/GenericSchemaManagerTest.java | 8 ++++----
.../metadata/persist/MetaDataPersistService.java | 15 ++++++---------
.../metadata/persist/MetaDataPersistServiceTest.java | 8 ++++----
4 files changed, 24 insertions(+), 27 deletions(-)
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/manager/GenericSchemaManager.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/manager/GenericSchemaManager.java
index 4536a71d19d..6dc179580c0 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/manager/GenericSchemaManager.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/manager/GenericSchemaManager.java
@@ -34,21 +34,21 @@ import java.util.stream.Collectors;
public final class GenericSchemaManager {
/**
- * Get to be added schemas.
+ * Get to be altered schemas with tables added.
*
* @param reloadDatabase reload database
* @param currentDatabase current database
- * @return to be added schemas
+ * @return to be altered schemas with tables added
*/
- public static Collection<ShardingSphereSchema> getToBeAddedSchemas(final
ShardingSphereDatabase reloadDatabase, final ShardingSphereDatabase
currentDatabase) {
+ public static Collection<ShardingSphereSchema>
getToBeAlteredSchemasWithTablesAdded(final ShardingSphereDatabase
reloadDatabase, final ShardingSphereDatabase currentDatabase) {
Collection<ShardingSphereSchema> result = new LinkedList<>();
reloadDatabase.getAllSchemas().stream().filter(each ->
!currentDatabase.containsSchema(each.getName())).forEach(result::add);
reloadDatabase.getAllSchemas().stream().filter(each ->
currentDatabase.containsSchema(each.getName())).collect(Collectors.toList())
- .forEach(each -> result.add(getToBeAddedSchema(each,
currentDatabase.getSchema(each.getName()))));
+ .forEach(each ->
result.add(getToBeAlteredSchemaWithTablesAdded(each,
currentDatabase.getSchema(each.getName()))));
return result;
}
- private static ShardingSphereSchema getToBeAddedSchema(final
ShardingSphereSchema reloadSchema, final ShardingSphereSchema currentSchema) {
+ private static ShardingSphereSchema
getToBeAlteredSchemaWithTablesAdded(final ShardingSphereSchema reloadSchema,
final ShardingSphereSchema currentSchema) {
return new ShardingSphereSchema(currentSchema.getName(),
getToBeAddedTables(reloadSchema, currentSchema), new LinkedList<>());
}
@@ -64,20 +64,20 @@ public final class GenericSchemaManager {
}
/**
- * Get to be dropped tables by schemas.
+ * Get to be altered schemas with tables dropped.
*
* @param reloadDatabase reload database
* @param currentDatabase current database
- * @return to be dropped table
+ * @return to be altered schemas with tables dropped
*/
- public static Collection<ShardingSphereSchema>
getToBeDroppedTablesBySchemas(final ShardingSphereDatabase reloadDatabase,
final ShardingSphereDatabase currentDatabase) {
+ public static Collection<ShardingSphereSchema>
getToBeAlteredSchemasWithTablesDropped(final ShardingSphereDatabase
reloadDatabase, final ShardingSphereDatabase currentDatabase) {
Collection<ShardingSphereSchema> result = new LinkedList<>();
currentDatabase.getAllSchemas().stream().filter(each ->
reloadDatabase.containsSchema(each.getName())).collect(Collectors.toMap(ShardingSphereSchema::getName,
each -> each))
- .forEach((key, value) ->
result.add(getToBeDroppedTablesBySchema(reloadDatabase.getSchema(key), value)));
+ .forEach((key, value) ->
result.add(getToBeAlteredSchemaWithTablesDropped(reloadDatabase.getSchema(key),
value)));
return result;
}
- private static ShardingSphereSchema getToBeDroppedTablesBySchema(final
ShardingSphereSchema reloadSchema, final ShardingSphereSchema currentSchema) {
+ private static ShardingSphereSchema
getToBeAlteredSchemaWithTablesDropped(final ShardingSphereSchema reloadSchema,
final ShardingSphereSchema currentSchema) {
return new ShardingSphereSchema(currentSchema.getName(),
getToBeDroppedTables(reloadSchema, currentSchema), new LinkedList<>());
}
diff --git
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/manager/GenericSchemaManagerTest.java
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/manager/GenericSchemaManagerTest.java
index 36d907c0c9b..a55bfed6124 100644
---
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/manager/GenericSchemaManagerTest.java
+++
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/manager/GenericSchemaManagerTest.java
@@ -35,7 +35,7 @@ import static org.mockito.Mockito.when;
class GenericSchemaManagerTest {
@Test
- void assertGetToBeAddedSchemas() {
+ void assertGetToBeAlteredSchemasWithTablesAdded() {
ShardingSphereDatabase reloadDatabase =
mock(ShardingSphereDatabase.class);
when(reloadDatabase.getAllSchemas()).thenReturn(Collections.singleton(new
ShardingSphereSchema("foo_schema",
Collections.singleton(new ShardingSphereTable("foo_tbl",
Collections.emptyList(), Collections.emptyList(), Collections.emptyList())),
Collections.emptyList())));
@@ -44,21 +44,21 @@ class GenericSchemaManagerTest {
when(currentDatabase.getAllSchemas()).thenReturn(Collections.singleton(currentSchemas));
when(currentDatabase.containsSchema("foo_schema")).thenReturn(true);
when(currentDatabase.getSchema("foo_schema")).thenReturn(currentSchemas);
- Collection<ShardingSphereSchema> actual =
GenericSchemaManager.getToBeAddedSchemas(reloadDatabase, currentDatabase);
+ Collection<ShardingSphereSchema> actual =
GenericSchemaManager.getToBeAlteredSchemasWithTablesAdded(reloadDatabase,
currentDatabase);
assertThat(actual.size(), is(1));
assertThat(actual.iterator().next().getAllTables().size(), is(1));
assertTrue(actual.iterator().next().containsTable("foo_tbl"));
}
@Test
- void assertGetToBeDroppedTablesBySchemas() {
+ void assertGetToBeAlteredSchemasWithTablesDropped() {
ShardingSphereDatabase reloadDatabase =
mock(ShardingSphereDatabase.class);
when(reloadDatabase.containsSchema("foo_schema")).thenReturn(true);
when(reloadDatabase.getSchema("foo_schema")).thenReturn(new
ShardingSphereSchema("foo_schema", Collections.emptyList(),
Collections.emptyList()));
ShardingSphereDatabase currentDatabase =
mock(ShardingSphereDatabase.class);
when(currentDatabase.getAllSchemas()).thenReturn(Collections.singleton(new
ShardingSphereSchema("foo_schema",
Collections.singleton(new ShardingSphereTable("foo_tbl",
Collections.emptyList(), Collections.emptyList(), Collections.emptyList())),
Collections.emptyList())));
- Collection<ShardingSphereSchema> actual =
GenericSchemaManager.getToBeDroppedTablesBySchemas(reloadDatabase,
currentDatabase);
+ Collection<ShardingSphereSchema> actual =
GenericSchemaManager.getToBeAlteredSchemasWithTablesDropped(reloadDatabase,
currentDatabase);
assertThat(actual.size(), is(1));
assertThat(actual.iterator().next().getAllTables().size(), is(1));
assertTrue(actual.iterator().next().containsTable("foo_tbl"));
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistService.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistService.java
index 8267488ab96..8ac98009c1c 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistService.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistService.java
@@ -26,7 +26,6 @@ import
org.apache.shardingsphere.infra.datasource.pool.props.creator.DataSourceP
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.schema.manager.GenericSchemaManager;
-import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import
org.apache.shardingsphere.metadata.persist.data.ShardingSphereDataPersistService;
@@ -149,10 +148,9 @@ public final class MetaDataPersistService {
* @param currentDatabase current database
*/
public void persistReloadDatabaseByAlter(final String databaseName, final
ShardingSphereDatabase reloadDatabase, final ShardingSphereDatabase
currentDatabase) {
- Collection<ShardingSphereSchema> toBeDeletedSchemas =
GenericSchemaManager.getToBeDroppedTablesBySchemas(reloadDatabase,
currentDatabase);
- Collection<ShardingSphereSchema> toBeAddedSchemas =
GenericSchemaManager.getToBeAddedSchemas(reloadDatabase, currentDatabase);
- toBeAddedSchemas.forEach(each ->
databaseMetaDataFacade.getSchema().alterByRuleAltered(databaseName, each));
- toBeDeletedSchemas.forEach(each ->
databaseMetaDataFacade.getTable().drop(databaseName, each.getName(),
each.getAllTables()));
+
GenericSchemaManager.getToBeAlteredSchemasWithTablesAdded(reloadDatabase,
currentDatabase).forEach(each ->
databaseMetaDataFacade.getSchema().alterByRuleAltered(databaseName, each));
+
GenericSchemaManager.getToBeAlteredSchemasWithTablesDropped(reloadDatabase,
currentDatabase)
+ .forEach(each ->
databaseMetaDataFacade.getTable().drop(databaseName, each.getName(),
each.getAllTables()));
}
/**
@@ -163,9 +161,8 @@ public final class MetaDataPersistService {
* @param currentDatabase current database
*/
public void persistReloadDatabaseByDrop(final String databaseName, final
ShardingSphereDatabase reloadDatabase, final ShardingSphereDatabase
currentDatabase) {
- Collection<ShardingSphereSchema> toBeAlterSchemas =
GenericSchemaManager.getToBeDroppedTablesBySchemas(reloadDatabase,
currentDatabase);
- Collection<ShardingSphereSchema> toBeAddedSchemas =
GenericSchemaManager.getToBeAddedSchemas(reloadDatabase, currentDatabase);
- toBeAddedSchemas.forEach(each ->
databaseMetaDataFacade.getSchema().alterByRuleDropped(databaseName, each));
- toBeAlterSchemas.forEach(each ->
databaseMetaDataFacade.getTable().drop(databaseName, each.getName(),
each.getAllTables()));
+
GenericSchemaManager.getToBeAlteredSchemasWithTablesAdded(reloadDatabase,
currentDatabase).forEach(each ->
databaseMetaDataFacade.getSchema().alterByRuleDropped(databaseName, each));
+
GenericSchemaManager.getToBeAlteredSchemasWithTablesDropped(reloadDatabase,
currentDatabase)
+ .forEach(each ->
databaseMetaDataFacade.getTable().drop(databaseName, each.getName(),
each.getAllTables()));
}
}
diff --git
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistServiceTest.java
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistServiceTest.java
index e7f0f6a1f62..54aecd03821 100644
---
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistServiceTest.java
+++
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistServiceTest.java
@@ -148,8 +148,8 @@ class MetaDataPersistServiceTest {
void assertPersistReloadDatabaseByAlter() {
ShardingSphereSchema toBeDeletedSchema = new
ShardingSphereSchema("to_be_deleted");
ShardingSphereSchema toBeAddedSchema = new
ShardingSphereSchema("to_be_added");
- when(GenericSchemaManager.getToBeDroppedTablesBySchemas(any(),
any())).thenReturn(Collections.singleton(toBeDeletedSchema));
- when(GenericSchemaManager.getToBeAddedSchemas(any(),
any())).thenReturn(Collections.singleton(toBeAddedSchema));
+
when(GenericSchemaManager.getToBeAlteredSchemasWithTablesDropped(any(),
any())).thenReturn(Collections.singleton(toBeDeletedSchema));
+ when(GenericSchemaManager.getToBeAlteredSchemasWithTablesAdded(any(),
any())).thenReturn(Collections.singleton(toBeAddedSchema));
metaDataPersistService.persistReloadDatabaseByAlter("foo_db",
mock(ShardingSphereDatabase.class), mock(ShardingSphereDatabase.class));
verify(databaseMetaDataFacade.getSchema()).alterByRuleAltered("foo_db",
toBeAddedSchema);
verify(databaseMetaDataFacade.getTable()).drop(eq("foo_db"),
eq("to_be_deleted"), anyCollection());
@@ -159,8 +159,8 @@ class MetaDataPersistServiceTest {
void assertPersistReloadDatabaseByDrop() {
ShardingSphereSchema toBeDeletedSchema = new
ShardingSphereSchema("to_be_deleted");
ShardingSphereSchema toBeAlterSchema = new
ShardingSphereSchema("to_be_altered");
- when(GenericSchemaManager.getToBeDroppedTablesBySchemas(any(),
any())).thenReturn(Collections.singleton(toBeDeletedSchema));
- when(GenericSchemaManager.getToBeAddedSchemas(any(),
any())).thenReturn(Collections.singleton(toBeAlterSchema));
+
when(GenericSchemaManager.getToBeAlteredSchemasWithTablesDropped(any(),
any())).thenReturn(Collections.singleton(toBeDeletedSchema));
+ when(GenericSchemaManager.getToBeAlteredSchemasWithTablesAdded(any(),
any())).thenReturn(Collections.singleton(toBeAlterSchema));
metaDataPersistService.persistReloadDatabaseByDrop("foo_db",
mock(ShardingSphereDatabase.class), mock(ShardingSphereDatabase.class));
verify(databaseMetaDataFacade.getSchema()).alterByRuleDropped("foo_db",
toBeAlterSchema);
verify(databaseMetaDataFacade.getTable()).drop(eq("foo_db"),
eq("to_be_deleted"), anyCollection());