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