You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by ji...@apache.org on 2023/02/15 12:29:38 UTC

[shardingsphere] branch master updated: Refactor `ShowDefaultShardingStrategyExecutor` (#24176)

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

jianglongtao 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 16a2d6db038 Refactor `ShowDefaultShardingStrategyExecutor` (#24176)
16a2d6db038 is described below

commit 16a2d6db0382a416f4f24802c42e186ca2af3f4e
Author: Zichao <57...@users.noreply.github.com>
AuthorDate: Wed Feb 15 20:29:30 2023 +0800

    Refactor `ShowDefaultShardingStrategyExecutor` (#24176)
    
    * Refactor `ShowDefaultShardingStrategyExecutor`
    
    * Refactor `ShowDefaultShardingStrategyExecutor`
---
 .../query/ShowDefaultShardingStrategyExecutor.java | 38 +++++++---------------
 .../dataset/db/show_default_sharding_strategy.xml  |  4 +--
 .../show_default_sharding_strategy.xml             |  4 +--
 .../show_default_sharding_strategy.xml             |  4 +--
 .../show_default_sharding_strategy.xml             |  4 +--
 .../show_default_sharding_strategy.xml             |  4 +--
 .../mysql/show_default_sharding_strategy.xml       |  4 +--
 .../dataset/tbl/show_default_sharding_strategy.xml |  4 +--
 8 files changed, 26 insertions(+), 40 deletions(-)

diff --git a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/ShowDefaultShardingStrategyExecutor.java b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/ShowDefaultShardingStrategyExecutor.java
index 78161f7cc05..befd77baed6 100644
--- a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/ShowDefaultShardingStrategyExecutor.java
+++ b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/ShowDefaultShardingStrategyExecutor.java
@@ -31,10 +31,7 @@ import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
-import java.util.LinkedHashMap;
 import java.util.LinkedList;
-import java.util.Map;
-import java.util.Map.Entry;
 import java.util.Optional;
 
 /**
@@ -45,41 +42,30 @@ public final class ShowDefaultShardingStrategyExecutor implements RQLExecutor<Sh
     @Override
     public Collection<LocalDataQueryResultRow> getRows(final ShardingSphereDatabase database, final ShowDefaultShardingStrategyStatement sqlStatement) {
         Optional<ShardingRule> shardingRule = database.getRuleMetaData().findSingleRule(ShardingRule.class);
-        if (!shardingRule.isPresent()) {
-            return Collections.emptyList();
-        }
-        Iterator<Entry<String, LinkedList<Object>>> data = buildData(shardingRule.get()).entrySet().iterator();
-        Collection<LocalDataQueryResultRow> result = new LinkedList<>();
-        while (data.hasNext()) {
-            Entry<String, LinkedList<Object>> entry = data.next();
-            entry.getValue().addFirst(entry.getKey());
-            result.add(new LocalDataQueryResultRow(entry.getValue()));
-        }
-        return result;
+        return shardingRule.map(this::buildData).orElse(Collections.emptyList());
     }
     
-    private Map<String, LinkedList<Object>> buildData(final ShardingRule rule) {
-        Map<String, LinkedList<Object>> result = new LinkedHashMap<>(2, 1);
+    private Collection<LocalDataQueryResultRow> buildData(final ShardingRule rule) {
+        Collection<LocalDataQueryResultRow> result = new LinkedList<>();
         ShardingRuleConfiguration ruleConfig = (ShardingRuleConfiguration) rule.getConfiguration();
-        result.put("TABLE", buildDataItem(ruleConfig, ruleConfig.getDefaultTableShardingStrategy()));
-        result.put("DATABASE", buildDataItem(ruleConfig, ruleConfig.getDefaultDatabaseShardingStrategy()));
+        result.add(buildDataItem("TABLE", ruleConfig, ruleConfig.getDefaultTableShardingStrategy()));
+        result.add(buildDataItem("DATABASE", ruleConfig, ruleConfig.getDefaultDatabaseShardingStrategy()));
         return result;
     }
     
-    private LinkedList<Object> buildDataItem(final ShardingRuleConfiguration ruleConfig, final ShardingStrategyConfiguration strategyConfig) {
+    private LocalDataQueryResultRow buildDataItem(final String defaultType, final ShardingRuleConfiguration ruleConfig, final ShardingStrategyConfiguration strategyConfig) {
         if (null == strategyConfig) {
-            return new LinkedList<>(Arrays.asList("NONE", "", "", "", ""));
+            return new LocalDataQueryResultRow(defaultType, "", "", "", "", "");
         }
         ShardingStrategyType strategyType = ShardingStrategyType.getValueOf(strategyConfig);
         if (strategyType == ShardingStrategyType.NONE) {
-            return new LinkedList<>(Arrays.asList("NONE", "", "", "", ""));
+            return new LocalDataQueryResultRow(defaultType, "NONE", "", "", "", "");
         }
-        LinkedList<Object> result = new LinkedList<>(Collections.singleton(strategyType.name()));
-        result.addAll(strategyType.getConfigurationContents(strategyConfig));
         AlgorithmConfiguration algorithmConfig = ruleConfig.getShardingAlgorithms().get(strategyConfig.getShardingAlgorithmName());
-        result.add(algorithmConfig.getType());
-        result.add(algorithmConfig.getProps().toString());
-        return result;
+        Iterator<String> iterator = strategyType.getConfigurationContents(strategyConfig).iterator();
+        String shardingColumn = iterator.next();
+        String algorithmName = iterator.next();
+        return new LocalDataQueryResultRow(defaultType, strategyType.toString(), shardingColumn, algorithmName, algorithmConfig.getType(), algorithmConfig.getProps().toString());
     }
     
     @Override
diff --git a/test/e2e/suite/src/test/resources/cases/rql/dataset/db/show_default_sharding_strategy.xml b/test/e2e/suite/src/test/resources/cases/rql/dataset/db/show_default_sharding_strategy.xml
index 6de4eac3474..0bbc14403db 100644
--- a/test/e2e/suite/src/test/resources/cases/rql/dataset/db/show_default_sharding_strategy.xml
+++ b/test/e2e/suite/src/test/resources/cases/rql/dataset/db/show_default_sharding_strategy.xml
@@ -24,6 +24,6 @@
         <column name="sharding_algorithm_type" />
         <column name="sharding_algorithm_props" />
     </metadata>
-    <row values="TABLE| NONE| | | | " />
-    <row values="DATABASE| NONE| | | | " />
+    <row values="TABLE| | | | | " />
+    <row values="DATABASE| | | | | " />
 </dataset>
diff --git a/test/e2e/suite/src/test/resources/cases/rql/dataset/dbtbl_with_readwrite_splitting/show_default_sharding_strategy.xml b/test/e2e/suite/src/test/resources/cases/rql/dataset/dbtbl_with_readwrite_splitting/show_default_sharding_strategy.xml
index 6de4eac3474..0bbc14403db 100644
--- a/test/e2e/suite/src/test/resources/cases/rql/dataset/dbtbl_with_readwrite_splitting/show_default_sharding_strategy.xml
+++ b/test/e2e/suite/src/test/resources/cases/rql/dataset/dbtbl_with_readwrite_splitting/show_default_sharding_strategy.xml
@@ -24,6 +24,6 @@
         <column name="sharding_algorithm_type" />
         <column name="sharding_algorithm_props" />
     </metadata>
-    <row values="TABLE| NONE| | | | " />
-    <row values="DATABASE| NONE| | | | " />
+    <row values="TABLE| | | | | " />
+    <row values="DATABASE| | | | | " />
 </dataset>
diff --git a/test/e2e/suite/src/test/resources/cases/rql/dataset/dbtbl_with_readwrite_splitting_and_encrypt/show_default_sharding_strategy.xml b/test/e2e/suite/src/test/resources/cases/rql/dataset/dbtbl_with_readwrite_splitting_and_encrypt/show_default_sharding_strategy.xml
index 6de4eac3474..0bbc14403db 100644
--- a/test/e2e/suite/src/test/resources/cases/rql/dataset/dbtbl_with_readwrite_splitting_and_encrypt/show_default_sharding_strategy.xml
+++ b/test/e2e/suite/src/test/resources/cases/rql/dataset/dbtbl_with_readwrite_splitting_and_encrypt/show_default_sharding_strategy.xml
@@ -24,6 +24,6 @@
         <column name="sharding_algorithm_type" />
         <column name="sharding_algorithm_props" />
     </metadata>
-    <row values="TABLE| NONE| | | | " />
-    <row values="DATABASE| NONE| | | | " />
+    <row values="TABLE| | | | | " />
+    <row values="DATABASE| | | | | " />
 </dataset>
diff --git a/test/e2e/suite/src/test/resources/cases/rql/dataset/readwrite_splitting/show_default_sharding_strategy.xml b/test/e2e/suite/src/test/resources/cases/rql/dataset/readwrite_splitting/show_default_sharding_strategy.xml
index 6de4eac3474..0bbc14403db 100644
--- a/test/e2e/suite/src/test/resources/cases/rql/dataset/readwrite_splitting/show_default_sharding_strategy.xml
+++ b/test/e2e/suite/src/test/resources/cases/rql/dataset/readwrite_splitting/show_default_sharding_strategy.xml
@@ -24,6 +24,6 @@
         <column name="sharding_algorithm_type" />
         <column name="sharding_algorithm_props" />
     </metadata>
-    <row values="TABLE| NONE| | | | " />
-    <row values="DATABASE| NONE| | | | " />
+    <row values="TABLE| | | | | " />
+    <row values="DATABASE| | | | | " />
 </dataset>
diff --git a/test/e2e/suite/src/test/resources/cases/rql/dataset/sharding_and_encrypt/show_default_sharding_strategy.xml b/test/e2e/suite/src/test/resources/cases/rql/dataset/sharding_and_encrypt/show_default_sharding_strategy.xml
index 6de4eac3474..0bbc14403db 100644
--- a/test/e2e/suite/src/test/resources/cases/rql/dataset/sharding_and_encrypt/show_default_sharding_strategy.xml
+++ b/test/e2e/suite/src/test/resources/cases/rql/dataset/sharding_and_encrypt/show_default_sharding_strategy.xml
@@ -24,6 +24,6 @@
         <column name="sharding_algorithm_type" />
         <column name="sharding_algorithm_props" />
     </metadata>
-    <row values="TABLE| NONE| | | | " />
-    <row values="DATABASE| NONE| | | | " />
+    <row values="TABLE| | | | | " />
+    <row values="DATABASE| | | | | " />
 </dataset>
diff --git a/test/e2e/suite/src/test/resources/cases/rql/dataset/sharding_governance/mysql/show_default_sharding_strategy.xml b/test/e2e/suite/src/test/resources/cases/rql/dataset/sharding_governance/mysql/show_default_sharding_strategy.xml
index 6de4eac3474..0bbc14403db 100644
--- a/test/e2e/suite/src/test/resources/cases/rql/dataset/sharding_governance/mysql/show_default_sharding_strategy.xml
+++ b/test/e2e/suite/src/test/resources/cases/rql/dataset/sharding_governance/mysql/show_default_sharding_strategy.xml
@@ -24,6 +24,6 @@
         <column name="sharding_algorithm_type" />
         <column name="sharding_algorithm_props" />
     </metadata>
-    <row values="TABLE| NONE| | | | " />
-    <row values="DATABASE| NONE| | | | " />
+    <row values="TABLE| | | | | " />
+    <row values="DATABASE| | | | | " />
 </dataset>
diff --git a/test/e2e/suite/src/test/resources/cases/rql/dataset/tbl/show_default_sharding_strategy.xml b/test/e2e/suite/src/test/resources/cases/rql/dataset/tbl/show_default_sharding_strategy.xml
index 6de4eac3474..0bbc14403db 100644
--- a/test/e2e/suite/src/test/resources/cases/rql/dataset/tbl/show_default_sharding_strategy.xml
+++ b/test/e2e/suite/src/test/resources/cases/rql/dataset/tbl/show_default_sharding_strategy.xml
@@ -24,6 +24,6 @@
         <column name="sharding_algorithm_type" />
         <column name="sharding_algorithm_props" />
     </metadata>
-    <row values="TABLE| NONE| | | | " />
-    <row values="DATABASE| NONE| | | | " />
+    <row values="TABLE| | | | | " />
+    <row values="DATABASE| | | | | " />
 </dataset>