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 5a8152e6b7d Refactor `DatabaseDiscoveryTypeResultSet`  (#23792)
5a8152e6b7d is described below

commit 5a8152e6b7d9487e40740a7736154240fe3db40c
Author: Zichao <[email protected]>
AuthorDate: Sun Jan 29 16:56:51 2023 +1300

    Refactor `DatabaseDiscoveryTypeResultSet`  (#23792)
    
    * Replace `DatabaseDiscoveryTypeResultSet` with 
`ShowDatabaseDiscoveryTypeExecutor`
    
    * Replace `DatabaseDiscoveryTypeResultSet` with 
`ShowDatabaseDiscoveryTypeExecutor`
    
    * Replace `DatabaseDiscoveryTypeResultSet` with 
`ShowDatabaseDiscoveryTypeExecutor`
---
 ...java => ShowDatabaseDiscoveryTypeExecutor.java} | 33 ++++++++-----------
 ...hardingsphere.distsql.handler.query.RQLExecutor |  1 +
 ...here.distsql.handler.resultset.DistSQLResultSet |  1 -
 ... => ShowDatabaseDiscoveryTypeExecutorTest.java} | 38 ++++++++++++++--------
 .../mode/manager/ContextManager.java               |  5 +--
 5 files changed, 41 insertions(+), 37 deletions(-)

diff --git 
a/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/query/DatabaseDiscoveryTypeResultSet.java
 
b/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/query/ShowDatabaseDiscoveryTypeExecutor.java
similarity index 64%
rename from 
features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/query/DatabaseDiscoveryTypeResultSet.java
rename to 
features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/query/ShowDatabaseDiscoveryTypeExecutor.java
index 50969f61dfe..ddb6b47ad1e 100644
--- 
a/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/query/DatabaseDiscoveryTypeResultSet.java
+++ 
b/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/query/ShowDatabaseDiscoveryTypeExecutor.java
@@ -20,28 +20,32 @@ package 
org.apache.shardingsphere.dbdiscovery.distsql.handler.query;
 import 
org.apache.shardingsphere.dbdiscovery.api.config.DatabaseDiscoveryRuleConfiguration;
 import 
org.apache.shardingsphere.dbdiscovery.distsql.parser.statement.ShowDatabaseDiscoveryTypesStatement;
 import org.apache.shardingsphere.dbdiscovery.rule.DatabaseDiscoveryRule;
+import org.apache.shardingsphere.distsql.handler.query.RQLExecutor;
 import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
-import 
org.apache.shardingsphere.distsql.handler.resultset.DatabaseDistSQLResultSet;
+import 
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-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.Map.Entry;
 
 /**
- * Result set for show database discovery type.
+ * Show database discovery type executor.
  */
