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

duanzhengqiang 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 67afb481405 Refactor GlobalRuleDistSQLResultSet impls (#23767)
67afb481405 is described below

commit 67afb481405bdf989e9cb84dba115a058db77ad0
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Jan 28 14:14:11 2023 +0800

    Refactor GlobalRuleDistSQLResultSet impls (#23767)
    
    * Refactor DriverStateContextTest
    
    * Revise java doc
    
    * Refactor GlobalRuleDistSQLResultSet
---
 .../handler/resultset/GlobalRuleDistSQLResultSet.java   |  4 ++--
 .../infra/metadata/ShardingSphereMetaData.java          |  2 +-
 .../executor/sql/execute/engine/raw/RawExecutor.java    |  3 +--
 .../distsql/handler/AuthorityRuleResultSet.java         |  7 ++++---
 .../distsql/handler/query/SQLParserRuleResultSet.java   |  7 ++++---
 .../distsql/handler/SQLTranslatorRuleResultSet.java     |  7 ++++---
 .../distsql/handler/query/TrafficRuleResultSet.java     | 17 +++++++----------
 .../distsql/handler/query/TransactionRuleResultSet.java |  7 ++++---
 .../ral/QueryableGlobalRuleRALBackendHandler.java       | 15 +++++----------
 9 files changed, 32 insertions(+), 37 deletions(-)

diff --git 
a/distsql/handler/src/main/java/org/apache/shardingsphere/distsql/handler/resultset/GlobalRuleDistSQLResultSet.java
 
b/distsql/handler/src/main/java/org/apache/shardingsphere/distsql/handler/resultset/GlobalRuleDistSQLResultSet.java
index 7c77ec1d07d..fc0bb0a494b 100644
--- 
a/distsql/handler/src/main/java/org/apache/shardingsphere/distsql/handler/resultset/GlobalRuleDistSQLResultSet.java
+++ 
b/distsql/handler/src/main/java/org/apache/shardingsphere/distsql/handler/resultset/GlobalRuleDistSQLResultSet.java
@@ -28,8 +28,8 @@ public interface GlobalRuleDistSQLResultSet extends 
DistSQLResultSet {
     /**
      * Initialize data.
      *
-     * @param ruleMetaData rule meta data
+     * @param globalRuleMetaData global rule meta data
      * @param sqlStatement SQL statement
      */
-    void init(ShardingSphereRuleMetaData ruleMetaData, SQLStatement 
sqlStatement);
+    void init(ShardingSphereRuleMetaData globalRuleMetaData, SQLStatement 
sqlStatement);
 }
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaData.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaData.java
index 14102a6fe16..19686adda25 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaData.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaData.java
@@ -34,7 +34,7 @@ import java.util.Properties;
 import java.util.concurrent.ConcurrentHashMap;
 
 /**
- * Meta data contexts.
+ * ShardingSphere meta data.
  */
 @Getter
 public final class ShardingSphereMetaData {
diff --git 
a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/engine/raw/RawExecutor.java
 
b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/engine/raw/RawExecutor.java
index 84baf7b914e..e79e9ad70c4 100644
--- 
a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/engine/raw/RawExecutor.java
+++ 
b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/engine/raw/RawExecutor.java
@@ -63,8 +63,7 @@ public final class RawExecutor {
             // TODO Load query header for first query
             List<ExecuteResult> results = execute(executionGroupContext, 
(RawSQLExecutorCallback) null, callback);
             
executeProcessEngine.finishExecution(executionGroupContext.getExecutionID(), 
eventBusContext);
-            return results.isEmpty() || Objects.isNull(results.get(0)) ? 
Collections
-                    .singletonList(new UpdateResult(0, 0L)) : results;
+            return results.isEmpty() || Objects.isNull(results.get(0)) ? 
Collections.singletonList(new UpdateResult(0, 0L)) : results;
         } finally {
             executeProcessEngine.cleanExecution();
         }
diff --git 
a/kernel/authority/distsql/handler/src/main/java/org/apache/shardingsphere/authority/distsql/handler/AuthorityRuleResultSet.java
 
b/kernel/authority/distsql/handler/src/main/java/org/apache/shardingsphere/authority/distsql/handler/AuthorityRuleResultSet.java
index e4be48c09f1..603bb46c7b3 100644
--- 
a/kernel/authority/distsql/handler/src/main/java/org/apache/shardingsphere/authority/distsql/handler/AuthorityRuleResultSet.java
+++ 
b/kernel/authority/distsql/handler/src/main/java/org/apache/shardingsphere/authority/distsql/handler/AuthorityRuleResultSet.java
@@ -41,11 +41,12 @@ public final class AuthorityRuleResultSet implements 
GlobalRuleDistSQLResultSet
     
     private static final String PROPS = "props";
     
-    private Iterator<Collection<Object>> data = Collections.emptyIterator();
+    private Iterator<Collection<Object>> data;
     
     @Override
-    public void init(final ShardingSphereRuleMetaData ruleMetaData, final 
SQLStatement sqlStatement) {
-        ruleMetaData.findSingleRule(AuthorityRule.class).ifPresent(optional -> 
data = buildData(optional.getConfiguration()).iterator());
+    public void init(final ShardingSphereRuleMetaData globalRuleMetaData, 
final SQLStatement sqlStatement) {
+        AuthorityRule rule = 
globalRuleMetaData.getSingleRule(AuthorityRule.class);
+        data = buildData(rule.getConfiguration()).iterator();
     }
     
     private Collection<Collection<Object>> buildData(final 
AuthorityRuleConfiguration ruleConfig) {
diff --git 
a/kernel/parser/distsql/handler/src/main/java/org/apache/shardingsphere/parser/distsql/handler/query/SQLParserRuleResultSet.java
 
b/kernel/parser/distsql/handler/src/main/java/org/apache/shardingsphere/parser/distsql/handler/query/SQLParserRuleResultSet.java
index 7407ddacf73..f285c458758 100644
--- 
a/kernel/parser/distsql/handler/src/main/java/org/apache/shardingsphere/parser/distsql/handler/query/SQLParserRuleResultSet.java
+++ 
b/kernel/parser/distsql/handler/src/main/java/org/apache/shardingsphere/parser/distsql/handler/query/SQLParserRuleResultSet.java
@@ -40,11 +40,12 @@ public final class SQLParserRuleResultSet implements 
GlobalRuleDistSQLResultSet
     
     private static final String SQL_STATEMENT_CACHE = "sql_statement_cache";
     
-    private Iterator<Collection<Object>> data = Collections.emptyIterator();
+    private Iterator<Collection<Object>> data;
     
     @Override
-    public void init(final ShardingSphereRuleMetaData ruleMetaData, final 
SQLStatement sqlStatement) {
-        ruleMetaData.findSingleRule(SQLParserRule.class).ifPresent(optional -> 
data = buildData(optional.getConfiguration()).iterator());
+    public void init(final ShardingSphereRuleMetaData globalRuleMetaData, 
final SQLStatement sqlStatement) {
+        SQLParserRule rule = 
globalRuleMetaData.getSingleRule(SQLParserRule.class);
+        data = buildData(rule.getConfiguration()).iterator();
     }
     
     private Collection<Collection<Object>> buildData(final 
SQLParserRuleConfiguration ruleConfig) {
diff --git 
a/kernel/sql-translator/distsql/handler/src/main/java/org/apache/shardingsphere/sqltranslator/distsql/handler/SQLTranslatorRuleResultSet.java
 
b/kernel/sql-translator/distsql/handler/src/main/java/org/apache/shardingsphere/sqltranslator/distsql/handler/SQLTranslatorRuleResultSet.java
index c80916ade7a..357a1658636 100644
--- 
a/kernel/sql-translator/distsql/handler/src/main/java/org/apache/shardingsphere/sqltranslator/distsql/handler/SQLTranslatorRuleResultSet.java
+++ 
b/kernel/sql-translator/distsql/handler/src/main/java/org/apache/shardingsphere/sqltranslator/distsql/handler/SQLTranslatorRuleResultSet.java
@@ -38,11 +38,12 @@ public final class SQLTranslatorRuleResultSet implements 
GlobalRuleDistSQLResult
     
     private static final String USE_ORIGINAL_SQL_WHEN_TRANSLATING_FAILED = 
"use_original_sql_when_translating_failed";
     
-    private Iterator<Collection<Object>> data = Collections.emptyIterator();
+    private Iterator<Collection<Object>> data;
     
     @Override
-    public void init(final ShardingSphereRuleMetaData ruleMetaData, final 
SQLStatement sqlStatement) {
-        
ruleMetaData.findSingleRule(SQLTranslatorRule.class).ifPresent(optional -> data 
= buildData(optional.getConfiguration()).iterator());
+    public void init(final ShardingSphereRuleMetaData globalRuleMetaData, 
final SQLStatement sqlStatement) {
+        SQLTranslatorRule rule = 
globalRuleMetaData.getSingleRule(SQLTranslatorRule.class);
+        data = buildData(rule.getConfiguration()).iterator();
     }
     
     private Collection<Collection<Object>> buildData(final 
SQLTranslatorRuleConfiguration ruleConfig) {
diff --git 
a/kernel/traffic/distsql/handler/src/main/java/org/apache/shardingsphere/traffic/distsql/handler/query/TrafficRuleResultSet.java
 
b/kernel/traffic/distsql/handler/src/main/java/org/apache/shardingsphere/traffic/distsql/handler/query/TrafficRuleResultSet.java
index 3866d1cab7a..d564535fb4a 100644
--- 
a/kernel/traffic/distsql/handler/src/main/java/org/apache/shardingsphere/traffic/distsql/handler/query/TrafficRuleResultSet.java
+++ 
b/kernel/traffic/distsql/handler/src/main/java/org/apache/shardingsphere/traffic/distsql/handler/query/TrafficRuleResultSet.java
@@ -17,8 +17,8 @@
 
 package org.apache.shardingsphere.traffic.distsql.handler.query;
 
-import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
 import 
org.apache.shardingsphere.distsql.handler.resultset.GlobalRuleDistSQLResultSet;
+import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.infra.util.props.PropertiesConverter;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
@@ -29,10 +29,8 @@ import org.apache.shardingsphere.traffic.rule.TrafficRule;
 
 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 traffic rule.
@@ -51,18 +49,17 @@ public final class TrafficRuleResultSet implements 
GlobalRuleDistSQLResultSet {
     
     private static final String LOAD_BALANCER_PROPS = "load_balancer_props";
     
-    private Iterator<Collection<Object>> data = Collections.emptyIterator();
+    private Iterator<Collection<Object>> data;
     
     @Override
-    public void init(final ShardingSphereRuleMetaData ruleMetaData, final 
SQLStatement sqlStatement) {
-        ShowTrafficRulesStatement statement = (ShowTrafficRulesStatement) 
sqlStatement;
-        Optional<String> ruleName = 
Optional.ofNullable(statement.getRuleName());
-        ruleMetaData.findSingleRule(TrafficRule.class).ifPresent(optional -> 
data = buildData(optional.getConfiguration(), ruleName).iterator());
+    public void init(final ShardingSphereRuleMetaData globalRuleMetaData, 
final SQLStatement sqlStatement) {
+        TrafficRule rule = globalRuleMetaData.getSingleRule(TrafficRule.class);
+        data = buildData(rule.getConfiguration(), ((ShowTrafficRulesStatement) 
sqlStatement).getRuleName()).iterator();
     }
     
-    private Collection<Collection<Object>> buildData(final 
TrafficRuleConfiguration ruleConfig, final Optional<String> ruleName) {
+    private Collection<Collection<Object>> buildData(final 
TrafficRuleConfiguration ruleConfig, final String ruleName) {
         Collection<Collection<Object>> result = new LinkedList<>();
-        ruleConfig.getTrafficStrategies().stream().filter(each -> 
!ruleName.isPresent() || each.getName().equals(ruleName.get()))
+        ruleConfig.getTrafficStrategies().stream().filter(each -> null == 
ruleName || each.getName().equals(ruleName))
                 .forEach(each -> result.add(buildRow(each, 
ruleConfig.getTrafficAlgorithms().get(each.getAlgorithmName()), 
ruleConfig.getLoadBalancers().get(each.getLoadBalancerName()))));
         return result;
     }
diff --git 
a/kernel/transaction/distsql/handler/src/main/java/org/apache/shardingsphere/transaction/distsql/handler/query/TransactionRuleResultSet.java
 
b/kernel/transaction/distsql/handler/src/main/java/org/apache/shardingsphere/transaction/distsql/handler/query/TransactionRuleResultSet.java
index 9559424f335..e9e229c85cb 100644
--- 
a/kernel/transaction/distsql/handler/src/main/java/org/apache/shardingsphere/transaction/distsql/handler/query/TransactionRuleResultSet.java
+++ 
b/kernel/transaction/distsql/handler/src/main/java/org/apache/shardingsphere/transaction/distsql/handler/query/TransactionRuleResultSet.java
@@ -40,11 +40,12 @@ public final class TransactionRuleResultSet implements 
GlobalRuleDistSQLResultSe
     
     private static final String PROPS = "props";
     
-    private Iterator<Collection<Object>> data = Collections.emptyIterator();
+    private Iterator<Collection<Object>> data;
     
     @Override
-    public void init(final ShardingSphereRuleMetaData ruleMetaData, final 
SQLStatement sqlStatement) {
-        ruleMetaData.findSingleRule(TransactionRule.class).ifPresent(optional 
-> data = buildData(optional).iterator());
+    public void init(final ShardingSphereRuleMetaData globalRuleMetaData, 
final SQLStatement sqlStatement) {
+        TransactionRule rule = 
globalRuleMetaData.getSingleRule(TransactionRule.class);
+        data = buildData(rule).iterator();
     }
     
     private Collection<Collection<Object>> buildData(final TransactionRule 
rule) {
diff --git 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableGlobalRuleRALBackendHandler.java
 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableGlobalRuleRALBackendHandler.java
index a66cec1f959..9e9ba1d3dc4 100644
--- 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableGlobalRuleRALBackendHandler.java
+++ 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableGlobalRuleRALBackendHandler.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.proxy.backend.handler.distsql.ral;
 
+import lombok.RequiredArgsConstructor;
 import 
org.apache.shardingsphere.distsql.handler.resultset.GlobalRuleDistSQLResultSet;
 import org.apache.shardingsphere.distsql.parser.statement.ral.RALStatement;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
@@ -31,29 +32,23 @@ import java.sql.Types;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * Queryable RAL backend handler for global rule.
  */
+@RequiredArgsConstructor
 public final class QueryableGlobalRuleRALBackendHandler implements 
DistSQLBackendHandler {
     
     private final RALStatement sqlStatement;
     
     private final GlobalRuleDistSQLResultSet resultSet;
     
-    public QueryableGlobalRuleRALBackendHandler(final RALStatement 
sqlStatement, final GlobalRuleDistSQLResultSet resultSet) {
-        this.sqlStatement = sqlStatement;
-        this.resultSet = resultSet;
-    }
-    
     @Override
     public ResponseHeader execute() {
         
resultSet.init(ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getGlobalRuleMetaData(),
 sqlStatement);
-        List<QueryHeader> queryHeaders = new ArrayList<>();
-        for (String each : resultSet.getColumnNames()) {
-            queryHeaders.add(new QueryHeader("", "", each, each, Types.CHAR, 
"CHAR", 255, 0, false, false, false, false));
-        }
-        return new QueryResponseHeader(queryHeaders);
+        return new QueryResponseHeader(resultSet.getColumnNames().stream()
+                .map(each -> new QueryHeader("", "", each, each, Types.CHAR, 
"CHAR", 255, 0, false, false, false, false)).collect(Collectors.toList()));
     }
     
     @Override

Reply via email to