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 6ec24c3212c Add SchemaRefreshUtils (#34453)
6ec24c3212c is described below

commit 6ec24c3212cec62f5588ac765829495779cc6312
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Jan 23 22:29:28 2025 +0800

    Add SchemaRefreshUtils (#34453)
    
    * Add SchemaRefreshUtils
    
    * Add SchemaRefreshUtils
---
 .../refresher/metadata/MetaDataRefreshEngine.java  |  9 ++-----
 .../FederationMetaDataRefreshEngine.java           | 10 ++------
 .../SchemaRefreshUtils.java}                       | 30 ++++++++--------------
 3 files changed, 14 insertions(+), 35 deletions(-)

diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/MetaDataRefreshEngine.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/MetaDataRefreshEngine.java
index 831963ac202..6e69265d5c6 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/MetaDataRefreshEngine.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/MetaDataRefreshEngine.java
@@ -22,11 +22,11 @@ import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementCont
 import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
 import org.apache.shardingsphere.infra.route.context.RouteUnit;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
+import 
org.apache.shardingsphere.mode.metadata.refresher.metadata.util.SchemaRefreshUtils;
 import 
org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService;
 
 import java.sql.SQLException;
@@ -73,14 +73,9 @@ public final class MetaDataRefreshEngine {
             return;
         }
         Collection<String> logicDataSourceNames = routeUnits.stream().map(each 
-> each.getDataSourceMapper().getLogicName()).collect(Collectors.toList());
-        String schemaName = sqlStatementContext instanceof TableAvailable ? 
getSchemaName(sqlStatementContext) : null;
+        String schemaName = sqlStatementContext instanceof TableAvailable ? 
SchemaRefreshUtils.getSchemaName(database, sqlStatementContext) : null;
         DatabaseType databaseType = routeUnits.stream().map(each -> 
database.getResourceMetaData().getStorageUnits().get(each.getDataSourceMapper().getActualName()))
                 
.filter(Objects::nonNull).findFirst().map(StorageUnit::getStorageType).orElseGet(sqlStatementContext::getDatabaseType);
         metaDataRefresher.get().refresh(metaDataManagerPersistService, 
database, logicDataSourceNames, schemaName, databaseType, 
sqlStatementContext.getSqlStatement(), props);
     }
-    
-    private String getSchemaName(final SQLStatementContext 
sqlStatementContext) {
-        return ((TableAvailable) 
sqlStatementContext).getTablesContext().getSchemaName()
-                .orElseGet(() -> new 
DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDefaultSchemaName(database.getName())).toLowerCase();
-    }
 }
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/federation/FederationMetaDataRefreshEngine.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/federation/FederationMetaDataRefreshEngine.java
index 6a5a189b29b..8c31fd00233 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/federation/FederationMetaDataRefreshEngine.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/federation/FederationMetaDataRefreshEngine.java
@@ -19,10 +19,9 @@ package 
org.apache.shardingsphere.mode.metadata.refresher.metadata.federation;
 
 import lombok.RequiredArgsConstructor;
 import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
-import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
-import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
+import 
org.apache.shardingsphere.mode.metadata.refresher.metadata.util.SchemaRefreshUtils;
 import 
org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService;
 
 /**
@@ -44,11 +43,6 @@ public final class FederationMetaDataRefreshEngine {
     public void refresh(final SQLStatementContext sqlStatementContext) {
         Class<?> sqlStatementClass = 
sqlStatementContext.getSqlStatement().getClass().getSuperclass();
         TypedSPILoader.findService(FederationMetaDataRefresher.class, 
sqlStatementClass).ifPresent(
-                optional -> optional.refresh(metaDataManagerPersistService, 
database, getSchemaName(sqlStatementContext), 
sqlStatementContext.getSqlStatement()));
-    }
-    
-    private String getSchemaName(final SQLStatementContext 
sqlStatementContext) {
-        return ((TableAvailable) 
sqlStatementContext).getTablesContext().getSchemaName()
-                .orElseGet(() -> new 
DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDefaultSchemaName(database.getName())).toLowerCase();
+                optional -> optional.refresh(metaDataManagerPersistService, 
database, SchemaRefreshUtils.getSchemaName(database, sqlStatementContext), 
sqlStatementContext.getSqlStatement()));
     }
 }
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/federation/FederationMetaDataRefreshEngine.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/util/SchemaRefreshUtils.java
similarity index 58%
copy from 
mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/federation/FederationMetaDataRefreshEngine.java
copy to 
mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/util/SchemaRefreshUtils.java
index 6a5a189b29b..fe8414dd037 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/federation/FederationMetaDataRefreshEngine.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/util/SchemaRefreshUtils.java
@@ -15,39 +15,29 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.mode.metadata.refresher.metadata.federation;
+package org.apache.shardingsphere.mode.metadata.refresher.metadata.util;
 
-import lombok.RequiredArgsConstructor;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
 import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
 import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
-import 
org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService;
 
 /**
- * Federation meta data refresh engine.
+ * Schema refresh utils.
  */
-@RequiredArgsConstructor
-public final class FederationMetaDataRefreshEngine {
-    
-    private final MetaDataManagerPersistService metaDataManagerPersistService;
-    
-    private final ShardingSphereDatabase database;
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class SchemaRefreshUtils {
     
     /**
-     * Refresh federation meta data.
+     * Get schema name.
      *
+     * @param database database
      * @param sqlStatementContext SQL statement context
+     * @return schema name
      */
-    @SuppressWarnings("unchecked")
-    public void refresh(final SQLStatementContext sqlStatementContext) {
-        Class<?> sqlStatementClass = 
sqlStatementContext.getSqlStatement().getClass().getSuperclass();
-        TypedSPILoader.findService(FederationMetaDataRefresher.class, 
sqlStatementClass).ifPresent(
-                optional -> optional.refresh(metaDataManagerPersistService, 
database, getSchemaName(sqlStatementContext), 
sqlStatementContext.getSqlStatement()));
-    }
-    
-    private String getSchemaName(final SQLStatementContext 
sqlStatementContext) {
+    public static String getSchemaName(final ShardingSphereDatabase database, 
final SQLStatementContext sqlStatementContext) {
         return ((TableAvailable) 
sqlStatementContext).getTablesContext().getSchemaName()
                 .orElseGet(() -> new 
DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDefaultSchemaName(database.getName())).toLowerCase();
     }

Reply via email to