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 4d448e5d791 Refactor MetaDataRefreshEngine (#32467)
4d448e5d791 is described below

commit 4d448e5d791a0e8519e8da54a4f6c343aeea8470
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Aug 11 23:36:17 2024 +0800

    Refactor MetaDataRefreshEngine (#32467)
---
 .../metadata/refresher/MetaDataRefreshEngine.java  | 26 +++++++++-------------
 1 file changed, 11 insertions(+), 15 deletions(-)

diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/MetaDataRefreshEngine.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/MetaDataRefreshEngine.java
index a98b52b05b8..9ded4c35812 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/MetaDataRefreshEngine.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/MetaDataRefreshEngine.java
@@ -26,7 +26,6 @@ import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.route.context.RouteUnit;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import 
org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService;
-import 
org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.AlterIndexStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.AlterSchemaStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.AlterTableStatement;
@@ -79,14 +78,10 @@ public final class MetaDataRefreshEngine {
         }
         Optional<MetaDataRefresher> schemaRefresher = 
TypedSPILoader.findService(MetaDataRefresher.class, sqlStatementClass);
         if (schemaRefresher.isPresent()) {
-            String schemaName = null;
-            if (sqlStatementContext instanceof TableAvailable) {
-                schemaName = ((TableAvailable) 
sqlStatementContext).getTablesContext().getSchemaName()
-                        .orElseGet(() -> new 
DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDefaultSchemaName(database.getName())).toLowerCase();
-            }
             Collection<String> logicDataSourceNames = 
routeUnits.stream().map(each -> 
each.getDataSourceMapper().getLogicName()).collect(Collectors.toList());
-            schemaRefresher.get().refresh(metaDataManagerPersistService, 
database,
-                    logicDataSourceNames, schemaName, 
sqlStatementContext.getDatabaseType(), sqlStatementContext.getSqlStatement(), 
props);
+            String schemaName = sqlStatementContext instanceof TableAvailable 
? getSchemaName(sqlStatementContext) : null;
+            schemaRefresher.get().refresh(
+                    metaDataManagerPersistService, database, 
logicDataSourceNames, schemaName, sqlStatementContext.getDatabaseType(), 
sqlStatementContext.getSqlStatement(), props);
         }
     }
     
@@ -97,11 +92,13 @@ public final class MetaDataRefreshEngine {
      */
     @SuppressWarnings("unchecked")
     public void refresh(final SQLStatementContext sqlStatementContext) {
-        
getFederationMetaDataRefresher(sqlStatementContext).ifPresent(federationMetaDataRefresher
 -> {
-            String schemaName = ((TableAvailable) 
sqlStatementContext).getTablesContext().getSchemaName()
-                    .orElseGet(() -> new 
DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDefaultSchemaName(database.getName())).toLowerCase();
-            federationMetaDataRefresher.refresh(metaDataManagerPersistService, 
database, schemaName, sqlStatementContext.getDatabaseType(), 
sqlStatementContext.getSqlStatement());
-        });
+        getFederationMetaDataRefresher(sqlStatementContext).ifPresent(optional 
-> optional.refresh(
+                metaDataManagerPersistService, database, 
getSchemaName(sqlStatementContext), sqlStatementContext.getDatabaseType(), 
sqlStatementContext.getSqlStatement()));
+    }
+    
+    private String getSchemaName(final SQLStatementContext 
sqlStatementContext) {
+        return ((TableAvailable) 
sqlStatementContext).getTablesContext().getSchemaName()
+                .orElseGet(() -> new 
DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDefaultSchemaName(database.getName())).toLowerCase();
     }
     
     /**
@@ -116,7 +113,6 @@ public final class MetaDataRefreshEngine {
     
     @SuppressWarnings("rawtypes")
     private Optional<FederationMetaDataRefresher> 
getFederationMetaDataRefresher(final SQLStatementContext sqlStatementContext) {
-        Class<? extends SQLStatement> sqlStatementClass = 
sqlStatementContext.getSqlStatement().getClass();
-        return TypedSPILoader.findService(FederationMetaDataRefresher.class, 
sqlStatementClass.getSuperclass());
+        return TypedSPILoader.findService(FederationMetaDataRefresher.class, 
sqlStatementContext.getSqlStatement().getClass().getSuperclass());
     }
 }

Reply via email to