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

Reply via email to