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 f05a2b18a61 Refactor TableRefreshUtils (#34488)
f05a2b18a61 is described below
commit f05a2b18a611d33675e63f3f93fa4453d912b925
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Jan 25 18:07:56 2025 +0800
Refactor TableRefreshUtils (#34488)
* Refactor TableRefreshUtils
* Refactor TableRefreshUtils
* Refactor TableRefreshUtils
---
.../table/CreateTablePushDownMetaDataRefresher.java | 2 +-
.../table/DropTablePushDownMetaDataRefresher.java | 4 ++--
.../refresher/metadata/util/TableRefreshUtils.java | 19 +++++++------------
3 files changed, 10 insertions(+), 15 deletions(-)
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/CreateTablePushDownMetaDataRefresher.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/CreateTablePushDownMetaDataRefresher.java
index f88518cbe43..9ca75672420 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/CreateTablePushDownMetaDataRefresher.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/CreateTablePushDownMetaDataRefresher.java
@@ -58,7 +58,7 @@ public final class CreateTablePushDownMetaDataRefresher
implements PushDownMetaD
Optional<ShardingSphereTable> actualTableMetaData =
Optional.ofNullable(schemas.get(schemaName)).map(optional ->
optional.getTable(tableName));
Preconditions.checkState(actualTableMetaData.isPresent(), "Load actual
table metadata '%s' failed.", tableName);
metaDataManagerPersistService.createTable(database.getName(),
schemaName, actualTableMetaData.get(), logicDataSourceNames.isEmpty() ? null :
logicDataSourceNames.iterator().next());
- if (isSingleTable &&
TableRefreshUtils.isRuleRefreshRequired(ruleMetaData, schemaName, tableName)) {
+ if (isSingleTable && TableRefreshUtils.isNeedRefresh(ruleMetaData,
schemaName, tableName)) {
metaDataManagerPersistService.alterSingleRuleConfiguration(database.getName(),
ruleMetaData);
}
}
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/DropTablePushDownMetaDataRefresher.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/DropTablePushDownMetaDataRefresher.java
index 87f419a8c35..216394aa7bb 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/DropTablePushDownMetaDataRefresher.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/DropTablePushDownMetaDataRefresher.java
@@ -39,10 +39,10 @@ public final class DropTablePushDownMetaDataRefresher
implements PushDownMetaDat
public void refresh(final MetaDataManagerPersistService
metaDataManagerPersistService, final ShardingSphereDatabase database, final
Collection<String> logicDataSourceNames,
final String schemaName, final DatabaseType
databaseType, final DropTableStatement sqlStatement, final
ConfigurationProperties props) throws SQLException {
Collection<String> tableNames =
sqlStatement.getTables().stream().map(each ->
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList());
- boolean isRuleRefreshRequired =
TableRefreshUtils.isRuleRefreshRequired(database.getRuleMetaData(), schemaName,
sqlStatement.getTables());
+ boolean needRefresh =
TableRefreshUtils.isNeedRefresh(database.getRuleMetaData(), schemaName,
sqlStatement.getTables());
metaDataManagerPersistService.dropTables(database.getName(),
schemaName, tableNames);
for (SimpleTableSegment each : sqlStatement.getTables()) {
- if (isRuleRefreshRequired &&
TableRefreshUtils.isSingleTable(each.getTableName().getIdentifier().getValue(),
database)) {
+ if (needRefresh &&
TableRefreshUtils.isSingleTable(each.getTableName().getIdentifier().getValue(),
database)) {
metaDataManagerPersistService.alterSingleRuleConfiguration(database.getName(),
database.getRuleMetaData());
break;
}
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/util/TableRefreshUtils.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/util/TableRefreshUtils.java
index 105c6ab56a2..3c701676a9b 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/util/TableRefreshUtils.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/util/TableRefreshUtils.java
@@ -59,31 +59,26 @@ public final class TableRefreshUtils {
}
/**
- * Judge whether single table.
+ * Judge whether to need refresh.
*
* @param tableName table name
* @param database database
- * @return whether single table
+ * @return need to refresh or not
*/
public static boolean isSingleTable(final String tableName, final
ShardingSphereDatabase database) {
return
database.getRuleMetaData().getAttributes(TableMapperRuleAttribute.class).stream().noneMatch(each
-> each.getDistributedTableNames().contains(tableName));
}
/**
- * Judge whether the rule need to be refreshed.
+ * Judge whether to need refresh.
*
* @param ruleMetaData rule meta data
* @param schemaName schema name
* @param tableSegments table segments
- * @return whether the rule need to be refreshed
+ * @return need to refresh or not
*/
- public static boolean isRuleRefreshRequired(final RuleMetaData
ruleMetaData, final String schemaName, final Collection<SimpleTableSegment>
tableSegments) {
- for (SimpleTableSegment each : tableSegments) {
- if (isRuleRefreshRequired(ruleMetaData, schemaName,
each.getTableName().getIdentifier().getValue())) {
- return true;
- }
- }
- return false;
+ public static boolean isNeedRefresh(final RuleMetaData ruleMetaData, final
String schemaName, final Collection<SimpleTableSegment> tableSegments) {
+ return tableSegments.stream().anyMatch(each ->
isNeedRefresh(ruleMetaData, schemaName,
each.getTableName().getIdentifier().getValue()));
}
/**
@@ -94,7 +89,7 @@ public final class TableRefreshUtils {
* @param tableName table name
* @return whether the rule need to be refreshed
*/
- public static boolean isRuleRefreshRequired(final RuleMetaData
ruleMetaData, final String schemaName, final String tableName) {
+ public static boolean isNeedRefresh(final RuleMetaData ruleMetaData, final
String schemaName, final String tableName) {
Collection<ShardingSphereRule> rules = new LinkedList<>();
for (ShardingSphereRule each : ruleMetaData.getRules()) {
each.getAttributes().findAttribute(MutableDataNodeRuleAttribute.class).ifPresent(optional
-> rules.add(each));