You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2023/04/19 15:47:25 UTC
[shardingsphere] branch master updated: Optimize count rule executor. (#25243)
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 91da0bb47c2 Optimize count rule executor. (#25243)
91da0bb47c2 is described below
commit 91da0bb47c2e809acd79c62ee794a01557f72bfa
Author: Raigor <ra...@gmail.com>
AuthorDate: Wed Apr 19 23:47:17 2023 +0800
Optimize count rule executor. (#25243)
---
.../handler/query/CountEncryptRuleExecutor.java | 32 ++--------------------
.../query/CountEncryptRuleExecutorTest.java | 7 ++---
.../handler/query/CountMaskRuleExecutor.java | 29 ++------------------
.../handler/query/CountMaskRuleExecutorTest.java | 7 ++---
.../query/CountReadwriteSplittingRuleExecutor.java | 29 ++------------------
.../CountReadwriteSplittingRuleExecutorTest.java | 7 ++---
.../handler/query/CountShadowRuleExecutor.java | 32 ++--------------------
.../distsql/query/CountShadowRuleExecutorTest.java | 7 ++---
.../handler/query/CountShardingRuleExecutor.java | 21 +++++---------
.../query/CountShardingRuleExecutorTest.java | 7 ++---
.../distsql/rql/rule/CountSingleTableExecutor.java | 10 +++----
.../rql/rule/CountSingleTableExecutorTest.java | 7 ++---
12 files changed, 36 insertions(+), 159 deletions(-)
diff --git a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/query/CountEncryptRuleExecutor.java b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/query/CountEncryptRuleExecutor.java
index 7b7a6bed71f..6d071a03385 100644
--- a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/query/CountEncryptRuleExecutor.java
+++ b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/query/CountEncryptRuleExecutor.java
@@ -25,21 +25,14 @@ import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import java.util.Arrays;
import java.util.Collection;
-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;
-import java.util.function.Supplier;
/**
* Count encrypt rule executor.
*/
public final class CountEncryptRuleExecutor implements RQLExecutor<CountEncryptRuleStatement> {
- private static final String ENCRYPT = "encrypt";
-
@Override
public Collection<String> getColumnNames() {
return Arrays.asList("rule_name", "database", "count");
@@ -48,32 +41,13 @@ public final class CountEncryptRuleExecutor implements RQLExecutor<CountEncryptR
@Override
public Collection<LocalDataQueryResultRow> getRows(final ShardingSphereDatabase database, final CountEncryptRuleStatement sqlStatement) {
Optional<EncryptRule> rule = database.getRuleMetaData().findSingleRule(EncryptRule.class);
- Map<String, LinkedList<Object>> rowMap = new LinkedHashMap<>();
- rule.ifPresent(optional -> addEncryptData(rowMap, database.getName(), rule.get()));
- Iterator<Entry<String, LinkedList<Object>>> data = rowMap.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()));
- }
+ rule.ifPresent(optional -> fillRows(result, rule.get(), database.getName()));
return result;
}
- private void addEncryptData(final Map<String, LinkedList<Object>> rowMap, final String databaseName, final EncryptRule rule) {
- addData(rowMap, ENCRYPT, databaseName, () -> rule.getTables().size());
- }
-
- private void addData(final Map<String, LinkedList<Object>> rowMap, final String dataKey, final String databaseName, final Supplier<Integer> apply) {
- rowMap.compute(dataKey, (key, value) -> buildRow(value, databaseName, apply.get()));
- }
-
- private LinkedList<Object> buildRow(final LinkedList<Object> value, final String databaseName, final int count) {
- if (null == value) {
- return new LinkedList<>(Arrays.asList(databaseName, count));
- }
- value.set(1, (Integer) value.get(1) + count);
- return value;
+ private void fillRows(final Collection<LocalDataQueryResultRow> result, final EncryptRule rule, final String databaseName) {
+ result.add(new LocalDataQueryResultRow("encrypt", databaseName, rule.getTables().size()));
}
@Override
diff --git a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/query/CountEncryptRuleExecutorTest.java b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/query/CountEncryptRuleExecutorTest.java
index 24557bb015c..15bd10aeb92 100644
--- a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/query/CountEncryptRuleExecutorTest.java
+++ b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/query/CountEncryptRuleExecutorTest.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.encrypt.distsql.handler.query;
-import org.apache.shardingsphere.distsql.handler.query.RQLExecutor;
import org.apache.shardingsphere.encrypt.distsql.parser.statement.CountEncryptRuleStatement;
import org.apache.shardingsphere.encrypt.rule.EncryptRule;
import org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
@@ -39,8 +38,7 @@ class CountEncryptRuleExecutorTest {
@Test
void assertGetRowData() {
- RQLExecutor<CountEncryptRuleStatement> executor = new CountEncryptRuleExecutor();
- Collection<LocalDataQueryResultRow> actual = executor.getRows(mockDatabase(), mock(CountEncryptRuleStatement.class));
+ Collection<LocalDataQueryResultRow> actual = new CountEncryptRuleExecutor().getRows(mockDatabase(), mock(CountEncryptRuleStatement.class));
assertThat(actual.size(), is(1));
Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
LocalDataQueryResultRow row = iterator.next();
@@ -51,8 +49,7 @@ class CountEncryptRuleExecutorTest {
@Test
void assertGetColumnNames() {
- RQLExecutor<CountEncryptRuleStatement> executor = new CountEncryptRuleExecutor();
- Collection<String> columns = executor.getColumnNames();
+ Collection<String> columns = new CountEncryptRuleExecutor().getColumnNames();
assertThat(columns.size(), is(3));
Iterator<String> iterator = columns.iterator();
assertThat(iterator.next(), is("rule_name"));
diff --git a/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/query/CountMaskRuleExecutor.java b/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/query/CountMaskRuleExecutor.java
index f1edd19f419..64f6f8a2229 100644
--- a/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/query/CountMaskRuleExecutor.java
+++ b/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/query/CountMaskRuleExecutor.java
@@ -25,20 +25,14 @@ import org.apache.shardingsphere.mask.rule.MaskRule;
import java.util.Arrays;
import java.util.Collection;
-import java.util.LinkedHashMap;
import java.util.LinkedList;
-import java.util.Map;
-import java.util.Map.Entry;
import java.util.Optional;
-import java.util.function.Supplier;
/**
* Count mask rule executor.
*/
public final class CountMaskRuleExecutor implements RQLExecutor<CountMaskRuleStatement> {
- private static final String MASK = "mask";
-
@Override
public Collection<String> getColumnNames() {
return Arrays.asList("rule_name", "database", "count");
@@ -47,30 +41,13 @@ public final class CountMaskRuleExecutor implements RQLExecutor<CountMaskRuleSta
@Override
public Collection<LocalDataQueryResultRow> getRows(final ShardingSphereDatabase database, final CountMaskRuleStatement sqlStatement) {
Optional<MaskRule> rule = database.getRuleMetaData().findSingleRule(MaskRule.class);
- Map<String, LinkedList<Object>> rowMap = new LinkedHashMap<>();
- rule.ifPresent(optional -> addMaskData(rowMap, database.getName(), rule.get()));
Collection<LocalDataQueryResultRow> result = new LinkedList<>();
- for (final Entry<String, LinkedList<Object>> entry : rowMap.entrySet()) {
- entry.getValue().addFirst(entry.getKey());
- result.add(new LocalDataQueryResultRow(entry.getValue()));
- }
+ rule.ifPresent(optional -> fillRows(result, rule.get(), database.getName()));
return result;
}
- private void addMaskData(final Map<String, LinkedList<Object>> rowMap, final String databaseName, final MaskRule rule) {
- addData(rowMap, MASK, databaseName, () -> rule.getTables().size());
- }
-
- private void addData(final Map<String, LinkedList<Object>> rowMap, final String dataKey, final String databaseName, final Supplier<Integer> apply) {
- rowMap.compute(dataKey, (key, value) -> buildRow(value, databaseName, apply.get()));
- }
-
- private LinkedList<Object> buildRow(final LinkedList<Object> value, final String databaseName, final int count) {
- if (null == value) {
- return new LinkedList<>(Arrays.asList(databaseName, count));
- }
- value.set(1, (Integer) value.get(1) + count);
- return value;
+ private void fillRows(final Collection<LocalDataQueryResultRow> result, final MaskRule rule, final String databaseName) {
+ result.add(new LocalDataQueryResultRow("mask", databaseName, rule.getTables().size()));
}
@Override
diff --git a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/query/CountMaskRuleExecutorTest.java b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/query/CountMaskRuleExecutorTest.java
index 16e4d60ae3d..c09824288cc 100644
--- a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/query/CountMaskRuleExecutorTest.java
+++ b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/query/CountMaskRuleExecutorTest.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.mask.distsql.handler.query;
-import org.apache.shardingsphere.distsql.handler.query.RQLExecutor;
import org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
@@ -39,8 +38,7 @@ class CountMaskRuleExecutorTest {
@Test
void assertGetRowData() {
- RQLExecutor<CountMaskRuleStatement> executor = new CountMaskRuleExecutor();
- Collection<LocalDataQueryResultRow> actual = executor.getRows(mockDatabase(), mock(CountMaskRuleStatement.class));
+ Collection<LocalDataQueryResultRow> actual = new CountMaskRuleExecutor().getRows(mockDatabase(), mock(CountMaskRuleStatement.class));
assertThat(actual.size(), is(1));
Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
LocalDataQueryResultRow row = iterator.next();
@@ -51,8 +49,7 @@ class CountMaskRuleExecutorTest {
@Test
void assertGetColumnNames() {
- RQLExecutor<CountMaskRuleStatement> executor = new CountMaskRuleExecutor();
- Collection<String> columns = executor.getColumnNames();
+ Collection<String> columns = new CountMaskRuleExecutor().getColumnNames();
assertThat(columns.size(), is(3));
Iterator<String> iterator = columns.iterator();
assertThat(iterator.next(), is("rule_name"));
diff --git a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/CountReadwriteSplittingRuleExecutor.java b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/CountReadwriteSplittingRuleExecutor.java
index e116faef834..074f29c0557 100644
--- a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/CountReadwriteSplittingRuleExecutor.java
+++ b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/CountReadwriteSplittingRuleExecutor.java
@@ -25,20 +25,14 @@ import org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingRule;
import java.util.Arrays;
import java.util.Collection;
-import java.util.LinkedHashMap;
import java.util.LinkedList;
-import java.util.Map;
-import java.util.Map.Entry;
import java.util.Optional;
-import java.util.function.Supplier;
/**
* Count readwrite-splitting rule executor.
*/
public final class CountReadwriteSplittingRuleExecutor implements RQLExecutor<CountReadwriteSplittingRuleStatement> {
- private static final String READWRITE_SPLITTING = "readwrite_splitting";
-
@Override
public Collection<String> getColumnNames() {
return Arrays.asList("rule_name", "database", "count");
@@ -47,30 +41,13 @@ public final class CountReadwriteSplittingRuleExecutor implements RQLExecutor<Co
@Override
public Collection<LocalDataQueryResultRow> getRows(final ShardingSphereDatabase database, final CountReadwriteSplittingRuleStatement sqlStatement) {
Optional<ReadwriteSplittingRule> rule = database.getRuleMetaData().findSingleRule(ReadwriteSplittingRule.class);
- Map<String, LinkedList<Object>> rowMap = new LinkedHashMap<>();
- rule.ifPresent(optional -> addReadwriteSplittingData(rowMap, database.getName(), rule.get()));
Collection<LocalDataQueryResultRow> result = new LinkedList<>();
- for (final Entry<String, LinkedList<Object>> entry : rowMap.entrySet()) {
- entry.getValue().addFirst(entry.getKey());
- result.add(new LocalDataQueryResultRow(entry.getValue()));
- }
+ rule.ifPresent(optional -> fillRows(result, rule.get(), database.getName()));
return result;
}
- private void addReadwriteSplittingData(final Map<String, LinkedList<Object>> rowMap, final String databaseName, final ReadwriteSplittingRule rule) {
- addData(rowMap, READWRITE_SPLITTING, databaseName, () -> rule.getDataSourceMapper().size());
- }
-
- private void addData(final Map<String, LinkedList<Object>> rowMap, final String dataKey, final String databaseName, final Supplier<Integer> apply) {
- rowMap.compute(dataKey, (key, value) -> buildRow(value, databaseName, apply.get()));
- }
-
- private LinkedList<Object> buildRow(final LinkedList<Object> value, final String databaseName, final int count) {
- if (null == value) {
- return new LinkedList<>(Arrays.asList(databaseName, count));
- }
- value.set(1, (Integer) value.get(1) + count);
- return value;
+ private void fillRows(final Collection<LocalDataQueryResultRow> result, final ReadwriteSplittingRule rule, final String databaseName) {
+ result.add(new LocalDataQueryResultRow("readwrite_splitting", databaseName, rule.getDataSourceMapper().size()));
}
@Override
diff --git a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/CountReadwriteSplittingRuleExecutorTest.java b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/CountReadwriteSplittingRuleExecutorTest.java
index 84609648c01..4cd2373ca90 100644
--- a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/CountReadwriteSplittingRuleExecutorTest.java
+++ b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/CountReadwriteSplittingRuleExecutorTest.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.readwritesplitting.distsql.handler.query;
-import org.apache.shardingsphere.distsql.handler.query.RQLExecutor;
import org.apache.shardingsphere.infra.datasource.mapper.DataSourceRole;
import org.apache.shardingsphere.infra.datasource.mapper.DataSourceRoleInfo;
import org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
@@ -43,8 +42,7 @@ class CountReadwriteSplittingRuleExecutorTest {
@Test
void assertGetRowData() {
- RQLExecutor<CountReadwriteSplittingRuleStatement> executor = new CountReadwriteSplittingRuleExecutor();
- Collection<LocalDataQueryResultRow> actual = executor.getRows(mockDatabase(), mock(CountReadwriteSplittingRuleStatement.class));
+ Collection<LocalDataQueryResultRow> actual = new CountReadwriteSplittingRuleExecutor().getRows(mockDatabase(), mock(CountReadwriteSplittingRuleStatement.class));
assertThat(actual.size(), is(1));
Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
LocalDataQueryResultRow row = iterator.next();
@@ -55,8 +53,7 @@ class CountReadwriteSplittingRuleExecutorTest {
@Test
void assertGetColumnNames() {
- RQLExecutor<CountReadwriteSplittingRuleStatement> executor = new CountReadwriteSplittingRuleExecutor();
- Collection<String> columns = executor.getColumnNames();
+ Collection<String> columns = new CountReadwriteSplittingRuleExecutor().getColumnNames();
assertThat(columns.size(), is(3));
Iterator<String> iterator = columns.iterator();
assertThat(iterator.next(), is("rule_name"));
diff --git a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/query/CountShadowRuleExecutor.java b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/query/CountShadowRuleExecutor.java
index 1b3c8858ec7..cb961f689eb 100644
--- a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/query/CountShadowRuleExecutor.java
+++ b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/query/CountShadowRuleExecutor.java
@@ -25,21 +25,14 @@ import org.apache.shardingsphere.shadow.rule.ShadowRule;
import java.util.Arrays;
import java.util.Collection;
-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;
-import java.util.function.Supplier;
/**
* Count shadow rule executor.
*/
public final class CountShadowRuleExecutor implements RQLExecutor<CountShadowRuleStatement> {
- private static final String SHADOW = "shadow";
-
@Override
public Collection<String> getColumnNames() {
return Arrays.asList("rule_name", "database", "count");
@@ -48,32 +41,13 @@ public final class CountShadowRuleExecutor implements RQLExecutor<CountShadowRul
@Override
public Collection<LocalDataQueryResultRow> getRows(final ShardingSphereDatabase database, final CountShadowRuleStatement sqlStatement) {
Optional<ShadowRule> rule = database.getRuleMetaData().findSingleRule(ShadowRule.class);
- Map<String, LinkedList<Object>> rowMap = new LinkedHashMap<>();
- rule.ifPresent(optional -> addShadowData(rowMap, database.getName(), rule.get()));
- Iterator<Entry<String, LinkedList<Object>>> data = rowMap.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()));
- }
+ rule.ifPresent(optional -> fillRows(result, rule.get(), database.getName()));
return result;
}
- private void addShadowData(final Map<String, LinkedList<Object>> rowMap, final String databaseName, final ShadowRule rule) {
- addData(rowMap, SHADOW, databaseName, () -> rule.getDataSourceMapper().size());
- }
-
- private void addData(final Map<String, LinkedList<Object>> rowMap, final String dataKey, final String databaseName, final Supplier<Integer> apply) {
- rowMap.compute(dataKey, (key, value) -> buildRow(value, databaseName, apply.get()));
- }
-
- private LinkedList<Object> buildRow(final LinkedList<Object> value, final String databaseName, final int count) {
- if (null == value) {
- return new LinkedList<>(Arrays.asList(databaseName, count));
- }
- value.set(1, (Integer) value.get(1) + count);
- return value;
+ private void fillRows(final Collection<LocalDataQueryResultRow> result, final ShadowRule rule, final String databaseName) {
+ result.add(new LocalDataQueryResultRow("shadow", databaseName, rule.getDataSourceMapper().size()));
}
@Override
diff --git a/features/shadow/distsql/handler/src/test/java/org/apache/shardingsphere/shadow/distsql/query/CountShadowRuleExecutorTest.java b/features/shadow/distsql/handler/src/test/java/org/apache/shardingsphere/shadow/distsql/query/CountShadowRuleExecutorTest.java
index 419d1174254..1ba4be5c2d5 100644
--- a/features/shadow/distsql/handler/src/test/java/org/apache/shardingsphere/shadow/distsql/query/CountShadowRuleExecutorTest.java
+++ b/features/shadow/distsql/handler/src/test/java/org/apache/shardingsphere/shadow/distsql/query/CountShadowRuleExecutorTest.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.shadow.distsql.query;
-import org.apache.shardingsphere.distsql.handler.query.RQLExecutor;
import org.apache.shardingsphere.infra.datasource.mapper.DataSourceRole;
import org.apache.shardingsphere.infra.datasource.mapper.DataSourceRoleInfo;
import org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
@@ -45,8 +44,7 @@ class CountShadowRuleExecutorTest {
@Test
void assertGetRowData() {
- RQLExecutor<CountShadowRuleStatement> executor = new CountShadowRuleExecutor();
- Collection<LocalDataQueryResultRow> actual = executor.getRows(mockDatabase(), mock(CountShadowRuleStatement.class));
+ Collection<LocalDataQueryResultRow> actual = new CountShadowRuleExecutor().getRows(mockDatabase(), mock(CountShadowRuleStatement.class));
assertThat(actual.size(), is(1));
Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
LocalDataQueryResultRow row = iterator.next();
@@ -57,8 +55,7 @@ class CountShadowRuleExecutorTest {
@Test
void assertGetColumnNames() {
- RQLExecutor<CountShadowRuleStatement> executor = new CountShadowRuleExecutor();
- Collection<String> columns = executor.getColumnNames();
+ Collection<String> columns = new CountShadowRuleExecutor().getColumnNames();
assertThat(columns.size(), is(3));
Iterator<String> iterator = columns.iterator();
assertThat(iterator.next(), is("rule_name"));
diff --git a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/CountShardingRuleExecutor.java b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/CountShardingRuleExecutor.java
index 5bcf31f2a5a..f59ceceb7ad 100644
--- a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/CountShardingRuleExecutor.java
+++ b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/CountShardingRuleExecutor.java
@@ -28,19 +28,12 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.LinkedList;
import java.util.Optional;
-import java.util.function.Supplier;
/**
* Count sharding rule executor.
*/
public final class CountShardingRuleExecutor implements RQLExecutor<CountShardingRuleStatement> {
- private static final String SHARDING_TABLE = "sharding_table";
-
- private static final String SHARDING_BINDING_TABLE = "sharding_table_reference";
-
- private static final String SHARDING_BROADCAST_TABLE = "broadcast_table";
-
@Override
public Collection<String> getColumnNames() {
return Arrays.asList("rule_name", "database", "count");
@@ -50,18 +43,18 @@ public final class CountShardingRuleExecutor implements RQLExecutor<CountShardin
public Collection<LocalDataQueryResultRow> getRows(final ShardingSphereDatabase database, final CountShardingRuleStatement sqlStatement) {
Optional<ShardingRule> rule = database.getRuleMetaData().findSingleRule(ShardingRule.class);
Collection<LocalDataQueryResultRow> result = new LinkedList<>();
- rule.ifPresent(optional -> addShardingData(result, rule.get(), database.getName()));
+ rule.ifPresent(optional -> fillRows(result, rule.get(), database.getName()));
return result;
}
- private void addShardingData(final Collection<LocalDataQueryResultRow> result, final ShardingRule rule, final String databaseName) {
- addData(result, SHARDING_TABLE, databaseName, () -> rule.getTableRules().size());
- addData(result, SHARDING_BINDING_TABLE, databaseName, () -> ((ShardingRuleConfiguration) rule.getConfiguration()).getBindingTableGroups().size());
- addData(result, SHARDING_BROADCAST_TABLE, databaseName, () -> rule.getBroadcastTables().size());
+ private void fillRows(final Collection<LocalDataQueryResultRow> result, final ShardingRule rule, final String databaseName) {
+ fillRows(result, "sharding_table", databaseName, rule.getTableRules().size());
+ fillRows(result, "sharding_table_reference", databaseName, ((ShardingRuleConfiguration) rule.getConfiguration()).getBindingTableGroups().size());
+ fillRows(result, "broadcast_table", databaseName, rule.getBroadcastTables().size());
}
- private void addData(final Collection<LocalDataQueryResultRow> result, final String dataKey, final String databaseName, final Supplier<Integer> apply) {
- result.add(new LocalDataQueryResultRow(dataKey, databaseName, apply.get()));
+ private void fillRows(final Collection<LocalDataQueryResultRow> result, final String ruleName, final String databaseName, final int count) {
+ result.add(new LocalDataQueryResultRow(ruleName, databaseName, count));
}
@Override
diff --git a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/CountShardingRuleExecutorTest.java b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/CountShardingRuleExecutorTest.java
index aa37cc0f490..9cfbd257c85 100644
--- a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/CountShardingRuleExecutorTest.java
+++ b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/CountShardingRuleExecutorTest.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.sharding.distsql.query;
-import org.apache.shardingsphere.distsql.handler.query.RQLExecutor;
import org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
@@ -46,8 +45,7 @@ class CountShardingRuleExecutorTest {
@Test
void assertGetRowData() {
- RQLExecutor<CountShardingRuleStatement> executor = new CountShardingRuleExecutor();
- Collection<LocalDataQueryResultRow> actual = executor.getRows(mockDatabase(), mock(CountShardingRuleStatement.class));
+ Collection<LocalDataQueryResultRow> actual = new CountShardingRuleExecutor().getRows(mockDatabase(), mock(CountShardingRuleStatement.class));
assertThat(actual.size(), is(3));
Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
LocalDataQueryResultRow row = iterator.next();
@@ -66,8 +64,7 @@ class CountShardingRuleExecutorTest {
@Test
void assertGetColumns() {
- RQLExecutor<CountShardingRuleStatement> executor = new CountShardingRuleExecutor();
- Collection<String> columns = executor.getColumnNames();
+ Collection<String> columns = new CountShardingRuleExecutor().getColumnNames();
assertThat(columns.size(), is(3));
Iterator<String> iterator = columns.iterator();
assertThat(iterator.next(), is("rule_name"));
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/CountSingleTableExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/CountSingleTableExecutor.java
index 1bbff063f64..05e7160403c 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/CountSingleTableExecutor.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/CountSingleTableExecutor.java
@@ -33,14 +33,14 @@ import java.util.Collections;
public final class CountSingleTableExecutor implements RQLExecutor<CountSingleTableStatement> {
@Override
- public Collection<LocalDataQueryResultRow> getRows(final ShardingSphereDatabase database, final CountSingleTableStatement sqlStatement) {
- SingleRule rule = database.getRuleMetaData().getSingleRule(SingleRule.class);
- return Collections.singleton(new LocalDataQueryResultRow(database.getName(), rule.getAllTables().size()));
+ public Collection<String> getColumnNames() {
+ return Arrays.asList("database", "count");
}
@Override
- public Collection<String> getColumnNames() {
- return Arrays.asList("database", "count");
+ public Collection<LocalDataQueryResultRow> getRows(final ShardingSphereDatabase database, final CountSingleTableStatement sqlStatement) {
+ SingleRule rule = database.getRuleMetaData().getSingleRule(SingleRule.class);
+ return Collections.singleton(new LocalDataQueryResultRow(database.getName(), rule.getAllTables().size()));
}
@Override
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/CountSingleTableExecutorTest.java b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/CountSingleTableExecutorTest.java
index 93976858b78..4b74029094d 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/CountSingleTableExecutorTest.java
+++ b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/CountSingleTableExecutorTest.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.proxy.backend.handler.distsql.rql.rule;
-import org.apache.shardingsphere.distsql.handler.query.RQLExecutor;
import org.apache.shardingsphere.distsql.parser.statement.rql.show.CountSingleTableStatement;
import org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
@@ -40,8 +39,7 @@ class CountSingleTableExecutorTest {
@Test
void assertGetRowData() {
- RQLExecutor<CountSingleTableStatement> executor = new CountSingleTableExecutor();
- Collection<LocalDataQueryResultRow> actual = executor.getRows(mockDatabase(), mock(CountSingleTableStatement.class));
+ Collection<LocalDataQueryResultRow> actual = new CountSingleTableExecutor().getRows(mockDatabase(), mock(CountSingleTableStatement.class));
assertThat(actual.size(), is(1));
Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
LocalDataQueryResultRow row = iterator.next();
@@ -51,8 +49,7 @@ class CountSingleTableExecutorTest {
@Test
void assertGetColumnNames() {
- RQLExecutor<CountSingleTableStatement> executor = new CountSingleTableExecutor();
- Collection<String> columns = executor.getColumnNames();
+ Collection<String> columns = new CountSingleTableExecutor().getColumnNames();
assertThat(columns.size(), is(2));
Iterator<String> iterator = columns.iterator();
assertThat(iterator.next(), is("database"));