Skip to content

Commit 4d448e5

Browse files
authored
Refactor MetaDataRefreshEngine (#32467)
1 parent fbf9305 commit 4d448e5

File tree

1 file changed

+11
-15
lines changed

1 file changed

+11
-15
lines changed

mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/MetaDataRefreshEngine.java

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import org.apache.shardingsphere.infra.route.context.RouteUnit;
2727
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
2828
import org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService;
29-
import org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
3029
import org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.AlterIndexStatement;
3130
import org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.AlterSchemaStatement;
3231
import org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.AlterTableStatement;
@@ -79,14 +78,10 @@ public void refresh(final SQLStatementContext sqlStatementContext, final Collect
7978
}
8079
Optional<MetaDataRefresher> schemaRefresher = TypedSPILoader.findService(MetaDataRefresher.class, sqlStatementClass);
8180
if (schemaRefresher.isPresent()) {
82-
String schemaName = null;
83-
if (sqlStatementContext instanceof TableAvailable) {
84-
schemaName = ((TableAvailable) sqlStatementContext).getTablesContext().getSchemaName()
85-
.orElseGet(() -> new DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDefaultSchemaName(database.getName())).toLowerCase();
86-
}
8781
Collection<String> logicDataSourceNames = routeUnits.stream().map(each -> each.getDataSourceMapper().getLogicName()).collect(Collectors.toList());
88-
schemaRefresher.get().refresh(metaDataManagerPersistService, database,
89-
logicDataSourceNames, schemaName, sqlStatementContext.getDatabaseType(), sqlStatementContext.getSqlStatement(), props);
82+
String schemaName = sqlStatementContext instanceof TableAvailable ? getSchemaName(sqlStatementContext) : null;
83+
schemaRefresher.get().refresh(
84+
metaDataManagerPersistService, database, logicDataSourceNames, schemaName, sqlStatementContext.getDatabaseType(), sqlStatementContext.getSqlStatement(), props);
9085
}
9186
}
9287

@@ -97,11 +92,13 @@ public void refresh(final SQLStatementContext sqlStatementContext, final Collect
9792
*/
9893
@SuppressWarnings("unchecked")
9994
public void refresh(final SQLStatementContext sqlStatementContext) {
100-
getFederationMetaDataRefresher(sqlStatementContext).ifPresent(federationMetaDataRefresher -> {
101-
String schemaName = ((TableAvailable) sqlStatementContext).getTablesContext().getSchemaName()
102-
.orElseGet(() -> new DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDefaultSchemaName(database.getName())).toLowerCase();
103-
federationMetaDataRefresher.refresh(metaDataManagerPersistService, database, schemaName, sqlStatementContext.getDatabaseType(), sqlStatementContext.getSqlStatement());
104-
});
95+
getFederationMetaDataRefresher(sqlStatementContext).ifPresent(optional -> optional.refresh(
96+
metaDataManagerPersistService, database, getSchemaName(sqlStatementContext), sqlStatementContext.getDatabaseType(), sqlStatementContext.getSqlStatement()));
97+
}
98+
99+
private String getSchemaName(final SQLStatementContext sqlStatementContext) {
100+
return ((TableAvailable) sqlStatementContext).getTablesContext().getSchemaName()
101+
.orElseGet(() -> new DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDefaultSchemaName(database.getName())).toLowerCase();
105102
}
106103

107104
/**
@@ -116,7 +113,6 @@ public boolean isFederation(final SQLStatementContext sqlStatementContext) {
116113

117114
@SuppressWarnings("rawtypes")
118115
private Optional<FederationMetaDataRefresher> getFederationMetaDataRefresher(final SQLStatementContext sqlStatementContext) {
119-
Class<? extends SQLStatement> sqlStatementClass = sqlStatementContext.getSqlStatement().getClass();
120-
return TypedSPILoader.findService(FederationMetaDataRefresher.class, sqlStatementClass.getSuperclass());
116+
return TypedSPILoader.findService(FederationMetaDataRefresher.class, sqlStatementContext.getSqlStatement().getClass().getSuperclass());
121117
}
122118
}

0 commit comments

Comments
 (0)