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 b292198cb81 Refactor
StandaloneMetaDataManagerPersistService.alterSchema() (#34521)
b292198cb81 is described below
commit b292198cb81aded47175bd5728ccfc1c5494c689
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Jan 27 12:55:21 2025 +0800
Refactor StandaloneMetaDataManagerPersistService.alterSchema() (#34521)
---
.../StandaloneMetaDataManagerPersistService.java | 54 ++--------------------
1 file changed, 4 insertions(+), 50 deletions(-)
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 37b7c602582..66636bc24c0 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
@@ -102,10 +102,11 @@ public final class
StandaloneMetaDataManagerPersistService implements MetaDataMa
databaseMetaDataFacade.getView().persist(databaseName, schemaName,
alteredViews);
droppedTables.forEach(each ->
databaseMetaDataFacade.getTable().drop(databaseName, schemaName, each));
droppedViews.forEach(each ->
databaseMetaDataFacade.getView().delete(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));
ShardingSphereMetaData metaData =
metaDataContextManager.getMetaDataContexts().getMetaData();
- ShardingSphereDatabase database = metaData.getDatabase(databaseName);
- addDataNode(database, logicDataSourceName, schemaName, alteredTables,
alteredViews);
- removeDataNode(database, schemaName, droppedTables, droppedViews);
metaData.getGlobalRuleMetaData().getRules().forEach(each ->
((GlobalRule) each).refresh(metaData.getAllDatabases(),
GlobalRuleChangedType.SCHEMA_CHANGED));
}
@@ -141,32 +142,6 @@ public final class StandaloneMetaDataManagerPersistService
implements MetaDataMa
}
}
- private void addDataNode(final ShardingSphereDatabase database, final
String logicDataSourceName, final String schemaName, final
Collection<ShardingSphereTable> toBeAddedTables,
- final Collection<ShardingSphereView>
toBeAddedViews) {
- addTablesToDataNode(database, schemaName, logicDataSourceName,
toBeAddedTables);
- addViewsToDataNode(database, schemaName, logicDataSourceName,
toBeAddedTables, toBeAddedViews);
- }
-
- private void addTablesToDataNode(final ShardingSphereDatabase database,
final String schemaName, final String logicDataSourceName, final
Collection<ShardingSphereTable> toBeAddedTables) {
- for (ShardingSphereTable each : toBeAddedTables) {
- if (!Strings.isNullOrEmpty(logicDataSourceName) &&
TableRefreshUtils.isSingleTable(each.getName(), database)) {
-
database.getRuleMetaData().getAttributes(MutableDataNodeRuleAttribute.class).forEach(rule
-> rule.put(logicDataSourceName, schemaName, each.getName()));
- }
- database.getSchema(schemaName).putTable(each);
- }
- }
-
- private void addViewsToDataNode(final ShardingSphereDatabase database,
final String schemaName, final String logicDataSourceName,
- final Collection<ShardingSphereTable>
toBeAddedTables, final Collection<ShardingSphereView> toBeAddedViews) {
- for (ShardingSphereView view : toBeAddedViews) {
- if (!Strings.isNullOrEmpty(logicDataSourceName) &&
TableRefreshUtils.isSingleTable(view.getName(), database)) {
-
database.getRuleMetaData().getAttributes(MutableDataNodeRuleAttribute.class).forEach(each
-> each.put(logicDataSourceName, schemaName, view.getName()));
- }
- toBeAddedTables.stream().filter(each ->
each.getName().toLowerCase().equals(view.getName())).findFirst().ifPresent(optional
-> database.getSchema(schemaName).putTable(optional));
- database.getSchema(schemaName).putView(view);
- }
- }
-
private void removeSchemaMetaData(final ShardingSphereDatabase database,
final String schemaName) {
ShardingSphereSchema schema = new ShardingSphereSchema(schemaName,
database.getSchema(schemaName).getAllTables(),
database.getSchema(schemaName).getAllViews());
database.dropSchema(schemaName);
@@ -178,27 +153,6 @@ public final class StandaloneMetaDataManagerPersistService
implements MetaDataMa
tobeRemovedTables.forEach(each -> ruleAttributes.forEach(rule ->
rule.remove(schemaNames, each)));
}
- private void removeDataNode(final ShardingSphereDatabase database, final
String schemaName, final Collection<String> tobeRemovedTables, final
Collection<String> tobeRemovedViews) {
- removeTablesToDataNode(database, schemaName, tobeRemovedTables);
- removeViewsToDataNode(database, schemaName, tobeRemovedTables,
tobeRemovedViews);
- }
-
- private void removeDataNode(final Collection<MutableDataNodeRuleAttribute>
ruleAttributes, final String schemaName, final Collection<String>
tobeRemovedTables) {
- tobeRemovedTables.forEach(each -> ruleAttributes.forEach(rule ->
rule.remove(schemaName, each)));
- }
-
- private void removeTablesToDataNode(final ShardingSphereDatabase database,
final String schemaName, final Collection<String> toBeDroppedTables) {
-
removeDataNode(database.getRuleMetaData().getAttributes(MutableDataNodeRuleAttribute.class),
schemaName, toBeDroppedTables);
- toBeDroppedTables.forEach(each ->
database.getSchema(schemaName).removeTable(each));
- }
-
- private void removeViewsToDataNode(final ShardingSphereDatabase database,
final String schemaName, final Collection<String> toBeDroppedTables, final
Collection<String> toBeDroppedViews) {
-
removeDataNode(database.getRuleMetaData().getAttributes(MutableDataNodeRuleAttribute.class),
schemaName, toBeDroppedViews);
- ShardingSphereSchema schema = database.getSchema(schemaName);
- toBeDroppedTables.forEach(schema::removeTable);
- toBeDroppedViews.forEach(schema::removeView);
- }
-
@Override
public void dropSchema(final String databaseName, final Collection<String>
schemaNames) {
schemaNames.forEach(each -> dropSchema(databaseName, each));