This is an automated email from the ASF dual-hosted git repository.

sunnianjun 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 244a3059861 Refactor ShowRulesUsedStorageUnitRowBuilder (#30055)
244a3059861 is described below

commit 244a3059861a2d68c60e7d55039a2d7300bced89
Author: Liang Zhang <[email protected]>
AuthorDate: Wed Feb 7 20:43:53 2024 +0800

    Refactor ShowRulesUsedStorageUnitRowBuilder (#30055)
    
    * Refactor ShowRulesUsedStorageUnitRowBuilder
    
    * Refactor ShowRulesUsedStorageUnitRowBuilder
---
 .../handler/query/ShowEncryptRulesUsedStorageUnitRowBuilder.java | 6 +++---
 .../handler/query/ShowMaskRulesUsedStorageUnitRowBuilder.java    | 6 +++---
 .../ShowReadwriteSplittingRulesUsedStorageUnitRowBuilder.java    | 9 ++++-----
 .../handler/query/ShowShadowRulesUsedStorageUnitRowBuilder.java  | 6 +++---
 .../query/ShowShardingRulesUsedStorageUnitRowBuilder.java        | 9 ++++-----
 .../engine/query/rql/ShowRulesUsedStorageUnitRowBuilder.java     | 7 +++----
 .../handler/distsql/rql/ShowRulesUsedStorageUnitExecutor.java    | 8 +++++++-
 7 files changed, 27 insertions(+), 24 deletions(-)

diff --git 
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/query/ShowEncryptRulesUsedStorageUnitRowBuilder.java
 
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/query/ShowEncryptRulesUsedStorageUnitRowBuilder.java
index 78819eeb86d..343404f57c1 100644
--- 
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/query/ShowEncryptRulesUsedStorageUnitRowBuilder.java
+++ 
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/query/ShowEncryptRulesUsedStorageUnitRowBuilder.java
@@ -19,8 +19,8 @@ package 
org.apache.shardingsphere.encrypt.distsql.handler.query;
 
 import 
org.apache.shardingsphere.distsql.handler.engine.query.rql.ShowRulesUsedStorageUnitRowBuilder;
 import 
org.apache.shardingsphere.distsql.statement.rql.rule.database.ShowRulesUsedStorageUnitStatement;
+import 
org.apache.shardingsphere.encrypt.api.config.rule.EncryptTableRuleConfiguration;
 import org.apache.shardingsphere.encrypt.rule.EncryptRule;
-import 
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
 
 import java.util.Collection;
 import java.util.stream.Collectors;
@@ -31,8 +31,8 @@ import java.util.stream.Collectors;
 public final class ShowEncryptRulesUsedStorageUnitRowBuilder implements 
ShowRulesUsedStorageUnitRowBuilder<EncryptRule> {
     
     @Override
-    public Collection<LocalDataQueryResultRow> getInUsedData(final 
ShowRulesUsedStorageUnitStatement sqlStatement, final EncryptRule rule) {
-        return rule.getConfiguration().getTables().stream().map(each -> new 
LocalDataQueryResultRow("encrypt", 
each.getName())).collect(Collectors.toList());
+    public Collection<String> getInUsedResources(final 
ShowRulesUsedStorageUnitStatement sqlStatement, final EncryptRule rule) {
+        return 
rule.getConfiguration().getTables().stream().map(EncryptTableRuleConfiguration::getName).collect(Collectors.toList());
     }
     
     @Override
diff --git 
a/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/query/ShowMaskRulesUsedStorageUnitRowBuilder.java
 
b/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/query/ShowMaskRulesUsedStorageUnitRowBuilder.java
index 807f5630d66..15ddfcf459c 100644
--- 
a/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/query/ShowMaskRulesUsedStorageUnitRowBuilder.java
+++ 
b/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/query/ShowMaskRulesUsedStorageUnitRowBuilder.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.mask.distsql.handler.query;
 
 import 
org.apache.shardingsphere.distsql.handler.engine.query.rql.ShowRulesUsedStorageUnitRowBuilder;
 import 
org.apache.shardingsphere.distsql.statement.rql.rule.database.ShowRulesUsedStorageUnitStatement;
-import 
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
+import 
org.apache.shardingsphere.mask.api.config.rule.MaskTableRuleConfiguration;
 import org.apache.shardingsphere.mask.rule.MaskRule;
 
 import java.util.Collection;
@@ -31,8 +31,8 @@ import java.util.stream.Collectors;
 public final class ShowMaskRulesUsedStorageUnitRowBuilder implements 
ShowRulesUsedStorageUnitRowBuilder<MaskRule> {
     
     @Override
-    public Collection<LocalDataQueryResultRow> getInUsedData(final 
ShowRulesUsedStorageUnitStatement sqlStatement, final MaskRule rule) {
-        return rule.getConfiguration().getTables().stream().map(each -> new 
LocalDataQueryResultRow("mask", each.getName())).collect(Collectors.toList());
+    public Collection<String> getInUsedResources(final 
ShowRulesUsedStorageUnitStatement sqlStatement, final MaskRule rule) {
+        return 
rule.getConfiguration().getTables().stream().map(MaskTableRuleConfiguration::getName).collect(Collectors.toList());
     }
     
     @Override
diff --git 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ShowReadwriteSplittingRulesUsedStorageUnitRowBuilder.java
 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ShowReadwriteSplittingRulesUsedStorageUnitRowBuilder.java
index 3a6ba3fe4cb..445223aec3a 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ShowReadwriteSplittingRulesUsedStorageUnitRowBuilder.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ShowReadwriteSplittingRulesUsedStorageUnitRowBuilder.java
@@ -20,7 +20,6 @@ package 
org.apache.shardingsphere.readwritesplitting.distsql.handler.query;
 import com.cedarsoftware.util.CaseInsensitiveSet;
 import 
org.apache.shardingsphere.distsql.handler.engine.query.rql.ShowRulesUsedStorageUnitRowBuilder;
 import 
org.apache.shardingsphere.distsql.statement.rql.rule.database.ShowRulesUsedStorageUnitStatement;
-import 
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
 import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingRule;
 
@@ -34,17 +33,17 @@ import java.util.LinkedList;
 public final class ShowReadwriteSplittingRulesUsedStorageUnitRowBuilder 
implements ShowRulesUsedStorageUnitRowBuilder<ReadwriteSplittingRule> {
     
     @Override
-    public Collection<LocalDataQueryResultRow> getInUsedData(final 
ShowRulesUsedStorageUnitStatement sqlStatement, final ReadwriteSplittingRule 
rule) {
+    public Collection<String> getInUsedResources(final 
ShowRulesUsedStorageUnitStatement sqlStatement, final ReadwriteSplittingRule 
rule) {
         if (!sqlStatement.getStorageUnitName().isPresent()) {
             return Collections.emptyList();
         }
-        Collection<LocalDataQueryResultRow> result = new LinkedList<>();
+        Collection<String> result = new LinkedList<>();
         for (ReadwriteSplittingDataSourceRuleConfiguration each : 
rule.getConfiguration().getDataSources()) {
             if 
(each.getWriteDataSourceName().equalsIgnoreCase(sqlStatement.getStorageUnitName().get()))
 {
-                result.add(new LocalDataQueryResultRow("readwrite_splitting", 
each.getName()));
+                result.add(each.getName());
             }
             if (new 
CaseInsensitiveSet<>(each.getReadDataSourceNames()).contains(sqlStatement.getStorageUnitName().get()))
 {
-                result.add(new LocalDataQueryResultRow("readwrite_splitting", 
each.getName()));
+                result.add(each.getName());
             }
         }
         return result;
diff --git 
a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/query/ShowShadowRulesUsedStorageUnitRowBuilder.java
 
b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/query/ShowShadowRulesUsedStorageUnitRowBuilder.java
index dcb643dcaa5..2e5908bd66b 100644
--- 
a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/query/ShowShadowRulesUsedStorageUnitRowBuilder.java
+++ 
b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/query/ShowShadowRulesUsedStorageUnitRowBuilder.java
@@ -19,7 +19,7 @@ package 
org.apache.shardingsphere.shadow.distsql.handler.query;
 
 import 
org.apache.shardingsphere.distsql.handler.engine.query.rql.ShowRulesUsedStorageUnitRowBuilder;
 import 
org.apache.shardingsphere.distsql.statement.rql.rule.database.ShowRulesUsedStorageUnitStatement;
-import 
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
+import 
org.apache.shardingsphere.shadow.api.config.datasource.ShadowDataSourceConfiguration;
 import org.apache.shardingsphere.shadow.rule.ShadowRule;
 
 import java.util.Collection;
@@ -32,14 +32,14 @@ import java.util.stream.Collectors;
 public final class ShowShadowRulesUsedStorageUnitRowBuilder implements 
ShowRulesUsedStorageUnitRowBuilder<ShadowRule> {
     
     @Override
-    public Collection<LocalDataQueryResultRow> getInUsedData(final 
ShowRulesUsedStorageUnitStatement sqlStatement, final ShadowRule rule) {
+    public Collection<String> getInUsedResources(final 
ShowRulesUsedStorageUnitStatement sqlStatement, final ShadowRule rule) {
         if (!sqlStatement.getStorageUnitName().isPresent()) {
             return Collections.emptyList();
         }
         return rule.getConfiguration().getDataSources().stream()
                 .filter(each -> 
each.getShadowDataSourceName().equalsIgnoreCase(sqlStatement.getStorageUnitName().get())
                         || 
each.getProductionDataSourceName().equalsIgnoreCase(sqlStatement.getStorageUnitName().get()))
-                .map(each -> new LocalDataQueryResultRow("shadow", 
each.getName())).collect(Collectors.toList());
+                
.map(ShadowDataSourceConfiguration::getName).collect(Collectors.toList());
     }
     
     @Override
diff --git 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/ShowShardingRulesUsedStorageUnitRowBuilder.java
 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/ShowShardingRulesUsedStorageUnitRowBuilder.java
index 2493a99983b..5310a735501 100644
--- 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/ShowShardingRulesUsedStorageUnitRowBuilder.java
+++ 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/ShowShardingRulesUsedStorageUnitRowBuilder.java
@@ -19,7 +19,6 @@ package 
org.apache.shardingsphere.sharding.distsql.handler.query;
 
 import 
org.apache.shardingsphere.distsql.handler.engine.query.rql.ShowRulesUsedStorageUnitRowBuilder;
 import 
org.apache.shardingsphere.distsql.statement.rql.rule.database.ShowRulesUsedStorageUnitStatement;
-import 
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
 import 
org.apache.shardingsphere.sharding.api.config.rule.ShardingAutoTableRuleConfiguration;
 import 
org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
@@ -33,13 +32,13 @@ import java.util.LinkedList;
 public final class ShowShardingRulesUsedStorageUnitRowBuilder implements 
ShowRulesUsedStorageUnitRowBuilder<ShardingRule> {
     
     @Override
-    public Collection<LocalDataQueryResultRow> getInUsedData(final 
ShowRulesUsedStorageUnitStatement sqlStatement, final ShardingRule rule) {
-        Collection<LocalDataQueryResultRow> result = new LinkedList<>();
+    public Collection<String> getInUsedResources(final 
ShowRulesUsedStorageUnitStatement sqlStatement, final ShardingRule rule) {
+        Collection<String> result = new LinkedList<>();
         for (ShardingAutoTableRuleConfiguration each : 
rule.getConfiguration().getAutoTables()) {
-            result.add(new LocalDataQueryResultRow("sharding", 
each.getLogicTable()));
+            result.add(each.getLogicTable());
         }
         for (ShardingTableRuleConfiguration each : 
rule.getConfiguration().getTables()) {
-            result.add(new LocalDataQueryResultRow("sharding", 
each.getLogicTable()));
+            result.add(each.getLogicTable());
         }
         return result;
     }
diff --git 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/query/rql/ShowRulesUsedStorageUnitRowBuilder.java
 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/query/rql/ShowRulesUsedStorageUnitRowBuilder.java
index 7a95a6a675d..f78aea9507e 100644
--- 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/query/rql/ShowRulesUsedStorageUnitRowBuilder.java
+++ 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/query/rql/ShowRulesUsedStorageUnitRowBuilder.java
@@ -18,7 +18,6 @@
 package org.apache.shardingsphere.distsql.handler.engine.query.rql;
 
 import 
org.apache.shardingsphere.distsql.statement.rql.rule.database.ShowRulesUsedStorageUnitStatement;
-import 
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPI;
@@ -34,13 +33,13 @@ import java.util.Collection;
 public interface ShowRulesUsedStorageUnitRowBuilder<T extends 
ShardingSphereRule> extends TypedSPI {
     
     /**
-     * Get in used data.
+     * Get in used resources.
      * 
      * @param sqlStatement show rules used storage unit statement
      * @param rule rule
-     * @return in used data
+     * @return in used resources
      */
-    Collection<LocalDataQueryResultRow> 
getInUsedData(ShowRulesUsedStorageUnitStatement sqlStatement, T rule);
+    Collection<String> getInUsedResources(ShowRulesUsedStorageUnitStatement 
sqlStatement, T rule);
     
     @Override
     Class<T> getType();
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/ShowRulesUsedStorageUnitExecutor.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/ShowRulesUsedStorageUnitExecutor.java
index 67b1e3c5832..0434ecb7dc3 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/ShowRulesUsedStorageUnitExecutor.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/ShowRulesUsedStorageUnitExecutor.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.proxy.backend.handler.distsql.rql;
 
+import com.google.common.base.CaseFormat;
 import lombok.Setter;
 import 
org.apache.shardingsphere.distsql.handler.aware.DistSQLExecutorDatabaseAware;
 import 
org.apache.shardingsphere.distsql.handler.engine.query.DistSQLQueryExecutor;
@@ -33,6 +34,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.LinkedList;
 import java.util.Optional;
+import java.util.stream.Collectors;
 
 /**
  * Show rules used storage unit executor.
@@ -58,7 +60,11 @@ public final class ShowRulesUsedStorageUnitExecutor 
implements DistSQLQueryExecu
         Collection<LocalDataQueryResultRow> result = new LinkedList<>();
         for (ShowRulesUsedStorageUnitRowBuilder each : 
ShardingSphereServiceLoader.getServiceInstances(ShowRulesUsedStorageUnitRowBuilder.class))
 {
             Optional<ShardingSphereRule> rule = 
database.getRuleMetaData().findSingleRule(each.getType());
-            rule.ifPresent(optional -> 
result.addAll(each.getInUsedData(sqlStatement, optional)));
+            if (rule.isPresent()) {
+                String type = 
CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, 
each.getType().getSimpleName().substring(0, 
each.getType().getSimpleName().indexOf("Rule")));
+                Collection<String> inUsedResources = 
each.getInUsedResources(sqlStatement, rule.get());
+                result.addAll(inUsedResources.stream().map(resource -> new 
LocalDataQueryResultRow(type, resource)).collect(Collectors.toList()));
+            }
         }
         return result;
     }

Reply via email to