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());
}
}