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 <zhangli...@apache.org> 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));