-public final class DatabaseDiscoveryTypeResultSet implements 
DatabaseDistSQLResultSet {
-    
-    private Iterator<Entry<String, AlgorithmConfiguration>> data = 
Collections.emptyIterator();
+public final class ShowDatabaseDiscoveryTypeExecutor implements 
RQLExecutor<ShowDatabaseDiscoveryTypesStatement> {
     
     @Override
-    public void init(final ShardingSphereDatabase database, final SQLStatement 
sqlStatement) {
+    public Collection<LocalDataQueryResultRow> getRows(final 
ShardingSphereDatabase database, final ShowDatabaseDiscoveryTypesStatement 
sqlStatement) {
         DatabaseDiscoveryRule rule = 
database.getRuleMetaData().getSingleRule(DatabaseDiscoveryRule.class);
-        data = ((DatabaseDiscoveryRuleConfiguration) 
rule.getConfiguration()).getDiscoveryTypes().entrySet().iterator();
+        Iterator<Entry<String, AlgorithmConfiguration>> data = 
((DatabaseDiscoveryRuleConfiguration) 
rule.getConfiguration()).getDiscoveryTypes().entrySet().iterator();
+        Collection<LocalDataQueryResultRow> result = new LinkedList<>();
+        while (data.hasNext()) {
+            Entry<String, AlgorithmConfiguration> entry = data.next();
+            result.add(new LocalDataQueryResultRow(entry.getKey(), 
entry.getValue().getType(), entry.getValue().getProps()));
+        }
+        return result;
     }
     
     @Override
@@ -49,17 +53,6 @@ public final class DatabaseDiscoveryTypeResultSet implements 
DatabaseDistSQLResu
         return Arrays.asList("name", "type", "props");
     }
     
-    @Override
-    public boolean next() {
-        return data.hasNext();
-    }
-    
-    @Override
-    public Collection<Object> getRowData() {
-        Entry<String, AlgorithmConfiguration> entry = data.next();
-        return Arrays.asList(entry.getKey(), entry.getValue().getType(), 
entry.getValue().getProps());
-    }
-    
     @Override
     public String getType() {
         return ShowDatabaseDiscoveryTypesStatement.class.getName();
diff --git 
a/features/db-discovery/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.query.RQLExecutor
 
b/features/db-discovery/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.query.RQLExecutor
index c6ffa89b25d..d951881124d 100644
--- 
a/features/db-discovery/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.query.RQLExecutor
+++ 
b/features/db-discovery/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.query.RQLExecutor
@@ -16,3 +16,4 @@
 #
 
 
org.apache.shardingsphere.dbdiscovery.distsql.handler.query.ShowDatabaseDiscoveryRuleExecutor
+org.apache.shardingsphere.dbdiscovery.distsql.handler.query.ShowDatabaseDiscoveryTypeExecutor
diff --git 
a/features/db-discovery/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.resultset.DistSQLResultSet
 
b/features/db-discovery/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.resultset.DistSQLResultSet
index a504b7063a7..379135f6263 100644
--- 
a/features/db-discovery/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.resultset.DistSQLResultSet
+++ 
b/features/db-discovery/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.resultset.DistSQLResultSet
@@ -15,6 +15,5 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.dbdiscovery.distsql.handler.query.DatabaseDiscoveryTypeResultSet
 
org.apache.shardingsphere.dbdiscovery.distsql.handler.query.DatabaseDiscoveryHeartbeatResultSet
 
org.apache.shardingsphere.dbdiscovery.distsql.handler.query.CountDatabaseDiscoveryRuleResultSet
diff --git 
a/features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/query/DatabaseDiscoveryTypeResultSetTest.java
 
b/features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/query/ShowDatabaseDiscoveryTypeExecutorTest.java
similarity index 69%
rename from 
features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/query/DatabaseDiscoveryTypeResultSetTest.java
rename to 
features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/query/ShowDatabaseDiscoveryTypeExecutorTest.java
index 3173dba8727..ee2b03e6bca 100644
--- 
a/features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/query/DatabaseDiscoveryTypeResultSetTest.java
+++ 
b/features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/query/ShowDatabaseDiscoveryTypeExecutorTest.java
@@ -19,22 +19,22 @@ package 
org.apache.shardingsphere.dbdiscovery.distsql.handler.query;
 
 import 
org.apache.shardingsphere.dbdiscovery.api.config.DatabaseDiscoveryRuleConfiguration;
 import 
org.apache.shardingsphere.dbdiscovery.api.config.rule.DatabaseDiscoveryDataSourceRuleConfiguration;
-import 
org.apache.shardingsphere.dbdiscovery.distsql.parser.statement.ShowDatabaseDiscoveryRulesStatement;
+import 
org.apache.shardingsphere.dbdiscovery.distsql.parser.statement.ShowDatabaseDiscoveryTypesStatement;
 import org.apache.shardingsphere.dbdiscovery.rule.DatabaseDiscoveryRule;
-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.config.rule.RuleConfiguration;
+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.test.util.PropertiesBuilder;
 import org.apache.shardingsphere.test.util.PropertiesBuilder.Property;
 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 java.util.Map;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -43,7 +43,7 @@ import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
-public final class DatabaseDiscoveryTypeResultSetTest {
+public final class ShowDatabaseDiscoveryTypeExecutorTest {
     
     @Test
     public void assertGetRowData() {
@@ -51,15 +51,25 @@ public final class DatabaseDiscoveryTypeResultSetTest {
         DatabaseDiscoveryRule rule = mock(DatabaseDiscoveryRule.class);
         when(rule.getConfiguration()).thenReturn(createRuleConfiguration());
         when(database.getRuleMetaData()).thenReturn(new 
ShardingSphereRuleMetaData(Collections.singleton(rule)));
-        DatabaseDistSQLResultSet resultSet = new 
DatabaseDiscoveryTypeResultSet();
-        resultSet.init(database, 
mock(ShowDatabaseDiscoveryRulesStatement.class));
-        Collection<String> columnNames = resultSet.getColumnNames();
-        List<Object> actual = new ArrayList<>(resultSet.getRowData());
-        assertThat(columnNames.size(), is(3));
-        assertThat(actual.size(), is(3));
-        assertThat(actual.get(0), is("test_name"));
-        assertThat(actual.get(1), is("MySQL.MGR"));
-        assertThat(actual.get(2).toString(), is("{type_key=type_value}"));
+        RQLExecutor<ShowDatabaseDiscoveryTypesStatement> executor = new 
ShowDatabaseDiscoveryTypeExecutor();
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(database, mock(ShowDatabaseDiscoveryTypesStatement.class));
+        assertThat(actual.size(), is(1));
+        Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
+        LocalDataQueryResultRow row = iterator.next();
+        assertThat(row.getCell(1), is("test_name"));
+        assertThat(row.getCell(2), is("MySQL.MGR"));
+        assertThat(row.getCell(3).toString(), is("{type_key=type_value}"));
+    }
+    
+    @Test
+    public void assertGetColumnNames() {
+        RQLExecutor<ShowDatabaseDiscoveryTypesStatement> executor = new 
ShowDatabaseDiscoveryTypeExecutor();
+        Collection<String> columns = executor.getColumnNames();
+        assertThat(columns.size(), is(3));
+        Iterator<String> iterator = columns.iterator();
+        assertThat(iterator.next(), is("name"));
+        assertThat(iterator.next(), is("type"));
+        assertThat(iterator.next(), is("props"));
     }
     
     private RuleConfiguration createRuleConfiguration() {
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
index d1439f031da..96fd351e286 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
@@ -274,8 +274,9 @@ public final class ContextManager implements AutoCloseable {
             MetaDataContexts reloadMetaDataContexts = 
createMetaDataContexts(databaseName, switchingResource, null);
             
reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getSchemas().forEach((schemaName,
 schema) -> 
reloadMetaDataContexts.getPersistService().getDatabaseMetaDataService()
                     
.persist(reloadMetaDataContexts.getMetaData().getActualDatabaseName(databaseName),
 schemaName, schema));
-            
Optional.ofNullable(reloadMetaDataContexts.getShardingSphereData().getDatabaseData().get(databaseName)).ifPresent(optional
 -> optional.getSchemaData().forEach((schemaName, schemaData) ->
-                    
reloadMetaDataContexts.getPersistService().getShardingSphereDataPersistService().persist(databaseName,
 schemaName, schemaData, metaDataContexts.getMetaData().getDatabases())));
+            
Optional.ofNullable(reloadMetaDataContexts.getShardingSphereData().getDatabaseData().get(databaseName))
+                    .ifPresent(optional -> 
optional.getSchemaData().forEach((schemaName, schemaData) -> 
reloadMetaDataContexts.getPersistService().getShardingSphereDataPersistService()
+                            .persist(databaseName, schemaName, schemaData, 
metaDataContexts.getMetaData().getDatabases())));
             alterSchemaMetaData(databaseName, 
reloadMetaDataContexts.getMetaData().getDatabase(databaseName), 
metaDataContexts.getMetaData().getDatabase(databaseName));
             metaDataContexts = reloadMetaDataContexts;
             
metaDataContexts.getMetaData().getDatabases().putAll(newShardingSphereDatabase(metaDataContexts.getMetaData().getDatabase(databaseName)));

Reply via email to