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 23cde702b33 Refactor MetaDataManagerPersistService.alterSchema() 
(#34475)
23cde702b33 is described below

commit 23cde702b33360d5edd78d34ac46f4022eb2493a
Author: Liang Zhang <zhangli...@apache.org>
AuthorDate: Fri Jan 24 23:55:39 2025 +0800

    Refactor MetaDataManagerPersistService.alterSchema() (#34475)
    
    * Refactor MetaDataManagerPersistService.alterSchema()
    
    * Refactor MetaDataManagerPersistService.alterSchema()
---
 .../schema/pojo/AlterSchemaMetaDataPOJO.java       | 54 ----------------------
 .../type/AlterViewFederationMetaDataRefresher.java | 15 +++---
 .../CreateViewFederationMetaDataRefresher.java     |  8 ++--
 .../type/DropViewFederationMetaDataRefresher.java  | 13 +++---
 .../index/AlterIndexPushDownMetaDataRefresher.java |  7 ++-
 .../CreateIndexPushDownMetaDataRefresher.java      |  6 +--
 .../index/DropIndexPushDownMetaDataRefresher.java  |  6 +--
 .../table/AlterTablePushDownMetaDataRefresher.java | 13 +++---
 .../RenameTablePushDownMetaDataRefresher.java      | 10 ++--
 .../view/AlterViewPushDownMetaDataRefresher.java   | 21 +++++----
 .../view/CreateViewPushDownMetaDataRefresher.java  |  8 ++--
 .../view/DropViewPushDownMetaDataRefresher.java    | 17 ++++---
 .../service/MetaDataManagerPersistService.java     | 13 ++++--
 .../ClusterMetaDataManagerPersistService.java      | 16 +++----
 .../ClusterMetaDataManagerPersistServiceTest.java  |  3 +-
 .../StandaloneMetaDataManagerPersistService.java   | 19 ++++----
 ...tandaloneMetaDataManagerPersistServiceTest.java |  3 +-
 17 files changed, 91 insertions(+), 141 deletions(-)

diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/pojo/AlterSchemaMetaDataPOJO.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/pojo/AlterSchemaMetaDataPOJO.java
deleted file mode 100644
index b63a5d3c19c..00000000000
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/pojo/AlterSchemaMetaDataPOJO.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.infra.metadata.database.schema.pojo;
-
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereView;
-
-import java.util.Collection;
-import java.util.LinkedList;
-
-/**
- * Alter schema metadata pojo.
- */
-@RequiredArgsConstructor
-@Getter
-public final class AlterSchemaMetaDataPOJO {
-    
-    private final String databaseName;
-    
-    private final String schemaName;
-    
-    private String logicDataSourceName;
-    
-    private final Collection<ShardingSphereTable> alteredTables = new 
LinkedList<>();
-    
-    private final Collection<ShardingSphereView> alteredViews = new 
LinkedList<>();
-    
-    private final Collection<String> droppedTables = new LinkedList<>();
-    
-    private final Collection<String> droppedViews = new LinkedList<>();
-    
-    public AlterSchemaMetaDataPOJO(final String databaseName, final String 
schemaName, final Collection<String> logicDataSourceNames) {
-        this.databaseName = databaseName;
-        this.schemaName = schemaName;
-        this.logicDataSourceName = logicDataSourceNames.isEmpty() ? null : 
logicDataSourceNames.iterator().next();
-    }
-}
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 256b4abc02d..238922b8aa3 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
@@ -19,13 +19,15 @@ package 
org.apache.shardingsphere.mode.metadata.refresher.metadata.federation.ty
 
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereView;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaMetaDataPOJO;
 import 
org.apache.shardingsphere.mode.metadata.refresher.metadata.federation.FederationMetaDataRefresher;
 import 
org.apache.shardingsphere.mode.metadata.refresher.metadata.util.TableRefreshUtils;
 import 
org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.AlterViewStatement;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedList;
 import java.util.Optional;
 
 /**
@@ -36,16 +38,17 @@ public final class AlterViewFederationMetaDataRefresher 
implements FederationMet
     @Override
     public void refresh(final MetaDataManagerPersistService 
metaDataManagerPersistService, final ShardingSphereDatabase database, final 
String schemaName, final AlterViewStatement sqlStatement) {
         String viewName = 
TableRefreshUtils.getTableName(sqlStatement.getView().getTableName().getIdentifier(),
 sqlStatement.getDatabaseType());
-        AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new 
AlterSchemaMetaDataPOJO(database.getName(), schemaName);
         Optional<SimpleTableSegment> renameView = sqlStatement.getRenameView();
+        Collection<ShardingSphereView> alteredViews = new LinkedList<>();
+        Collection<String> droppedViews = new LinkedList<>();
         if (renameView.isPresent()) {
             String renameViewName = 
renameView.get().getTableName().getIdentifier().getValue();
             String originalView = 
database.getSchema(schemaName).getView(viewName).getViewDefinition();
-            alterSchemaMetaDataPOJO.getAlteredViews().add(new 
ShardingSphereView(renameViewName, originalView));
-            alterSchemaMetaDataPOJO.getDroppedViews().add(viewName);
+            alteredViews.add(new ShardingSphereView(renameViewName, 
originalView));
+            droppedViews.add(viewName);
         }
-        sqlStatement.getViewDefinition().ifPresent(optional -> 
alterSchemaMetaDataPOJO.getAlteredViews().add(new ShardingSphereView(viewName, 
optional)));
-        metaDataManagerPersistService.alterSchema(alterSchemaMetaDataPOJO);
+        sqlStatement.getViewDefinition().ifPresent(optional -> 
alteredViews.add(new ShardingSphereView(viewName, optional)));
+        metaDataManagerPersistService.alterSchema(database.getName(), 
schemaName, null, Collections.emptyList(), alteredViews, droppedViews, 
Collections.emptyList());
     }
     
     @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 50688c6fff5..769f3a06164 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
@@ -19,12 +19,13 @@ package 
org.apache.shardingsphere.mode.metadata.refresher.metadata.federation.ty
 
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereView;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaMetaDataPOJO;
 import 
org.apache.shardingsphere.mode.metadata.refresher.metadata.federation.FederationMetaDataRefresher;
 import 
org.apache.shardingsphere.mode.metadata.refresher.metadata.util.TableRefreshUtils;
 import 
org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.CreateViewStatement;
 
+import java.util.Collections;
+
 /**
  * Create view federation meta data refresher.
  */
@@ -33,9 +34,8 @@ 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());
-        AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new 
AlterSchemaMetaDataPOJO(database.getName(), schemaName);
-        alterSchemaMetaDataPOJO.getAlteredViews().add(new 
ShardingSphereView(viewName, sqlStatement.getViewDefinition()));
-        metaDataManagerPersistService.alterSchema(alterSchemaMetaDataPOJO);
+        metaDataManagerPersistService.alterSchema(database.getName(), 
schemaName, null,
+                Collections.emptyList(), Collections.singleton(new 
ShardingSphereView(viewName, sqlStatement.getViewDefinition())), 
Collections.emptyList(), Collections.emptyList());
     }
     
     @Override
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 6398b93b09d..e9c0b8dc449 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
@@ -18,12 +18,14 @@
 package 
