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 7719c4fef85 Add DatabaseMetaDataPersistFacade.renameSchema() (#35008)
7719c4fef85 is described below
commit 7719c4fef8540e08d7cc570251297e69060840bd
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Mar 15 23:31:10 2025 +0800
Add DatabaseMetaDataPersistFacade.renameSchema() (#35008)
* Add DatabaseMetaDataPersistFacade.renameSchema()
* Add DatabaseMetaDataPersistFacade.renameSchema()
---
.../metadata/DatabaseMetaDataPersistFacade.java | 21 +++++++++++++++++++++
.../ClusterMetaDataManagerPersistService.java | 9 +--------
.../ClusterMetaDataManagerPersistServiceTest.java | 12 +++---------
.../StandaloneMetaDataManagerPersistService.java | 9 +--------
...StandaloneMetaDataManagerPersistServiceTest.java | 10 +++-------
5 files changed, 29 insertions(+), 32 deletions(-)
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/DatabaseMetaDataPersistFacade.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/DatabaseMetaDataPersistFacade.java
index 697d1da4d3d..41414694067 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/DatabaseMetaDataPersistFacade.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/DatabaseMetaDataPersistFacade.java
@@ -18,7 +18,9 @@
package org.apache.shardingsphere.mode.metadata.persist.metadata;
import lombok.Getter;
+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.model.ShardingSphereView;
import
org.apache.shardingsphere.mode.metadata.persist.metadata.service.DatabaseMetaDataPersistService;
@@ -69,4 +71,23 @@ public final class DatabaseMetaDataPersistFacade {
droppedTables.forEach(each -> table.drop(database.getName(),
schemaName, each));
droppedViews.forEach(each -> view.drop(database.getName(), schemaName,
each));
}
+
+ /**
+ * Rename schema.
+ *
+ * @param metaData meta data
+ * @param database database
+ * @param schemaName schema name
+ * @param renameSchemaName rename schema name
+ */
+ public void renameSchema(final ShardingSphereMetaData metaData, final
ShardingSphereDatabase database, final String schemaName, final String
renameSchemaName) {
+ ShardingSphereSchema schema =
metaData.getDatabase(database.getName()).getSchema(schemaName);
+ if (schema.isEmpty()) {
+ this.schema.add(database.getName(), renameSchemaName);
+ } else {
+ table.persist(database.getName(), renameSchemaName,
schema.getAllTables());
+ view.persist(database.getName(), renameSchemaName,
schema.getAllViews());
+ }
+ this.schema.drop(database.getName(), schemaName);
+ }
}
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 0a111579274..d8e6e15ca9e 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
@@ -99,14 +99,7 @@ public final class ClusterMetaDataManagerPersistService
implements MetaDataManag
@Override
public void renameSchema(final ShardingSphereDatabase database, final
String schemaName, final String renameSchemaName) {
- ShardingSphereSchema schema =
metaDataContextManager.getMetaDataContexts().getMetaData().getDatabase(database.getName()).getSchema(schemaName);
- if (schema.isEmpty()) {
-
metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema().add(database.getName(),
renameSchemaName);
- } else {
-
metaDataPersistFacade.getDatabaseMetaDataFacade().getTable().persist(database.getName(),
renameSchemaName, schema.getAllTables());
-
metaDataPersistFacade.getDatabaseMetaDataFacade().getView().persist(database.getName(),
renameSchemaName, schema.getAllViews());
- }
-
metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema().drop(database.getName(),
schemaName);
+
metaDataPersistFacade.getDatabaseMetaDataFacade().renameSchema(metaDataContextManager.getMetaDataContexts().getMetaData(),
database, schemaName, renameSchemaName);
}
@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 d7cec11eb1b..e98c8b175ae 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
@@ -98,8 +98,7 @@ class ClusterMetaDataManagerPersistServiceTest {
void assertAlterSchema() {
metaDataManagerPersistService.alterSchema(new
ShardingSphereDatabase("foo_db", mock(), mock(), mock(),
Collections.emptyList()),
"foo_schema", Collections.emptyList(),
Collections.emptyList(), Collections.emptyList(), Collections.emptyList());
-
verify(metaDataPersistFacade.getDatabaseMetaDataFacade().getTable()).persist("foo_db",
"foo_schema", Collections.emptyList());
-
verify(metaDataPersistFacade.getDatabaseMetaDataFacade().getView()).persist("foo_db",
"foo_schema", Collections.emptyList());
+
verify(metaDataPersistFacade.getDatabaseMetaDataFacade()).alterSchema(any(),
eq("foo_schema"), anyCollection(), anyCollection(), anyCollection(),
anyCollection());
}
@Test
@@ -107,20 +106,15 @@ class ClusterMetaDataManagerPersistServiceTest {
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
when(metaDataContextManager.getMetaDataContexts().getMetaData().getDatabase("foo_db").getSchema("foo_schema")).thenReturn(schema);
metaDataManagerPersistService.renameSchema(new
ShardingSphereDatabase("foo_db", mock(), mock(), mock(),
Collections.emptyList()), "foo_schema", "bar_schema");
-
verify(metaDataPersistFacade.getDatabaseMetaDataFacade().getTable()).persist(eq("foo_db"),
eq("bar_schema"), anyCollection());
-
verify(metaDataPersistFacade.getDatabaseMetaDataFacade().getView()).persist(eq("foo_db"),
eq("bar_schema"), anyCollection());
-
verify(metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema()).drop("foo_db",
"foo_schema");
- verify(metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema(),
times(0)).add("foo_db", "bar_schema");
+
verify(metaDataPersistFacade.getDatabaseMetaDataFacade()).renameSchema(any(),
any(), eq("foo_schema"), eq("bar_schema"));
}
@Test
void assertRenameEmptySchemaName() {
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
- when(schema.isEmpty()).thenReturn(true);
when(metaDataContextManager.getMetaDataContexts().getMetaData().getDatabase("foo_db").getSchema("foo_schema")).thenReturn(schema);
metaDataManagerPersistService.renameSchema(new
ShardingSphereDatabase("foo_db", mock(), mock(), mock(),
Collections.emptyList()), "foo_schema", "bar_schema");
-
verify(metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema()).drop("foo_db",
"foo_schema");
-
verify(metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema()).add("foo_db",
"bar_schema");
+
verify(metaDataPersistFacade.getDatabaseMetaDataFacade()).renameSchema(any(),
any(), eq("foo_schema"), eq("bar_schema"));
}
@Test
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 f36a724f9d5..408b4e32f77 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
@@ -116,14 +116,7 @@ public final class StandaloneMetaDataManagerPersistService
implements MetaDataMa
@Override
public void renameSchema(final ShardingSphereDatabase database, final
String schemaName, final String renameSchemaName) {
- ShardingSphereSchema schema =
metaDataContextManager.getMetaDataContexts().getMetaData().getDatabase(database.getName()).getSchema(schemaName);
- if (schema.isEmpty()) {
-
metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema().add(database.getName(),
renameSchemaName);
- } else {
-
metaDataPersistFacade.getDatabaseMetaDataFacade().getTable().persist(database.getName(),
renameSchemaName, schema.getAllTables());
-
metaDataPersistFacade.getDatabaseMetaDataFacade().getView().persist(database.getName(),
renameSchemaName, schema.getAllViews());
- }
-
metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema().drop(database.getName(),
schemaName);
+
metaDataPersistFacade.getDatabaseMetaDataFacade().renameSchema(metaDataContextManager.getMetaDataContexts().getMetaData(),
database, schemaName, renameSchemaName);
metaDataContextManager.getDatabaseMetaDataManager().renameSchema(database.getName(),
schemaName, renameSchemaName);
}
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 de4bc0a6680..978a0ca72f7 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
@@ -50,7 +50,6 @@ import org.mockito.junit.jupiter.MockitoExtension;
import java.sql.SQLException;
import java.util.Collections;
-import java.util.LinkedList;
import java.util.Optional;
import java.util.Properties;
@@ -108,7 +107,7 @@ class StandaloneMetaDataManagerPersistServiceTest {
when(metaDataPersistFacade.getDatabaseMetaDataFacade()).thenReturn(databaseMetaDataFacade);
metaDataManagerPersistService.alterSchema(new
ShardingSphereDatabase("foo_db", mock(), mock(), mock(),
Collections.emptyList()),
"foo_schema", Collections.emptyList(),
Collections.emptyList(), Collections.emptyList(), Collections.emptyList());
- verify(databaseMetaDataFacade.getTable()).persist("foo_db",
"foo_schema", new LinkedList<>());
+ verify(databaseMetaDataFacade).alterSchema(any(), eq("foo_schema"),
anyCollection(), anyCollection(), anyCollection(), anyCollection());
}
@Test
@@ -121,9 +120,7 @@ class StandaloneMetaDataManagerPersistServiceTest {
when(metaDataPersistFacade.getDatabaseMetaDataFacade()).thenReturn(databaseMetaDataFacade);
metaDataManagerPersistService.renameSchema(new
ShardingSphereDatabase("foo_db", mock(), mock(), mock(),
Collections.emptyList()), "foo_schema", "bar_schema");
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());
- verify(databaseMetaDataFacade.getSchema()).drop("foo_db",
"foo_schema");
+ verify(databaseMetaDataFacade).renameSchema(any(), any(),
eq("foo_schema"), eq("bar_schema"));
}
@Test
@@ -137,8 +134,7 @@ class StandaloneMetaDataManagerPersistServiceTest {
DatabaseMetaDataPersistFacade databaseMetaDataFacade =
mock(DatabaseMetaDataPersistFacade.class, RETURNS_DEEP_STUBS);
when(metaDataPersistFacade.getDatabaseMetaDataFacade()).thenReturn(databaseMetaDataFacade);
metaDataManagerPersistService.renameSchema(new
ShardingSphereDatabase("foo_db", mock(), mock(), mock(),
Collections.emptyList()), "foo_schema", "bar_schema");
- verify(databaseMetaDataFacade.getSchema()).add("foo_db", "bar_schema");
- verify(databaseMetaDataFacade.getSchema()).drop("foo_db",
"foo_schema");
+ verify(databaseMetaDataFacade).renameSchema(any(), any(),
eq("foo_schema"), eq("bar_schema"));
}
@Test