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 d1545a06a1e Refactor MetaDataManagerPersistService.alterSchemaName()
(#34471)
d1545a06a1e is described below
commit d1545a06a1e747d99d80c40ba638a40e3a94a45e
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Jan 24 22:40:19 2025 +0800
Refactor MetaDataManagerPersistService.alterSchemaName() (#34471)
* Refactor MetaDataManagerPersistService.alterSchemaName()
* Refactor MetaDataManagerPersistService.alterSchemaName()
* Remove AlterSchemaPOJO
* Remove AlterSchemaPOJO
---
.../database/schema/pojo/AlterSchemaPOJO.java | 44 ----------------------
.../AlterSchemaPushDownMetaDataRefresher.java | 4 +-
.../service/MetaDataManagerPersistService.java | 8 ++--
.../ClusterMetaDataManagerPersistService.java | 21 +++++------
.../ClusterMetaDataManagerPersistServiceTest.java | 3 +-
.../StandaloneMetaDataManagerPersistService.java | 21 +++++------
...tandaloneMetaDataManagerPersistServiceTest.java | 5 +--
7 files changed, 28 insertions(+), 78 deletions(-)
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/pojo/AlterSchemaPOJO.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/pojo/AlterSchemaPOJO.java
deleted file mode 100644
index 502eecb1fd2..00000000000
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/pojo/AlterSchemaPOJO.java
+++ /dev/null
@@ -1,44 +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 java.util.Collection;
-
-/**
- * Alter schema pojo.
- */
-@Getter
-public final class AlterSchemaPOJO {
-
- private final String databaseName;
-
- private final String schemaName;
-
- private final String renameSchemaName;
-
- private final String logicDataSourceName;
-
- public AlterSchemaPOJO(final String databaseName, final String schemaName,
final String renameSchemaName, final Collection<String> logicDataSourceNames) {
- this.databaseName = databaseName;
- this.schemaName = schemaName;
- this.renameSchemaName = renameSchemaName;
- this.logicDataSourceName = logicDataSourceNames.isEmpty() ? null :
logicDataSourceNames.iterator().next();
- }
-}
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 9ac703d2a73..bd05734f956 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
@@ -20,7 +20,6 @@ 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.AlterSchemaPOJO;
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.AlterSchemaStatement;
@@ -41,7 +40,8 @@ public final class AlterSchemaPushDownMetaDataRefresher
implements PushDownMetaD
if (!renameSchemaName.isPresent()) {
return;
}
- metaDataManagerPersistService.alterSchemaName(new
AlterSchemaPOJO(database.getName(),
sqlStatement.getSchemaName().getValue().toLowerCase(), renameSchemaName.get(),
logicDataSourceNames));
+ metaDataManagerPersistService.alterSchemaName(
+ database.getName(),
sqlStatement.getSchemaName().getValue().toLowerCase(), renameSchemaName.get(),
logicDataSourceNames.isEmpty() ? null : logicDataSourceNames.iterator().next());
}
@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 fd62c7fa85e..27b615f1e12 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
@@ -21,7 +21,6 @@ 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.pojo.AlterSchemaPOJO;
import java.sql.SQLException;
import java.util.Collection;
@@ -67,10 +66,13 @@ public interface MetaDataManagerPersistService {
/**
* Alter schema name.
*
- * @param alterSchemaPOJO alter schema pojo
+ * @param databaseName database name
+ * @param schemaName schema name
+ * @param renameSchemaName rename schema name
+ * @param logicDataSourceName logic data source name
* @throws SQLException SQL exception
*/
- void alterSchemaName(AlterSchemaPOJO alterSchemaPOJO) throws SQLException;
+ void alterSchemaName(String databaseName, String schemaName, String
renameSchemaName, String logicDataSourceName) throws SQLException;
/**
* Drop schema.
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 b91a4b60cdf..02920f47adc 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
@@ -26,20 +26,19 @@ import
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNo
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.pojo.AlterSchemaPOJO;
import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereStatistics;
import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
-import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
-import
org.apache.shardingsphere.mode.metadata.persist.config.database.DataSourceUnitPersistService;
-import
org.apache.shardingsphere.mode.metadata.persist.metadata.DatabaseMetaDataPersistFacade;
import org.apache.shardingsphere.mode.metadata.MetaDataContextManager;
import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
import org.apache.shardingsphere.mode.metadata.factory.MetaDataContextsFactory;
import org.apache.shardingsphere.mode.metadata.manager.SwitchingResource;
-import org.apache.shardingsphere.mode.state.database.ListenerAssistedType;
-import
org.apache.shardingsphere.mode.state.database.ListenerAssistedPersistService;
+import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
+import
org.apache.shardingsphere.mode.metadata.persist.config.database.DataSourceUnitPersistService;
+import
org.apache.shardingsphere.mode.metadata.persist.metadata.DatabaseMetaDataPersistFacade;
import
org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService;
import org.apache.shardingsphere.mode.spi.repository.PersistRepository;
+import
org.apache.shardingsphere.mode.state.database.ListenerAssistedPersistService;
+import org.apache.shardingsphere.mode.state.database.ListenerAssistedType;
import org.apache.shardingsphere.single.config.SingleRuleConfiguration;
import javax.sql.DataSource;
@@ -99,15 +98,13 @@ public final class ClusterMetaDataManagerPersistService
implements MetaDataManag
}
@Override
- public void alterSchemaName(final AlterSchemaPOJO alterSchemaPOJO) {
- String databaseName = alterSchemaPOJO.getDatabaseName();
- String schemaName = alterSchemaPOJO.getSchemaName();
+ public void alterSchemaName(final String databaseName, final String
schemaName, final String renameSchemaName, final String logicDataSourceName) {
ShardingSphereSchema schema =
metaDataContextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getSchema(schemaName);
if (schema.isEmpty()) {
-
metaDataPersistService.getDatabaseMetaDataFacade().getSchema().add(databaseName,
alterSchemaPOJO.getRenameSchemaName());
+
metaDataPersistService.getDatabaseMetaDataFacade().getSchema().add(databaseName,
renameSchemaName);
}
-
metaDataPersistService.getDatabaseMetaDataFacade().getTable().persist(databaseName,
alterSchemaPOJO.getRenameSchemaName(), schema.getAllTables());
-
metaDataPersistService.getDatabaseMetaDataFacade().getView().persist(databaseName,
alterSchemaPOJO.getRenameSchemaName(), schema.getAllViews());
+
metaDataPersistService.getDatabaseMetaDataFacade().getTable().persist(databaseName,
renameSchemaName, schema.getAllTables());
+
metaDataPersistService.getDatabaseMetaDataFacade().getView().persist(databaseName,
renameSchemaName, schema.getAllViews());
metaDataPersistService.getDatabaseMetaDataFacade().getSchema().drop(databaseName,
schemaName);
}
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 1573200bd55..4b86e04a909 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
@@ -22,7 +22,6 @@ 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.infra.metadata.database.schema.pojo.AlterSchemaPOJO;
import org.apache.shardingsphere.mode.metadata.MetaDataContextManager;
import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
import org.apache.shardingsphere.mode.spi.repository.PersistRepository;
@@ -120,7 +119,7 @@ class ClusterMetaDataManagerPersistServiceTest {
private void assertAlterSchemaName(final ShardingSphereSchema schema) {
when(metaDataContextManager.getMetaDataContexts().getMetaData().getDatabase("foo_db").getSchema("foo_schema")).thenReturn(schema);
- metaDataManagerPersistService.alterSchemaName(new
AlterSchemaPOJO("foo_db", "foo_schema", "bar_schema",
Collections.singleton("foo_ds")));
+ metaDataManagerPersistService.alterSchemaName("foo_db", "foo_schema",
"bar_schema", "foo_ds");
verify(metaDataPersistService.getDatabaseMetaDataFacade().getTable()).persist(eq("foo_db"),
eq("bar_schema"), anyCollection());
verify(metaDataPersistService.getDatabaseMetaDataFacade().getView()).persist(eq("foo_db"),
eq("bar_schema"), anyCollection());
verify(metaDataPersistService.getDatabaseMetaDataFacade().getSchema()).drop("foo_db",
"foo_schema");
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 44e6b2cfde1..e86d68ecabe 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
@@ -26,7 +26,6 @@ import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSp
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.database.schema.pojo.AlterSchemaPOJO;
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;
@@ -111,21 +110,19 @@ public final class
StandaloneMetaDataManagerPersistService implements MetaDataMa
}
@Override
- public void alterSchemaName(final AlterSchemaPOJO alterSchemaPOJO) {
+ public void alterSchemaName(final String databaseName, final String
schemaName, final String renameSchemaName, final String logicDataSourceName) {
ShardingSphereMetaData metaData =
metaDataContextManager.getMetaDataContexts().getMetaData();
- ShardingSphereDatabase database =
metaData.getDatabase(alterSchemaPOJO.getDatabaseName());
- putSchemaMetaData(database, alterSchemaPOJO.getSchemaName(),
alterSchemaPOJO.getRenameSchemaName(),
alterSchemaPOJO.getLogicDataSourceName());
- removeSchemaMetaData(database, alterSchemaPOJO.getSchemaName());
+ ShardingSphereDatabase database = metaData.getDatabase(databaseName);
+ putSchemaMetaData(database, schemaName, renameSchemaName,
logicDataSourceName);
+ removeSchemaMetaData(database, schemaName);
metaData.getGlobalRuleMetaData().getRules().forEach(each ->
((GlobalRule) each).refresh(metaData.getAllDatabases(),
GlobalRuleChangedType.SCHEMA_CHANGED));
- ShardingSphereSchema alteredSchema =
database.getSchema(alterSchemaPOJO.getRenameSchemaName());
- String databaseName = alterSchemaPOJO.getDatabaseName();
- String alteredSchemaName = alterSchemaPOJO.getRenameSchemaName();
+ ShardingSphereSchema alteredSchema =
database.getSchema(renameSchemaName);
if (alteredSchema.isEmpty()) {
-
metaDataPersistService.getDatabaseMetaDataFacade().getSchema().add(databaseName,
alteredSchemaName);
+
metaDataPersistService.getDatabaseMetaDataFacade().getSchema().add(databaseName,
renameSchemaName);
}
-
metaDataPersistService.getDatabaseMetaDataFacade().getTable().persist(databaseName,
alteredSchemaName, alteredSchema.getAllTables());
-
metaDataPersistService.getDatabaseMetaDataFacade().getView().persist(databaseName,
alteredSchemaName, alteredSchema.getAllViews());
-
metaDataPersistService.getDatabaseMetaDataFacade().getSchema().drop(databaseName,
alterSchemaPOJO.getSchemaName());
+
metaDataPersistService.getDatabaseMetaDataFacade().getTable().persist(databaseName,
renameSchemaName, alteredSchema.getAllTables());
+
metaDataPersistService.getDatabaseMetaDataFacade().getView().persist(databaseName,
renameSchemaName, alteredSchema.getAllViews());
+
metaDataPersistService.getDatabaseMetaDataFacade().getSchema().drop(databaseName,
schemaName);
}
private void putSchemaMetaData(final ShardingSphereDatabase database,
final String schemaName, final String renamedSchemaName, final String
logicDataSourceName) {
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 c5739499f76..38a5b254b45 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
@@ -26,7 +26,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.pojo.AlterSchemaMetaDataPOJO;
-import
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaPOJO;
import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
import org.apache.shardingsphere.mode.metadata.MetaDataContextManager;
import org.apache.shardingsphere.mode.metadata.manager.RuleItemChangedBuilder;
@@ -114,7 +113,7 @@ class StandaloneMetaDataManagerPersistServiceTest {
when(metaDataContextManager.getMetaDataContexts().getMetaData()).thenReturn(metaData);
DatabaseMetaDataPersistFacade databaseMetaDataFacade =
mock(DatabaseMetaDataPersistFacade.class, RETURNS_DEEP_STUBS);
when(metaDataPersistService.getDatabaseMetaDataFacade()).thenReturn(databaseMetaDataFacade);
- metaDataManagerPersistService.alterSchemaName(new
AlterSchemaPOJO("foo_db", "foo_schema", "bar_schema",
Collections.singleton("foo_ds")));
+ metaDataManagerPersistService.alterSchemaName("foo_db", "foo_schema",
"bar_schema", "foo_ds");
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 +130,7 @@ class StandaloneMetaDataManagerPersistServiceTest {
when(metaDataContextManager.getMetaDataContexts().getMetaData()).thenReturn(metaData);
DatabaseMetaDataPersistFacade databaseMetaDataFacade =
mock(DatabaseMetaDataPersistFacade.class, RETURNS_DEEP_STUBS);
when(metaDataPersistService.getDatabaseMetaDataFacade()).thenReturn(databaseMetaDataFacade);
- metaDataManagerPersistService.alterSchemaName(new
AlterSchemaPOJO("foo_db", "foo_schema", "bar_schema",
Collections.singleton("foo_ds")));
+ metaDataManagerPersistService.alterSchemaName("foo_db", "foo_schema",
"bar_schema", "foo_ds");
verify(databaseMetaDataFacade.getSchema()).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());