org.apache.shardingsphere.mode.metadata.refresher.metadata.federation.type;
 
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaMetaDataPOJO;
 import 
org.apache.shardingsphere.mode.metadata.refresher.metadata.federation.FederationMetaDataRefresher;
 import 
org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService;
-import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.DropViewStatement;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.stream.Collectors;
+
 /**
  * Drop view federation meta data refresher.
  */
@@ -31,11 +33,8 @@ public final class DropViewFederationMetaDataRefresher 
implements FederationMeta
     
     @Override
     public void refresh(final MetaDataManagerPersistService 
metaDataManagerPersistService, final ShardingSphereDatabase database, final 
String schemaName, final DropViewStatement sqlStatement) {
-        AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new 
AlterSchemaMetaDataPOJO(database.getName(), schemaName);
-        for (SimpleTableSegment each : sqlStatement.getViews()) {
-            
alterSchemaMetaDataPOJO.getDroppedViews().add(each.getTableName().getIdentifier().getValue());
-        }
-        metaDataManagerPersistService.alterSchema(alterSchemaMetaDataPOJO);
+        Collection<String> droppedViews = 
sqlStatement.getViews().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList());
+        metaDataManagerPersistService.alterSchema(database.getName(), 
schemaName, null, 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 ff0aaa2b0e6..51e2c8d26a5 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
@@ -27,13 +27,13 @@ import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereIndex;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaMetaDataPOJO;
 import 
org.apache.shardingsphere.mode.metadata.refresher.metadata.pushdown.PushDownMetaDataRefresher;
 import 
org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.index.IndexSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.AlterIndexStatement;
 
 import java.util.Collection;
+import java.util.Collections;
 import java.util.LinkedList;
 import java.util.Optional;
 
@@ -61,9 +61,8 @@ public final class AlterIndexPushDownMetaDataRefresher 
implements PushDownMetaDa
         newTable.removeIndex(indexName);
         String renameIndexName = 
renameIndex.get().getIndexName().getIdentifier().getValue();
         newTable.putIndex(new ShardingSphereIndex(renameIndexName, new 
LinkedList<>(), false));
-        AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new 
AlterSchemaMetaDataPOJO(database.getName(), actualSchemaName);
-        alterSchemaMetaDataPOJO.getAlteredTables().add(newTable);
-        metaDataManagerPersistService.alterSchema(alterSchemaMetaDataPOJO);
+        metaDataManagerPersistService.alterSchema(database.getName(), 
actualSchemaName, null,
+                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 094aeded9d6..67727f9c1b7 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
@@ -26,13 +26,13 @@ import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereIndex;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaMetaDataPOJO;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.util.IndexMetaDataUtils;
 import 
org.apache.shardingsphere.mode.metadata.refresher.metadata.pushdown.PushDownMetaDataRefresher;
 import 
org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.CreateIndexStatement;
 
 import java.util.Collection;
+import java.util.Collections;
 import java.util.LinkedList;
 
 /**
@@ -53,9 +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));
-        AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new 
AlterSchemaMetaDataPOJO(database.getName(), schemaName);
-        alterSchemaMetaDataPOJO.getAlteredTables().add(newTable);
-        metaDataManagerPersistService.alterSchema(alterSchemaMetaDataPOJO);
+        metaDataManagerPersistService.alterSchema(database.getName(), 
schemaName, null, 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 fc916e15503..eeb19580a73 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
@@ -26,7 +26,6 @@ import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.schema.QualifiedTable;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaMetaDataPOJO;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.util.IndexMetaDataUtils;
 import 
org.apache.shardingsphere.mode.metadata.refresher.metadata.pushdown.PushDownMetaDataRefresher;
 import 
org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService;
@@ -58,9 +57,8 @@ 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());
-            AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new 
AlterSchemaMetaDataPOJO(database.getName(), actualSchemaName);
-            alterSchemaMetaDataPOJO.getAlteredTables().add(newTable);
-            metaDataManagerPersistService.alterSchema(alterSchemaMetaDataPOJO);
+            metaDataManagerPersistService.alterSchema(database.getName(), 
actualSchemaName, null,
+                    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/table/AlterTablePushDownMetaDataRefresher.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/AlterTablePushDownMetaDataRefresher.java
index 1bed6ee4b8e..5232ea1f46b 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
@@ -25,7 +25,6 @@ import 
org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericS
 import 
org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericSchemaBuilderMaterial;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaMetaDataPOJO;
 import 
org.apache.shardingsphere.infra.rule.attribute.datanode.MutableDataNodeRuleAttribute;
 import 
org.apache.shardingsphere.mode.metadata.refresher.metadata.pushdown.PushDownMetaDataRefresher;
 import 
org.apache.shardingsphere.mode.metadata.refresher.metadata.util.TableRefreshUtils;
@@ -48,15 +47,17 @@ public final class AlterTablePushDownMetaDataRefresher 
implements PushDownMetaDa
     public void refresh(final MetaDataManagerPersistService 
metaDataManagerPersistService, final ShardingSphereDatabase database, final 
Collection<String> logicDataSourceNames,
                         final String schemaName, final DatabaseType 
databaseType, final AlterTableStatement sqlStatement, final 
ConfigurationProperties props) throws SQLException {
         String tableName = 
TableRefreshUtils.getTableName(sqlStatement.getTable().getTableName().getIdentifier(),
 databaseType);
-        AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new 
AlterSchemaMetaDataPOJO(database.getName(), schemaName, logicDataSourceNames);
+        Collection<ShardingSphereTable> alteredTables = new LinkedList<>();
+        Collection<String> droppedTables = new LinkedList<>();
         if (sqlStatement.getRenameTable().isPresent()) {
             String renameTable = 
sqlStatement.getRenameTable().get().getTableName().getIdentifier().getValue();
-            alterSchemaMetaDataPOJO.getAlteredTables().add(getTable(database, 
logicDataSourceNames, schemaName, renameTable, props));
-            alterSchemaMetaDataPOJO.getDroppedTables().add(tableName);
+            alteredTables.add(getTable(database, logicDataSourceNames, 
schemaName, renameTable, props));
+            droppedTables.add(tableName);
         } else {
-            alterSchemaMetaDataPOJO.getAlteredTables().add(getTable(database, 
logicDataSourceNames, schemaName, tableName, props));
+            alteredTables.add(getTable(database, logicDataSourceNames, 
schemaName, tableName, props));
         }
-        metaDataManagerPersistService.alterSchema(alterSchemaMetaDataPOJO);
+        metaDataManagerPersistService.alterSchema(database.getName(), 
schemaName, logicDataSourceNames.isEmpty() ? null : 
logicDataSourceNames.iterator().next(),
+                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/RenameTablePushDownMetaDataRefresher.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/RenameTablePushDownMetaDataRefresher.java
index 323936792a4..9c0ba1f5677 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
@@ -25,7 +25,6 @@ import 
org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericS
 import 
org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericSchemaBuilderMaterial;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaMetaDataPOJO;
 import 
org.apache.shardingsphere.infra.rule.attribute.datanode.MutableDataNodeRuleAttribute;
 import 
org.apache.shardingsphere.mode.metadata.refresher.metadata.pushdown.PushDownMetaDataRefresher;
 import 
org.apache.shardingsphere.mode.metadata.refresher.metadata.util.TableRefreshUtils;
@@ -49,11 +48,10 @@ public final class RenameTablePushDownMetaDataRefresher 
implements PushDownMetaD
     public void refresh(final MetaDataManagerPersistService 
metaDataManagerPersistService, final ShardingSphereDatabase database, final 
Collection<String> logicDataSourceNames,
                         final String schemaName, final DatabaseType 
databaseType, final RenameTableStatement sqlStatement, final 
ConfigurationProperties props) throws SQLException {
         for (RenameTableDefinitionSegment each : 
sqlStatement.getRenameTables()) {
-            AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new 
AlterSchemaMetaDataPOJO(database.getName(), schemaName, logicDataSourceNames);
-            alterSchemaMetaDataPOJO.getAlteredTables().add(getTable(database, 
logicDataSourceNames, schemaName,
-                    
TableRefreshUtils.getTableName(each.getRenameTable().getTableName().getIdentifier(),
 databaseType), props));
-            
alterSchemaMetaDataPOJO.getDroppedTables().add(each.getTable().getTableName().getIdentifier().getValue());
-            metaDataManagerPersistService.alterSchema(alterSchemaMetaDataPOJO);
+            ShardingSphereTable alteredTable = getTable(
+                    database, logicDataSourceNames, schemaName, 
TableRefreshUtils.getTableName(each.getRenameTable().getTableName().getIdentifier(),
 databaseType), props);
+            metaDataManagerPersistService.alterSchema(database.getName(), 
schemaName, logicDataSourceNames.isEmpty() ? null : 
logicDataSourceNames.iterator().next(),
+                    Collections.singleton(alteredTable), 
Collections.emptyList(), 
Collections.singleton(each.getTable().getTableName().getIdentifier().getValue()),
 Collections.emptyList());
         }
     }
     
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 1683434fa62..310029f548b 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
@@ -26,7 +26,6 @@ import 
org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericS
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereView;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaMetaDataPOJO;
 import 
org.apache.shardingsphere.infra.rule.attribute.datanode.MutableDataNodeRuleAttribute;
 import 
org.apache.shardingsphere.mode.metadata.refresher.metadata.pushdown.PushDownMetaDataRefresher;
 import 
org.apache.shardingsphere.mode.metadata.refresher.metadata.util.TableRefreshUtils;
@@ -50,24 +49,28 @@ public final class AlterViewPushDownMetaDataRefresher 
implements PushDownMetaDat
     public void refresh(final MetaDataManagerPersistService 
metaDataManagerPersistService, final ShardingSphereDatabase database, final 
Collection<String> logicDataSourceNames,
                         final String schemaName, final DatabaseType 
databaseType, final AlterViewStatement sqlStatement, final 
ConfigurationProperties props) throws SQLException {
         String viewName = 
TableRefreshUtils.getTableName(sqlStatement.getView().getTableName().getIdentifier(),
 databaseType);
-        AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new 
AlterSchemaMetaDataPOJO(database.getName(), schemaName, logicDataSourceNames);
+        Collection<ShardingSphereTable> alteredTables = new LinkedList<>();
+        Collection<ShardingSphereView> alteredViews = new LinkedList<>();
+        Collection<String> droppedTables = new LinkedList<>();
+        Collection<String> droppedViews = new LinkedList<>();
         Optional<SimpleTableSegment> renameView = sqlStatement.getRenameView();
         if (renameView.isPresent()) {
             String renameViewName = 
renameView.get().getTableName().getIdentifier().getValue();
             String originalView = 
database.getSchema(schemaName).getView(viewName).getViewDefinition();
             ShardingSphereSchema schema = getSchema(database, 
logicDataSourceNames, schemaName, renameViewName, originalView, props);
-            
alterSchemaMetaDataPOJO.getAlteredTables().add(schema.getTable(renameViewName));
-            
alterSchemaMetaDataPOJO.getAlteredViews().add(schema.getView(renameViewName));
-            alterSchemaMetaDataPOJO.getDroppedTables().add(viewName);
-            alterSchemaMetaDataPOJO.getDroppedViews().add(viewName);
+            alteredTables.add(schema.getTable(renameViewName));
+            alteredViews.add(schema.getView(renameViewName));
+            droppedTables.add(viewName);
+            droppedViews.add(viewName);
         }
         Optional<String> viewDefinition = sqlStatement.getViewDefinition();
         if (viewDefinition.isPresent()) {
             ShardingSphereSchema schema = getSchema(database, 
logicDataSourceNames, schemaName, viewName, viewDefinition.get(), props);
-            
alterSchemaMetaDataPOJO.getAlteredTables().add(schema.getTable(viewName));
-            
alterSchemaMetaDataPOJO.getAlteredViews().add(schema.getView(viewName));
+            alteredTables.add(schema.getTable(viewName));
+            alteredViews.add(schema.getView(viewName));
         }
-        metaDataManagerPersistService.alterSchema(alterSchemaMetaDataPOJO);
+        metaDataManagerPersistService.alterSchema(database.getName(), 
schemaName,
+                logicDataSourceNames.isEmpty() ? null : 
logicDataSourceNames.iterator().next(), 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 e65bdef1275..989d2c64130 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
@@ -27,7 +27,6 @@ import 
org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericS
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereView;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaMetaDataPOJO;
 import 
org.apache.shardingsphere.infra.rule.attribute.datanode.MutableDataNodeRuleAttribute;
 import 
org.apache.shardingsphere.mode.metadata.refresher.metadata.pushdown.PushDownMetaDataRefresher;
 import 
org.apache.shardingsphere.mode.metadata.refresher.metadata.util.TableRefreshUtils;
@@ -58,10 +57,9 @@ 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);
-        AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new 
AlterSchemaMetaDataPOJO(database.getName(), schemaName, logicDataSourceNames);
-        
alterSchemaMetaDataPOJO.getAlteredTables().add(actualTableMetaData.get());
-        alterSchemaMetaDataPOJO.getAlteredViews().add(new 
ShardingSphereView(viewName, sqlStatement.getViewDefinition()));
-        metaDataManagerPersistService.alterSchema(alterSchemaMetaDataPOJO);
+        metaDataManagerPersistService.alterSchema(database.getName(), 
schemaName, logicDataSourceNames.isEmpty() ? null : 
logicDataSourceNames.iterator().next(),
+                Collections.singleton(actualTableMetaData.get()), 
Collections.singleton(new ShardingSphereView(viewName, 
sqlStatement.getViewDefinition())),
+                Collections.emptyList(), Collections.emptyList());
     }
     
     @Override
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 06733376bee..1e2c74d6395 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
@@ -20,12 +20,14 @@ package 
org.apache.shardingsphere.mode.metadata.refresher.metadata.pushdown.type
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaMetaDataPOJO;
 import 
org.apache.shardingsphere.mode.metadata.refresher.metadata.pushdown.PushDownMetaDataRefresher;
 import 
org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService;
+import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.DropViewStatement;
 
 import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedList;
 
 /**
  * Drop view push down meta data refresher.
@@ -35,13 +37,14 @@ public final class DropViewPushDownMetaDataRefresher 
implements PushDownMetaData
     @Override
     public void refresh(final MetaDataManagerPersistService 
metaDataManagerPersistService, final ShardingSphereDatabase database, final 
Collection<String> logicDataSourceNames,
                         final String schemaName, final DatabaseType 
databaseType, final DropViewStatement sqlStatement, final 
ConfigurationProperties props) {
-        AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new 
AlterSchemaMetaDataPOJO(database.getName(), schemaName);
-        sqlStatement.getViews().forEach(each -> {
+        Collection<String> droppedTables = new LinkedList<>();
+        Collection<String> droppedViews = new LinkedList<>();
+        for (SimpleTableSegment each : sqlStatement.getViews()) {
             String viewName = each.getTableName().getIdentifier().getValue();
-            alterSchemaMetaDataPOJO.getDroppedTables().add(viewName);
-            alterSchemaMetaDataPOJO.getDroppedViews().add(viewName);
-        });
-        metaDataManagerPersistService.alterSchema(alterSchemaMetaDataPOJO);
+            droppedTables.add(viewName);
+            droppedViews.add(viewName);
+        }
+        metaDataManagerPersistService.alterSchema(database.getName(), 
schemaName, null, 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 4ff387df16b..6eef3720a3f 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
@@ -20,7 +20,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.schema.model.ShardingSphereTable;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaMetaDataPOJO;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereView;
 
 import java.sql.SQLException;
 import java.util.Collection;
@@ -57,9 +57,16 @@ public interface MetaDataManagerPersistService {
     /**
      * Alter schema.
      *
-     * @param alterSchemaMetaDataPOJO alter schema metadata pojo
+     * @param databaseName database name
+     * @param schemaName schema name
+     * @param logicDataSourceName logic data source name
+     * @param alteredTables altered tables
+     * @param alteredViews altered views
+     * @param droppedTables dropped tables
+     * @param droppedViews dropped views
      */
-    void alterSchema(AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO);
+    void alterSchema(String databaseName, String schemaName, String 
logicDataSourceName,
+                     Collection<ShardingSphereTable> alteredTables, 
Collection<ShardingSphereView> alteredViews, Collection<String> droppedTables, 
Collection<String> droppedViews);
     
     /**
      * Alter schema name.
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 35893189ebc..875ac023887 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
@@ -25,7 +25,7 @@ import 
org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNode;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaMetaDataPOJO;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereView;
 import 
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereStatistics;
 import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
 import org.apache.shardingsphere.mode.metadata.MetaDataContextManager;
@@ -87,14 +87,14 @@ public final class ClusterMetaDataManagerPersistService 
implements MetaDataManag
     }
     
     @Override
-    public void alterSchema(final AlterSchemaMetaDataPOJO 
alterSchemaMetaDataPOJO) {
-        String databaseName = alterSchemaMetaDataPOJO.getDatabaseName();
-        String schemaName = alterSchemaMetaDataPOJO.getSchemaName();
+    public void alterSchema(final String databaseName, final String 
schemaName, final String logicDataSourceName,
+                            final Collection<ShardingSphereTable> 
alteredTables, final Collection<ShardingSphereView> alteredViews,
+                            final Collection<String> droppedTables, final 
Collection<String> droppedViews) {
         DatabaseMetaDataPersistFacade databaseMetaDataFacade = 
metaDataPersistService.getDatabaseMetaDataFacade();
-        databaseMetaDataFacade.getTable().persist(databaseName, schemaName, 
alterSchemaMetaDataPOJO.getAlteredTables());
-        databaseMetaDataFacade.getView().persist(databaseName, schemaName, 
alterSchemaMetaDataPOJO.getAlteredViews());
-        alterSchemaMetaDataPOJO.getDroppedTables().forEach(each -> 
databaseMetaDataFacade.getTable().drop(databaseName, schemaName, each));
-        alterSchemaMetaDataPOJO.getDroppedViews().forEach(each -> 
databaseMetaDataFacade.getView().delete(databaseName, schemaName, each));
+        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().delete(databaseName, schemaName, each));
     }
     
     @Override
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 4b86e04a909..9fdc23b5f23 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
@@ -21,7 +21,6 @@ import lombok.SneakyThrows;
 import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaMetaDataPOJO;
 import org.apache.shardingsphere.mode.metadata.MetaDataContextManager;
 import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
 import org.apache.shardingsphere.mode.spi.repository.PersistRepository;
@@ -97,7 +96,7 @@ class ClusterMetaDataManagerPersistServiceTest {
     
     @Test
     void assertAlterSchema() {
-        metaDataManagerPersistService.alterSchema(new 
AlterSchemaMetaDataPOJO("foo_db", "foo_schema", 
Collections.singleton("foo_ds")));
+        metaDataManagerPersistService.alterSchema("foo_db", "foo_schema", 
"foo_ds", Collections.emptyList(), Collections.emptyList(), 
Collections.emptyList(), Collections.emptyList());
         
verify(metaDataPersistService.getDatabaseMetaDataFacade().getTable()).persist("foo_db",
 "foo_schema", Collections.emptyList());
         
verify(metaDataPersistService.getDatabaseMetaDataFacade().getView()).persist("foo_db",
 "foo_schema", Collections.emptyList());
     }
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 af03a7e81e9..060d469b91a 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
@@ -25,7 +25,6 @@ import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereView;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaMetaDataPOJO;
 import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
 import 
org.apache.shardingsphere.infra.rule.attribute.datanode.MutableDataNodeRuleAttribute;
 import org.apache.shardingsphere.infra.rule.scope.GlobalRule;
@@ -95,18 +94,18 @@ public final class StandaloneMetaDataManagerPersistService 
implements MetaDataMa
     }
     
     @Override
-    public void alterSchema(final AlterSchemaMetaDataPOJO 
alterSchemaMetaDataPOJO) {
-        String databaseName = alterSchemaMetaDataPOJO.getDatabaseName();
-        String schemaName = alterSchemaMetaDataPOJO.getSchemaName();
+    public void alterSchema(final String databaseName, final String 
schemaName, final String logicDataSourceName,
+                            final Collection<ShardingSphereTable> 
alteredTables, final Collection<ShardingSphereView> alteredViews,
+                            final Collection<String> droppedTables, final 
Collection<String> droppedViews) {
         ShardingSphereMetaData metaData = 
metaDataContextManager.getMetaDataContexts().getMetaData();
         ShardingSphereDatabase database = metaData.getDatabase(databaseName);
-        addDataNode(database, 
alterSchemaMetaDataPOJO.getLogicDataSourceName(), schemaName, 
alterSchemaMetaDataPOJO.getAlteredTables(), 
alterSchemaMetaDataPOJO.getAlteredViews());
-        removeDataNode(database, schemaName, 
alterSchemaMetaDataPOJO.getDroppedTables(), 
alterSchemaMetaDataPOJO.getDroppedViews());
+        addDataNode(database, logicDataSourceName, schemaName, alteredTables, 
alteredViews);
+        removeDataNode(database, schemaName, droppedTables, droppedViews);
         metaData.getGlobalRuleMetaData().getRules().forEach(each -> 
((GlobalRule) each).refresh(metaData.getAllDatabases(), 
GlobalRuleChangedType.SCHEMA_CHANGED));
-        
metaDataPersistService.getDatabaseMetaDataFacade().getTable().persist(databaseName,
 schemaName, alterSchemaMetaDataPOJO.getAlteredTables());
-        
metaDataPersistService.getDatabaseMetaDataFacade().getView().persist(databaseName,
 schemaName, alterSchemaMetaDataPOJO.getAlteredViews());
-        alterSchemaMetaDataPOJO.getDroppedTables().forEach(each -> 
metaDataPersistService.getDatabaseMetaDataFacade().getTable().drop(databaseName,
 schemaName, each));
-        alterSchemaMetaDataPOJO.getDroppedViews().forEach(each -> 
metaDataPersistService.getDatabaseMetaDataFacade().getView().delete(databaseName,
 schemaName, each));
+        
metaDataPersistService.getDatabaseMetaDataFacade().getTable().persist(databaseName,
 schemaName, alteredTables);
+        
metaDataPersistService.getDatabaseMetaDataFacade().getView().persist(databaseName,
 schemaName, alteredViews);
+        droppedTables.forEach(each -> 
metaDataPersistService.getDatabaseMetaDataFacade().getTable().drop(databaseName,
 schemaName, each));
+        droppedViews.forEach(each -> 
metaDataPersistService.getDatabaseMetaDataFacade().getView().delete(databaseName,
 schemaName, each));
     }
     
     @Override
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 38a5b254b45..666fdc15705 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
@@ -25,7 +25,6 @@ import 
org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaMetaDataPOJO;
 import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
 import org.apache.shardingsphere.mode.metadata.MetaDataContextManager;
 import org.apache.shardingsphere.mode.metadata.manager.RuleItemChangedBuilder;
@@ -101,7 +100,7 @@ class StandaloneMetaDataManagerPersistServiceTest {
     void assertAlterSchema() {
         DatabaseMetaDataPersistFacade databaseMetaDataFacade = 
mock(DatabaseMetaDataPersistFacade.class, RETURNS_DEEP_STUBS);
         
when(metaDataPersistService.getDatabaseMetaDataFacade()).thenReturn(databaseMetaDataFacade);
-        metaDataManagerPersistService.alterSchema(new 
AlterSchemaMetaDataPOJO("foo_db", "foo_schema", 
Collections.singleton("foo_ds")));
+        metaDataManagerPersistService.alterSchema("foo_db", "foo_schema", 
"foo_ds", Collections.emptyList(), Collections.emptyList(), 
Collections.emptyList(), Collections.emptyList());
         verify(databaseMetaDataFacade.getTable()).persist("foo_db", 
"foo_schema", new LinkedList<>());
     }
     

Reply via email to