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

Reply via email to