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 0a266e17979 Replace `CountReadwriteSplittingRuleResultSet` with
`CountReadwriteSplittingRuleExecutor` (#23807)
0a266e17979 is described below
commit 0a266e17979fbffb3b5f6a6170956c72256ec5db
Author: Zichao <[email protected]>
AuthorDate: Mon Jan 30 00:24:00 2023 +1300
Replace `CountReadwriteSplittingRuleResultSet` with
`CountReadwriteSplittingRuleExecutor` (#23807)
---
...va => CountReadwriteSplittingRuleExecutor.java} | 37 ++++++++-------------
...hardingsphere.distsql.handler.query.RQLExecutor | 1 +
...here.distsql.handler.resultset.DistSQLResultSet | 18 ----------
...> CountReadwriteSplittingRuleExecutorTest.java} | 38 ++++++++++++++--------
4 files changed, 38 insertions(+), 56 deletions(-)
diff --git
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/CountReadwriteSplittingRuleResultSet.java
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/CountReadwriteSplittingRuleExecutor.java
similarity index 71%
rename from
features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/CountReadwriteSplittingRuleResultSet.java
rename to
features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/CountReadwriteSplittingRuleExecutor.java
index a545a8e325e..ffb6f6f5073 100644
---
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/CountReadwriteSplittingRuleResultSet.java
+++
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/CountReadwriteSplittingRuleExecutor.java
@@ -17,16 +17,14 @@
package org.apache.shardingsphere.readwritesplitting.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.readwritesplitting.distsql.parser.statement.CountReadwriteSplittingRuleStatement;
import
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingRule;
-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.LinkedHashMap;
import java.util.LinkedList;
import java.util.Map;
@@ -35,25 +33,28 @@ import java.util.Optional;
import java.util.function.Supplier;
/**
- * Result set for count readwrite splitting rule.
+ * Count readwrite splitting rule executor.
*/
-public final class CountReadwriteSplittingRuleResultSet implements
DatabaseDistSQLResultSet {
+public final class CountReadwriteSplittingRuleExecutor implements
RQLExecutor<CountReadwriteSplittingRuleStatement> {
private static final String READWRITE_SPLITTING = "readwrite_splitting";
- private Iterator<Entry<String, LinkedList<Object>>> data =
Collections.emptyIterator();
-
@Override
public Collection<String> getColumnNames() {
return Arrays.asList("rule_name", "database", "count");
}
@Override
- public void init(final ShardingSphereDatabase database, final SQLStatement
sqlStatement) {
+ public Collection<LocalDataQueryResultRow> getRows(final
ShardingSphereDatabase database, final CountReadwriteSplittingRuleStatement
sqlStatement) {
Optional<ReadwriteSplittingRule> rule =
database.getRuleMetaData().findSingleRule(ReadwriteSplittingRule.class);
- Map<String, LinkedList<Object>> result = new LinkedHashMap<>();
- rule.ifPresent(optional -> addReadwriteSplittingData(result,
database.getName(), rule.get()));
- data = result.entrySet().iterator();
+ 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()));
+ }
+ return result;
}
private void addReadwriteSplittingData(final Map<String,
LinkedList<Object>> rowMap, final String databaseName, final
ReadwriteSplittingRule rule) {
@@ -72,18 +73,6 @@ public final class CountReadwriteSplittingRuleResultSet
implements DatabaseDistS
return value;
}
- @Override
- public boolean next() {
- return data.hasNext();
- }
-
- @Override
- public Collection<Object> getRowData() {
- Entry<String, LinkedList<Object>> entry = data.next();
- entry.getValue().addFirst(entry.getKey());
- return entry.getValue();
- }
-
@Override
public String getType() {
return CountReadwriteSplittingRuleStatement.class.getName();
diff --git
a/features/readwrite-splitting/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.query.RQLExecutor
b/features/readwrite-splitting/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.query.RQLExecutor
index 726be4e7e41..50ea934d4e2 100644
---
a/features/readwrite-splitting/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.query.RQLExecutor
+++
b/features/readwrite-splitting/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.query.RQLExecutor
@@ -16,3 +16,4 @@
#
org.apache.shardingsphere.readwritesplitting.distsql.handler.query.ShowReadwriteSplittingRuleExecutor
+org.apache.shardingsphere.readwritesplitting.distsql.handler.query.CountReadwriteSplittingRuleExecutor
diff --git
a/features/readwrite-splitting/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.resultset.DistSQLResultSet
b/features/readwrite-splitting/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.resultset.DistSQLResultSet
deleted file mode 100644
index 9ed33dec665..00000000000
---
a/features/readwrite-splitting/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.resultset.DistSQLResultSet
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-org.apache.shardingsphere.readwritesplitting.distsql.handler.query.CountReadwriteSplittingRuleResultSet
diff --git
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/CountReadwriteSplittingRuleResultSetTest.java
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/CountReadwriteSplittingRuleExecutorTest.java
similarity index 64%
rename from
features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/CountReadwriteSplittingRuleResultSetTest.java
rename to
features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/CountReadwriteSplittingRuleExecutorTest.java
index 6040685f3ce..bda84aa021d 100644
---
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/CountReadwriteSplittingRuleResultSetTest.java
+++
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/CountReadwriteSplittingRuleExecutorTest.java
@@ -17,38 +17,48 @@
package org.apache.shardingsphere.readwritesplitting.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;
import
org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.CountReadwriteSplittingRuleStatement;
import
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingRule;
import org.junit.Test;
-import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
import java.util.Collections;
-import java.util.List;
+import java.util.Iterator;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-public final class CountReadwriteSplittingRuleResultSetTest {
+public final class CountReadwriteSplittingRuleExecutorTest {
@Test
public void assertGetRowData() {
- CountReadwriteSplittingRuleResultSet resultSet = new
CountReadwriteSplittingRuleResultSet();
- resultSet.init(mockDatabase(),
mock(CountReadwriteSplittingRuleStatement.class));
- assertTrue(resultSet.next());
- List<Object> actual = new ArrayList<>(resultSet.getRowData());
- assertThat(actual.size(), is(3));
- assertThat(actual.get(0), is("readwrite_splitting"));
- assertThat(actual.get(1), is("db_1"));
- assertThat(actual.get(2), is(1));
- assertFalse(resultSet.next());
+ RQLExecutor<CountReadwriteSplittingRuleStatement> executor = new
CountReadwriteSplittingRuleExecutor();
+ Collection<LocalDataQueryResultRow> actual =
executor.getRows(mockDatabase(),
mock(CountReadwriteSplittingRuleStatement.class));
+ assertThat(actual.size(), is(1));
+ Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
+ LocalDataQueryResultRow row = iterator.next();
+ assertThat(row.getCell(1), is("readwrite_splitting"));
+ assertThat(row.getCell(2), is("db_1"));
+ assertThat(row.getCell(3), is(1));
+ }
+
+ @Test
+ public void assertGetColumnNames() {
+ RQLExecutor<CountReadwriteSplittingRuleStatement> executor = new
CountReadwriteSplittingRuleExecutor();
+ Collection<String> columns = executor.getColumnNames();
+ assertThat(columns.size(), is(3));
+ Iterator<String> iterator = columns.iterator();
+ assertThat(iterator.next(), is("rule_name"));
+ assertThat(iterator.next(), is("database"));
+ assertThat(iterator.next(), is("count"));
}
private ShardingSphereDatabase mockDatabase() {