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/01/30 15:54:50 UTC
[shardingsphere] branch master updated: Replace `ShardingTableRulesUsedAlgorithmResultSet` with `ShowShardingTableRulesUsedAlgorithmExecutor` (#23847)
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 ed263e8f564 Replace `ShardingTableRulesUsedAlgorithmResultSet` with `ShowShardingTableRulesUsedAlgorithmExecutor` (#23847)
ed263e8f564 is described below
commit ed263e8f564fd6fe630ac505590f5f9d4cbcd527
Author: Zichao <57...@users.noreply.github.com>
AuthorDate: Tue Jan 31 04:54:40 2023 +1300
Replace `ShardingTableRulesUsedAlgorithmResultSet` with `ShowShardingTableRulesUsedAlgorithmExecutor` (#23847)
---
...owShardingTableRulesUsedAlgorithmExecutor.java} | 37 ++++++------------
...hardingsphere.distsql.handler.query.RQLExecutor | 1 +
...here.distsql.handler.resultset.DistSQLResultSet | 1 -
...ardingTableRulesUsedAlgorithmExecutorTest.java} | 45 ++++++++++++++--------
4 files changed, 41 insertions(+), 43 deletions(-)
diff --git a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/ShardingTableRulesUsedAlgorithmResultSet.java b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/ShowShardingTableRulesUsedAlgorithmExecutor.java
similarity index 71%
rename from features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/ShardingTableRulesUsedAlgorithmResultSet.java
rename to features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/ShowShardingTableRulesUsedAlgorithmExecutor.java
index fdf7b59551a..8fe95f8bb03 100644
--- a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/ShardingTableRulesUsedAlgorithmResultSet.java
+++ b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/ShowShardingTableRulesUsedAlgorithmExecutor.java
@@ -17,37 +17,32 @@
package org.apache.shardingsphere.sharding.distsql.handler.query;
-import org.apache.shardingsphere.distsql.handler.resultset.DatabaseDistSQLResultSet;
+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.sharding.api.config.ShardingRuleConfiguration;
import org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingTableRulesUsedAlgorithmStatement;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
-import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import java.util.Arrays;
import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
import java.util.LinkedList;
import java.util.Optional;
/**
- * Result set for show sharding table rules used algorithm.
+ * Show sharding table rules used algorithm executor.
*/
-public final class ShardingTableRulesUsedAlgorithmResultSet implements DatabaseDistSQLResultSet {
-
- private Iterator<Collection<Object>> data = Collections.emptyIterator();
+public final class ShowShardingTableRulesUsedAlgorithmExecutor implements RQLExecutor<ShowShardingTableRulesUsedAlgorithmStatement> {
@Override
- public void init(final ShardingSphereDatabase database, final SQLStatement sqlStatement) {
- ShowShardingTableRulesUsedAlgorithmStatement statement = (ShowShardingTableRulesUsedAlgorithmStatement) sqlStatement;
- Collection<Collection<Object>> data = new LinkedList<>();
+ public Collection<LocalDataQueryResultRow> getRows(final ShardingSphereDatabase database, final ShowShardingTableRulesUsedAlgorithmStatement sqlStatement) {
+ Collection<LocalDataQueryResultRow> result = new LinkedList<>();
Optional<ShardingRule> rule = database.getRuleMetaData().findSingleRule(ShardingRule.class);
- rule.ifPresent(optional -> requireResult(statement, data, optional));
- this.data = data.iterator();
+ rule.ifPresent(optional -> requireResult(sqlStatement, result, optional));
+ return result;
}
- private void requireResult(final ShowShardingTableRulesUsedAlgorithmStatement statement, final Collection<Collection<Object>> data, final ShardingRule rule) {
+ private void requireResult(final ShowShardingTableRulesUsedAlgorithmStatement statement, final Collection<LocalDataQueryResultRow> result, final ShardingRule rule) {
if (!statement.getShardingAlgorithmName().isPresent()) {
return;
}
@@ -62,12 +57,12 @@ public final class ShardingTableRulesUsedAlgorithmResultSet implements DatabaseD
|| (null != each.getDatabaseShardingStrategy() && algorithmName.equals(each.getDatabaseShardingStrategy().getShardingAlgorithmName())))
|| ((null == each.getTableShardingStrategy() && matchDefaultTableShardingStrategy)
|| (null != each.getTableShardingStrategy() && algorithmName.equals(each.getTableShardingStrategy().getShardingAlgorithmName())))) {
- data.add(Arrays.asList("table", each.getLogicTable()));
+ result.add(new LocalDataQueryResultRow("table", each.getLogicTable()));
}
});
config.getAutoTables().forEach(each -> {
if (null != each.getShardingStrategy() && algorithmName.equals(each.getShardingStrategy().getShardingAlgorithmName())) {
- data.add(Arrays.asList("auto_table", each.getLogicTable()));
+ result.add(new LocalDataQueryResultRow("auto_table", each.getLogicTable()));
}
});
}
@@ -77,16 +72,6 @@ public final class ShardingTableRulesUsedAlgorithmResultSet implements DatabaseD
return Arrays.asList("type", "name");
}
- @Override
- public boolean next() {
- return data.hasNext();
- }
-
- @Override
- public Collection<Object> getRowData() {
- return data.next();
- }
-
@Override
public String getType() {
return ShowShardingTableRulesUsedAlgorithmStatement.class.getName();
diff --git a/features/sharding/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.query.RQLExecutor b/features/sharding/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.query.RQLExecutor
index 44b7df081fb..f2a24c4a432 100644
--- a/features/sharding/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.query.RQLExecutor
+++ b/features/sharding/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.query.RQLExecutor
@@ -20,3 +20,4 @@ org.apache.shardingsphere.sharding.distsql.handler.query.ShowShardingAlgorithmEx
org.apache.shardingsphere.sharding.distsql.handler.query.ShowShardingKeyGeneratorExecutor
org.apache.shardingsphere.sharding.distsql.handler.query.ShowDefaultShardingStrategyExecutor
org.apache.shardingsphere.sharding.distsql.handler.query.ShowShardingAuditorsExecutor
+org.apache.shardingsphere.sharding.distsql.handler.query.ShowShardingTableRulesUsedAlgorithmExecutor
diff --git a/features/sharding/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.resultset.DistSQLResultSet b/features/sharding/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.resultset.DistSQLResultSet
index 7ccae07b19d..c7f19aa164d 100644
--- a/features/sharding/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.resultset.DistSQLResultSet
+++ b/features/sharding/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.resultset.DistSQLResultSet
@@ -21,7 +21,6 @@ org.apache.shardingsphere.sharding.distsql.handler.query.ShardingTableNodesResul
org.apache.shardingsphere.sharding.distsql.handler.query.UnusedShardingAlgorithmsResultSet
org.apache.shardingsphere.sharding.distsql.handler.query.UnusedShardingKeyGeneratorResultSet
org.apache.shardingsphere.sharding.distsql.handler.query.UnusedShardingAuditorsResultSet
-org.apache.shardingsphere.sharding.distsql.handler.query.ShardingTableRulesUsedAlgorithmResultSet
org.apache.shardingsphere.sharding.distsql.handler.query.ShardingTableRulesUsedKeyGeneratorResultSet
org.apache.shardingsphere.sharding.distsql.handler.query.ShardingTableRulesUsedAuditorResultSet
org.apache.shardingsphere.sharding.distsql.handler.query.CountShardingRuleResultSet
diff --git a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableRulesUsedAlgorithmResultSetTest.java b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableRulesUsedAlgorithmExecutorTest.java
similarity index 78%
rename from features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableRulesUsedAlgorithmResultSetTest.java
rename to features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableRulesUsedAlgorithmExecutorTest.java
index 964322e8681..a177d4c32b3 100644
--- a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableRulesUsedAlgorithmResultSetTest.java
+++ b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableRulesUsedAlgorithmExecutorTest.java
@@ -17,8 +17,9 @@
package org.apache.shardingsphere.sharding.distsql.query;
-import org.apache.shardingsphere.distsql.handler.resultset.DatabaseDistSQLResultSet;
+import org.apache.shardingsphere.distsql.handler.query.RQLExecutor;
import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
+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;
import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
@@ -27,16 +28,16 @@ import org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfi
import org.apache.shardingsphere.sharding.api.config.strategy.keygen.KeyGenerateStrategyConfiguration;
import org.apache.shardingsphere.sharding.api.config.strategy.sharding.NoneShardingStrategyConfiguration;
import org.apache.shardingsphere.sharding.api.config.strategy.sharding.StandardShardingStrategyConfiguration;
-import org.apache.shardingsphere.sharding.distsql.handler.query.ShardingTableRulesUsedAlgorithmResultSet;
+import org.apache.shardingsphere.sharding.distsql.handler.query.ShowShardingTableRulesUsedAlgorithmExecutor;
import org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingTableRulesUsedAlgorithmStatement;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.apache.shardingsphere.test.util.PropertiesBuilder;
import org.apache.shardingsphere.test.util.PropertiesBuilder.Property;
import org.junit.Test;
-import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
-import java.util.List;
+import java.util.Iterator;
import java.util.Optional;
import java.util.Properties;
@@ -46,7 +47,7 @@ import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-public final class ShowShardingTableRulesUsedAlgorithmResultSetTest {
+public final class ShowShardingTableRulesUsedAlgorithmExecutorTest {
@Test
public void assertGetRowData() {
@@ -54,20 +55,32 @@ public final class ShowShardingTableRulesUsedAlgorithmResultSetTest {
ShardingRule rule = mock(ShardingRule.class);
when(rule.getConfiguration()).thenReturn(createRuleConfiguration());
when(database.getRuleMetaData()).thenReturn(new ShardingSphereRuleMetaData(Collections.singleton(rule)));
- DatabaseDistSQLResultSet resultSet = new ShardingTableRulesUsedAlgorithmResultSet();
+ RQLExecutor<ShowShardingTableRulesUsedAlgorithmStatement> executor = new ShowShardingTableRulesUsedAlgorithmExecutor();
ShowShardingTableRulesUsedAlgorithmStatement statement = mock(ShowShardingTableRulesUsedAlgorithmStatement.class);
when(statement.getShardingAlgorithmName()).thenReturn(Optional.of("t_order_inline"));
- resultSet.init(database, statement);
- List<Object> actual = new ArrayList<>(resultSet.getRowData());
- assertThat(actual.size(), is(2));
- assertThat(actual.get(0), is("table"));
- assertThat(actual.get(1), is("t_order"));
+ Collection<LocalDataQueryResultRow> actual = executor.getRows(database, statement);
+ assertThat(actual.size(), is(1));
+ Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
+ LocalDataQueryResultRow row = iterator.next();
+ assertThat(row.getCell(1), is("table"));
+ assertThat(row.getCell(2), is("t_order"));
when(statement.getShardingAlgorithmName()).thenReturn(Optional.of("auto_mod"));
- resultSet.init(database, statement);
- actual = new ArrayList<>(resultSet.getRowData());
- assertThat(actual.size(), is(2));
- assertThat(actual.get(0), is("auto_table"));
- assertThat(actual.get(1), is("t_order_auto"));
+ actual = executor.getRows(database, statement);
+ assertThat(actual.size(), is(1));
+ iterator = actual.iterator();
+ row = iterator.next();
+ assertThat(row.getCell(1), is("auto_table"));
+ assertThat(row.getCell(2), is("t_order_auto"));
+ }
+
+ @Test
+ public void assertGetColumnNames() {
+ RQLExecutor<ShowShardingTableRulesUsedAlgorithmStatement> executor = new ShowShardingTableRulesUsedAlgorithmExecutor();
+ Collection<String> columns = executor.getColumnNames();
+ assertThat(columns.size(), is(2));
+ Iterator<String> iterator = columns.iterator();
+ assertThat(iterator.next(), is("type"));
+ assertThat(iterator.next(), is("name"));
}
private ShardingRuleConfiguration createRuleConfiguration() {