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 2022/02/18 10:55:39 UTC
[shardingsphere] branch master updated: Refactor RAL queryable executors. (#15490)
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 5005a3c Refactor RAL queryable executors. (#15490)
5005a3c is described below
commit 5005a3cf886c4bebf79bdaea81bc0039af17e31c
Author: lanchengx <52...@users.noreply.github.com>
AuthorDate: Fri Feb 18 18:54:36 2022 +0800
Refactor RAL queryable executors. (#15490)
* Refactor RAL queryable executors.
* Adjust the order.
---
.../distsql/ral/QueryableRALBackendHandler.java | 6 +-
.../text/distsql/ral/RALBackendHandlerFactory.java | 79 ++++++++++++++----
.../common/CommonDistSQLBackendHandlerFactory.java | 53 ------------
.../ral/common/ShowDistSQLBackendHandler.java | 60 --------------
.../ExportSchemaConfigurationHandler.java} | 34 ++++----
.../ShowAllVariablesHandler.java} | 49 ++++++-----
.../ShowAuthorityRuleHandler.java} | 30 +++----
.../ShowInstanceHandler.java} | 29 +++----
.../ShowInstanceModeHandler.java} | 29 ++-----
...howReadwriteSplittingReadResourcesHandler.java} | 30 ++++---
.../ShowSQLParserRuleHandler.java} | 41 ++++-----
.../ShowTableMetadataHandler.java} | 37 ++++-----
.../ShowTrafficRulesHandler.java} | 32 +++-----
.../ShowTransactionRuleHandler.java} | 24 +++---
.../ShowVariableHandler.java} | 43 +++++-----
.../ral/common/show/ShowStatementExecutor.java | 54 ------------
.../common/show/ShowStatementExecutorFactory.java | 96 ----------------------
.../common/show/executor/AbstractShowExecutor.java | 66 ---------------
.../TextProtocolBackendHandlerFactoryTest.java | 6 +-
.../ral/ShowAllVariablesBackendHandlerTest.java | 6 +-
.../ral/ShowVariableBackendHandlerTest.java | 19 +++--
.../ExportSchemaConfigurationExecutorTest.java | 17 ++--
...Test.java => ShowAuthorityRuleHandlerTest.java} | 15 ++--
...rTest.java => ShowInstanceModeHandlerTest.java} | 15 ++--
...Test.java => ShowSQLParserRuleHandlerTest.java} | 19 ++---
...Test.java => ShowTableMetadataHandlerTest.java} | 23 +++---
...rTest.java => ShowTrafficRulesHandlerTest.java} | 14 ++--
...st.java => ShowTransactionRuleHandlerTest.java} | 22 +++--
28 files changed, 308 insertions(+), 640 deletions(-)
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/QueryableRALBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/QueryableRALBackendHandler.java
index b1ff41e..5c2dfdb 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/QueryableRALBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/QueryableRALBackendHandler.java
@@ -46,7 +46,7 @@ public abstract class QueryableRALBackendHandler<E extends RALStatement, R exten
@Override
protected final ResponseHeader handle(final ContextManager contextManager, final E sqlStatement) {
queryHeaders = createQueryHeader(getColumnNames());
- mergedResult = createMergedResult(getRows());
+ mergedResult = createMergedResult(getRows(contextManager));
return new QueryResponseHeader(queryHeaders);
}
@@ -60,10 +60,10 @@ public abstract class QueryableRALBackendHandler<E extends RALStatement, R exten
return createQueryResponseRow(queryHeaders.size(), mergedResult).getData();
}
- protected abstract Collection<List<Object>> getRows();
-
protected abstract Collection<String> getColumnNames();
+ protected abstract Collection<List<Object>> getRows(ContextManager contextManager);
+
private MultipleLocalDataMergedResult createMergedResult(final Collection<List<Object>> rows) {
return new MultipleLocalDataMergedResult(rows);
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/RALBackendHandlerFactory.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/RALBackendHandlerFactory.java
index b40c821..0c549c8 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/RALBackendHandlerFactory.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/RALBackendHandlerFactory.java
@@ -20,10 +20,11 @@ package org.apache.shardingsphere.proxy.backend.text.distsql.ral;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.shardingsphere.distsql.parser.statement.ral.AdvancedDistSQLStatement;
-import org.apache.shardingsphere.distsql.parser.statement.ral.CommonDistSQLStatement;
import org.apache.shardingsphere.distsql.parser.statement.ral.QueryableRALStatement;
import org.apache.shardingsphere.distsql.parser.statement.ral.RALStatement;
import org.apache.shardingsphere.distsql.parser.statement.ral.UpdatableRALStatement;
+import org.apache.shardingsphere.distsql.parser.statement.ral.common.ExportSchemaConfigurationStatement;
+import org.apache.shardingsphere.distsql.parser.statement.ral.common.HintDistSQLStatement;
import org.apache.shardingsphere.distsql.parser.statement.ral.common.RefreshTableMetadataStatement;
import org.apache.shardingsphere.distsql.parser.statement.ral.common.alter.AlterSQLParserRuleStatement;
import org.apache.shardingsphere.distsql.parser.statement.ral.common.alter.AlterTransactionRuleStatement;
@@ -32,6 +33,15 @@ import org.apache.shardingsphere.distsql.parser.statement.ral.common.set.LabelIn
import org.apache.shardingsphere.distsql.parser.statement.ral.common.set.SetInstanceStatusStatement;
import org.apache.shardingsphere.distsql.parser.statement.ral.common.set.SetVariableStatement;
import org.apache.shardingsphere.distsql.parser.statement.ral.common.set.UnlabelInstanceStatement;
+import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowAllVariablesStatement;
+import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowAuthorityRuleStatement;
+import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowInstanceModeStatement;
+import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowInstanceStatement;
+import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowSQLParserRuleStatement;
+import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowTableMetadataStatement;
+import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowTrafficRulesStatement;
+import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowTransactionRuleStatement;
+import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowVariableStatement;
import org.apache.shardingsphere.distsql.parser.statement.rdl.create.AlterTrafficRuleStatement;
import org.apache.shardingsphere.distsql.parser.statement.rdl.create.CreateTrafficRuleStatement;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
@@ -39,7 +49,18 @@ import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import org.apache.shardingsphere.proxy.backend.text.TextProtocolBackendHandler;
import org.apache.shardingsphere.proxy.backend.text.distsql.ral.RALBackendHandler.HandlerParameter;
import org.apache.shardingsphere.proxy.backend.text.distsql.ral.advanced.AdvancedDistSQLBackendHandlerFactory;
-import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.CommonDistSQLBackendHandlerFactory;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.HintDistSQLBackendHandler;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable.ExportSchemaConfigurationHandler;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable.ShowAllVariablesHandler;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable.ShowAuthorityRuleHandler;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable.ShowInstanceHandler;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable.ShowInstanceModeHandler;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable.ShowReadwriteSplittingReadResourcesHandler;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable.ShowSQLParserRuleHandler;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable.ShowTableMetadataHandler;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable.ShowTrafficRulesHandler;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable.ShowTransactionRuleHandler;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable.ShowVariableHandler;
import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.updatable.AlterSQLParserRuleHandler;
import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.updatable.AlterTrafficRuleHandler;
import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.updatable.AlterTransactionRuleHandler;
@@ -53,6 +74,7 @@ import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.updatable
import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.updatable.UnlabelInstanceHandler;
import org.apache.shardingsphere.proxy.backend.text.distsql.ral.query.QueryableScalingRALBackendHandlerFactory;
import org.apache.shardingsphere.proxy.backend.text.distsql.ral.update.UpdatableScalingRALBackendHandlerFactory;
+import org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.ShowReadwriteSplittingReadResourcesStatement;
import org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.status.SetReadwriteSplittingStatusStatement;
import java.sql.SQLException;
@@ -65,20 +87,41 @@ import java.util.Map;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class RALBackendHandlerFactory {
- private static Map<String, Class<? extends RALBackendHandler>> handlerMap = new LinkedHashMap<>();
+ private static final Map<String, Class<? extends RALBackendHandler>> UPDATABLE_HANDLER_MAP = new LinkedHashMap<>();
+
+ private static final Map<String, Class<? extends RALBackendHandler>> QUERYABLE_HANDLER_MAP = new LinkedHashMap<>();
static {
- handlerMap.put(LabelInstanceStatement.class.getName(), LabelInstanceHandler.class);
- handlerMap.put(UnlabelInstanceStatement.class.getName(), UnlabelInstanceHandler.class);
- handlerMap.put(SetInstanceStatusStatement.class.getName(), SetInstanceStatusHandler.class);
- handlerMap.put(SetVariableStatement.class.getName(), SetVariableHandler.class);
- handlerMap.put(SetReadwriteSplittingStatusStatement.class.getName(), SetReadwriteSplittingStatusHandler.class);
- handlerMap.put(RefreshTableMetadataStatement.class.getName(), RefreshTableMetadataHandler.class);
- handlerMap.put(CreateTrafficRuleStatement.class.getName(), CreateTrafficRuleHandler.class);
- handlerMap.put(AlterTrafficRuleStatement.class.getName(), AlterTrafficRuleHandler.class);
- handlerMap.put(DropTrafficRuleStatement.class.getName(), DropTrafficRuleHandler.class);
- handlerMap.put(AlterSQLParserRuleStatement.class.getName(), AlterSQLParserRuleHandler.class);
- handlerMap.put(AlterTransactionRuleStatement.class.getName(), AlterTransactionRuleHandler.class);
+ initUpdatableHandlerMap();
+ initQueryableHandlerMap();
+ }
+
+ private static void initUpdatableHandlerMap() {
+ UPDATABLE_HANDLER_MAP.put(LabelInstanceStatement.class.getName(), LabelInstanceHandler.class);
+ UPDATABLE_HANDLER_MAP.put(UnlabelInstanceStatement.class.getName(), UnlabelInstanceHandler.class);
+ UPDATABLE_HANDLER_MAP.put(SetInstanceStatusStatement.class.getName(), SetInstanceStatusHandler.class);
+ UPDATABLE_HANDLER_MAP.put(SetVariableStatement.class.getName(), SetVariableHandler.class);
+ UPDATABLE_HANDLER_MAP.put(SetReadwriteSplittingStatusStatement.class.getName(), SetReadwriteSplittingStatusHandler.class);
+ UPDATABLE_HANDLER_MAP.put(RefreshTableMetadataStatement.class.getName(), RefreshTableMetadataHandler.class);
+ UPDATABLE_HANDLER_MAP.put(CreateTrafficRuleStatement.class.getName(), CreateTrafficRuleHandler.class);
+ UPDATABLE_HANDLER_MAP.put(AlterTrafficRuleStatement.class.getName(), AlterTrafficRuleHandler.class);
+ UPDATABLE_HANDLER_MAP.put(DropTrafficRuleStatement.class.getName(), DropTrafficRuleHandler.class);
+ UPDATABLE_HANDLER_MAP.put(AlterSQLParserRuleStatement.class.getName(), AlterSQLParserRuleHandler.class);
+ UPDATABLE_HANDLER_MAP.put(AlterTransactionRuleStatement.class.getName(), AlterTransactionRuleHandler.class);
+ }
+
+ private static void initQueryableHandlerMap() {
+ QUERYABLE_HANDLER_MAP.put(ShowInstanceStatement.class.getName(), ShowInstanceHandler.class);
+ QUERYABLE_HANDLER_MAP.put(ShowInstanceModeStatement.class.getName(), ShowInstanceModeHandler.class);
+ QUERYABLE_HANDLER_MAP.put(ShowVariableStatement.class.getName(), ShowVariableHandler.class);
+ QUERYABLE_HANDLER_MAP.put(ShowAllVariablesStatement.class.getName(), ShowAllVariablesHandler.class);
+ QUERYABLE_HANDLER_MAP.put(ShowReadwriteSplittingReadResourcesStatement.class.getName(), ShowReadwriteSplittingReadResourcesHandler.class);
+ QUERYABLE_HANDLER_MAP.put(ShowAuthorityRuleStatement.class.getName(), ShowAuthorityRuleHandler.class);
+ QUERYABLE_HANDLER_MAP.put(ShowSQLParserRuleStatement.class.getName(), ShowSQLParserRuleHandler.class);
+ QUERYABLE_HANDLER_MAP.put(ShowTableMetadataStatement.class.getName(), ShowTableMetadataHandler.class);
+ QUERYABLE_HANDLER_MAP.put(ShowTrafficRulesStatement.class.getName(), ShowTrafficRulesHandler.class);
+ QUERYABLE_HANDLER_MAP.put(ShowTransactionRuleStatement.class.getName(), ShowTransactionRuleHandler.class);
+ QUERYABLE_HANDLER_MAP.put(ExportSchemaConfigurationStatement.class.getName(), ExportSchemaConfigurationHandler.class);
}
/**
@@ -92,15 +135,15 @@ public final class RALBackendHandlerFactory {
*/
public static TextProtocolBackendHandler newInstance(final DatabaseType databaseType, final RALStatement sqlStatement, final ConnectionSession connectionSession) throws SQLException {
TextProtocolBackendHandler result = null;
+ if (sqlStatement instanceof HintDistSQLStatement) {
+ return new HintDistSQLBackendHandler((HintDistSQLStatement) sqlStatement, connectionSession);
+ }
if (sqlStatement instanceof QueryableRALStatement) {
result = QueryableScalingRALBackendHandlerFactory.newInstance((QueryableRALStatement) sqlStatement, connectionSession);
}
if (sqlStatement instanceof UpdatableRALStatement) {
result = UpdatableScalingRALBackendHandlerFactory.newInstance((UpdatableRALStatement) sqlStatement);
}
- if (sqlStatement instanceof CommonDistSQLStatement) {
- result = CommonDistSQLBackendHandlerFactory.newInstance((CommonDistSQLStatement) sqlStatement, connectionSession);
- }
if (sqlStatement instanceof AdvancedDistSQLStatement) {
result = AdvancedDistSQLBackendHandlerFactory.newInstance(databaseType, (AdvancedDistSQLStatement) sqlStatement, connectionSession);
}
@@ -120,7 +163,7 @@ public final class RALBackendHandlerFactory {
}
private static RALBackendHandler getHandler(final RALStatement sqlStatement, final HandlerParameter<RALStatement> parameter) {
- Class<? extends RALBackendHandler> clazz = handlerMap.get(sqlStatement.getClass().getName());
+ Class<? extends RALBackendHandler> clazz = UPDATABLE_HANDLER_MAP.getOrDefault(sqlStatement.getClass().getName(), QUERYABLE_HANDLER_MAP.get(sqlStatement.getClass().getName()));
if (null == clazz) {
throw new UnsupportedOperationException(String.format("Unsupported statement : %s", sqlStatement.getClass().getCanonicalName()));
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/CommonDistSQLBackendHandlerFactory.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/CommonDistSQLBackendHandlerFactory.java
deleted file mode 100644
index d8f5588..0000000
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/CommonDistSQLBackendHandlerFactory.java
+++ /dev/null
@@ -1,53 +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.
- */
-
-package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common;
-
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.distsql.parser.statement.ral.CommonDistSQLStatement;
-import org.apache.shardingsphere.distsql.parser.statement.ral.common.HintDistSQLStatement;
-import org.apache.shardingsphere.distsql.parser.statement.ral.common.ShowDistSQLStatement;
-import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
-import org.apache.shardingsphere.proxy.backend.text.TextProtocolBackendHandler;
-
-import java.sql.SQLException;
-
-/**
- * Common dist sql backend handler factory.
- */
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class CommonDistSQLBackendHandlerFactory {
-
- /**
- * Create new instance of common dist sql backend handler.
- *
- * @param sqlStatement common dist sql statement
- * @param connectionSession connection session
- * @return common dist sql backend handler
- * @throws SQLException SQL exception
- */
- public static TextProtocolBackendHandler newInstance(final CommonDistSQLStatement sqlStatement, final ConnectionSession connectionSession) throws SQLException {
- if (sqlStatement instanceof ShowDistSQLStatement) {
- return new ShowDistSQLBackendHandler((ShowDistSQLStatement) sqlStatement, connectionSession);
- }
- if (sqlStatement instanceof HintDistSQLStatement) {
- return new HintDistSQLBackendHandler((HintDistSQLStatement) sqlStatement, connectionSession);
- }
- return null;
- }
-}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/ShowDistSQLBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/ShowDistSQLBackendHandler.java
deleted file mode 100644
index 6b307bc..0000000
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/ShowDistSQLBackendHandler.java
+++ /dev/null
@@ -1,60 +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.
- */
-
-package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common;
-
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.distsql.parser.statement.ral.common.ShowDistSQLStatement;
-import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
-import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
-import org.apache.shardingsphere.proxy.backend.text.TextProtocolBackendHandler;
-import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.ShowStatementExecutor;
-import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.ShowStatementExecutorFactory;
-
-import java.sql.SQLException;
-import java.util.Collection;
-
-/**
- * Show dist sql backend handler.
- */
-@RequiredArgsConstructor
-@Getter
-public final class ShowDistSQLBackendHandler implements TextProtocolBackendHandler {
-
- private final ShowDistSQLStatement sqlStatement;
-
- private final ConnectionSession connectionSession;
-
- private ShowStatementExecutor showStatementExecutor;
-
- @Override
- public ResponseHeader execute() throws SQLException {
- showStatementExecutor = ShowStatementExecutorFactory.newInstance(sqlStatement, connectionSession);
- return showStatementExecutor.execute();
- }
-
- @Override
- public boolean next() throws SQLException {
- return showStatementExecutor.next();
- }
-
- @Override
- public Collection<Object> getRowData() throws SQLException {
- return showStatementExecutor.getQueryResponseRow().getData();
- }
-}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ExportSchemaConfigurationExecutor.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ExportSchemaConfigurationHandler.java
similarity index 90%
rename from shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ExportSchemaConfigurationExecutor.java
rename to shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ExportSchemaConfigurationHandler.java
index cb7eed7..f364146 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ExportSchemaConfigurationExecutor.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ExportSchemaConfigurationHandler.java
@@ -15,9 +15,8 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor;
+package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable;
-import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.dbdiscovery.api.config.DatabaseDiscoveryRuleConfiguration;
import org.apache.shardingsphere.dbdiscovery.yaml.swapper.DatabaseDiscoveryRuleConfigurationYamlSwapper;
import org.apache.shardingsphere.distsql.parser.statement.ral.common.ExportSchemaConfigurationStatement;
@@ -28,27 +27,24 @@ import org.apache.shardingsphere.infra.datasource.props.DataSourceProperties;
import org.apache.shardingsphere.infra.datasource.props.DataSourcePropertiesCreator;
import org.apache.shardingsphere.infra.exception.SchemaNotExistedException;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.merge.result.MergedResult;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
+import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.exception.NoDatabaseSelectedException;
-import org.apache.shardingsphere.proxy.backend.response.header.query.impl.QueryHeader;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.QueryableRALBackendHandler;
import org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.yaml.swapper.ReadwriteSplittingRuleConfigurationYamlSwapper;
import org.apache.shardingsphere.shadow.api.config.ShadowRuleConfiguration;
import org.apache.shardingsphere.shadow.yaml.swapper.ShadowRuleConfigurationYamlSwapper;
import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
-import org.apache.shardingsphere.sharding.merge.dal.common.MultipleLocalDataMergedResult;
import org.apache.shardingsphere.sharding.yaml.swapper.ShardingRuleConfigurationYamlSwapper;
import javax.sql.DataSource;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
-import java.sql.Types;
-import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
@@ -56,10 +52,9 @@ import java.util.List;
import java.util.Map;
/**
- * Export schema configuration executor.
+ * Export schema configuration handler.
*/
-@RequiredArgsConstructor
-public final class ExportSchemaConfigurationExecutor extends AbstractShowExecutor {
+public final class ExportSchemaConfigurationHandler extends QueryableRALBackendHandler<ExportSchemaConfigurationStatement, ExportSchemaConfigurationHandler> {
private static final String CONFIG = "config";
@@ -93,9 +88,7 @@ public final class ExportSchemaConfigurationExecutor extends AbstractShowExecuto
private static final Map<String, Class<? extends RuleConfiguration>> FEATURE_MAP = new HashMap<>(5, 1);
- private final ExportSchemaConfigurationStatement sqlStatement;
-
- private final ConnectionSession connectionSession;
+ private ConnectionSession connectionSession;
static {
FEATURE_MAP.put(SHARDING, ShardingRuleConfiguration.class);
@@ -106,12 +99,18 @@ public final class ExportSchemaConfigurationExecutor extends AbstractShowExecuto
}
@Override
- protected List<QueryHeader> createQueryHeaders() {
- return Arrays.asList(new QueryHeader("", "", CONFIG, CONFIG, Types.VARCHAR, "VARCHAR", 128, 0, false, false, false, false));
+ public ExportSchemaConfigurationHandler init(final HandlerParameter<ExportSchemaConfigurationStatement> parameter) {
+ connectionSession = parameter.getConnectionSession();
+ return super.init(parameter);
+ }
+
+ @Override
+ protected Collection<String> getColumnNames() {
+ return Collections.singletonList(CONFIG);
}
@Override
- protected MergedResult createMergedResult() {
+ protected Collection<List<Object>> getRows(final ContextManager contextManager) {
String schemaName = getSchemaName();
ShardingSphereMetaData metaData = ProxyContext.getInstance().getMetaData(schemaName);
StringBuilder result = new StringBuilder();
@@ -119,9 +118,8 @@ public final class ExportSchemaConfigurationExecutor extends AbstractShowExecuto
getDataSourcesConfig(metaData, result);
getRulesConfig(metaData.getRuleMetaData().getConfigurations(), result);
if (!sqlStatement.getFilePath().isPresent()) {
- return new MultipleLocalDataMergedResult(Collections.singleton(Collections.singletonList(result.toString())));
+ return Collections.singleton(Collections.singletonList(result.toString()));
}
-
File outFile = new File(sqlStatement.getFilePath().get());
try (FileOutputStream stream = new FileOutputStream(outFile)) {
stream.write(result.toString().getBytes());
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowAllVariablesExecutor.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowAllVariablesHandler.java
similarity index 53%
rename from shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowAllVariablesExecutor.java
rename to shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowAllVariablesHandler.java
index f2cf1ec..b8a8fc3 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowAllVariablesExecutor.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowAllVariablesHandler.java
@@ -15,54 +15,59 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor;
+package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable;
-import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowAllVariablesStatement;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
-import org.apache.shardingsphere.infra.merge.result.MergedResult;
+import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.JDBCBackendConnection;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.response.header.query.impl.QueryHeader;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.QueryableRALBackendHandler;
import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.enums.VariableEnum;
import org.apache.shardingsphere.proxy.backend.util.SystemPropertyUtil;
-import org.apache.shardingsphere.sharding.merge.dal.common.MultipleLocalDataMergedResult;
-import java.sql.Types;
import java.util.Arrays;
+import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
/**
- * Show all variables executor.
+ * Show all variables handler.
*/
-@RequiredArgsConstructor
-public final class ShowAllVariablesExecutor extends AbstractShowExecutor {
+public final class ShowAllVariablesHandler extends QueryableRALBackendHandler<ShowAllVariablesStatement, ShowAllVariablesHandler> {
- private final ConnectionSession connectionSession;
+ private static final String VARIABLE_NAME = "variable_name";
+
+ private static final String VARIABLE_VALUE = "variable_value";
+
+ private ConnectionSession connectionSession;
@Override
- protected List<QueryHeader> createQueryHeaders() {
- List<QueryHeader> result = new LinkedList<>();
- result.add(new QueryHeader("", "", "variable_name", "variable_name", Types.VARCHAR, "VARCHAR", 100, 0, false, false, false, false));
- result.add(new QueryHeader("", "", "variable_value", "variable_value", Types.VARCHAR, "VARCHAR", 100, 0, false, false, false, false));
- return result;
+ public ShowAllVariablesHandler init(final HandlerParameter<ShowAllVariablesStatement> parameter) {
+ connectionSession = parameter.getConnectionSession();
+ return super.init(parameter);
}
@Override
- protected MergedResult createMergedResult() {
- List<List<Object>> rows = new LinkedList<>();
+ protected Collection<String> getColumnNames() {
+ return Arrays.asList(VARIABLE_NAME, VARIABLE_VALUE);
+ }
+
+ @Override
+ protected Collection<List<Object>> getRows(final ContextManager contextManager) {
+ List<List<Object>> result = new LinkedList<>();
ConfigurationProperties configurationProperties = ProxyContext.getInstance().getContextManager().getMetaDataContexts().getProps();
ConfigurationPropertyKey.getKeyNames().forEach(each -> {
String propertyValue = configurationProperties.getValue(ConfigurationPropertyKey.valueOf(each)).toString();
- rows.add(Arrays.asList(each.toLowerCase(), propertyValue));
+ result.add(Arrays.asList(each.toLowerCase(), propertyValue));
});
- rows.add(Arrays.asList(VariableEnum.AGENT_PLUGINS_ENABLED.name().toLowerCase(), SystemPropertyUtil.getSystemProperty(VariableEnum.AGENT_PLUGINS_ENABLED.name(), Boolean.TRUE.toString())));
+ result.add(Arrays.asList(VariableEnum.AGENT_PLUGINS_ENABLED.name().toLowerCase(), SystemPropertyUtil.getSystemProperty(VariableEnum.AGENT_PLUGINS_ENABLED.name(), Boolean.TRUE.toString())));
if (connectionSession.getBackendConnection() instanceof JDBCBackendConnection) {
- rows.add(Arrays.asList(VariableEnum.CACHED_CONNECTIONS.name().toLowerCase(), ((JDBCBackendConnection) connectionSession.getBackendConnection()).getConnectionSize()));
+ result.add(Arrays.asList(VariableEnum.CACHED_CONNECTIONS.name().toLowerCase(), ((JDBCBackendConnection) connectionSession.getBackendConnection()).getConnectionSize()));
}
- rows.add(Arrays.asList(VariableEnum.TRANSACTION_TYPE.name().toLowerCase(), connectionSession.getTransactionStatus().getTransactionType().name()));
- return new MultipleLocalDataMergedResult(rows);
+ result.add(Arrays.asList(VariableEnum.TRANSACTION_TYPE.name().toLowerCase(), connectionSession.getTransactionStatus().getTransactionType().name()));
+ return result;
}
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowAuthorityRuleExecutor.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowAuthorityRuleHandler.java
similarity index 66%
rename from shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowAuthorityRuleExecutor.java
rename to shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowAuthorityRuleHandler.java
index e00c9bc..0c7487f 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowAuthorityRuleExecutor.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowAuthorityRuleHandler.java
@@ -15,16 +15,14 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor;
+package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable;
-import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.authority.config.AuthorityRuleConfiguration;
-import org.apache.shardingsphere.infra.merge.result.MergedResult;
+import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowAuthorityRuleStatement;
+import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.response.header.query.impl.QueryHeader;
-import org.apache.shardingsphere.sharding.merge.dal.common.MultipleLocalDataMergedResult;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.QueryableRALBackendHandler;
-import java.sql.Types;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
@@ -33,8 +31,7 @@ import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
-@RequiredArgsConstructor
-public final class ShowAuthorityRuleExecutor extends AbstractShowExecutor {
+public final class ShowAuthorityRuleHandler extends QueryableRALBackendHandler<ShowAuthorityRuleStatement, ShowAuthorityRuleHandler> {
private static final String USERS = "users";
@@ -43,27 +40,24 @@ public final class ShowAuthorityRuleExecutor extends AbstractShowExecutor {
private static final String PROPS = "props";
@Override
- protected List<QueryHeader> createQueryHeaders() {
- return Arrays.asList(
- new QueryHeader("", "", USERS, USERS, Types.VARCHAR, "VARCHAR", 100, 0, false, false, false, false),
- new QueryHeader("", "", PROVIDER, PROVIDER, Types.VARCHAR, "VARCHAR", 100, 0, false, false, false, false),
- new QueryHeader("", "", PROPS, PROPS, Types.VARCHAR, "VARCHAR", 100, 0, false, false, false, false));
+ protected Collection<String> getColumnNames() {
+ return Arrays.asList(USERS, PROVIDER, PROPS);
}
@Override
- protected MergedResult createMergedResult() {
+ protected Collection<List<Object>> getRows(final ContextManager contextManager) {
Optional<AuthorityRuleConfiguration> authorityRuleConfigurationOptional = ProxyContext.getInstance().getContextManager()
.getMetaDataContexts().getGlobalRuleMetaData().findRuleConfiguration(AuthorityRuleConfiguration.class).stream().findFirst();
if (!authorityRuleConfigurationOptional.isPresent()) {
- return new MultipleLocalDataMergedResult(Collections.emptyList());
+ return Collections.emptyList();
}
AuthorityRuleConfiguration authorityRuleConfiguration = authorityRuleConfigurationOptional.get();
List<Object> row = new LinkedList<>();
row.add(authorityRuleConfiguration.getUsers().stream().map(each -> each.getGrantee().toString()).collect(Collectors.joining("; ")));
row.add(authorityRuleConfiguration.getProvider().getType());
row.add(authorityRuleConfiguration.getProvider().getProps().size() == 0 ? "" : authorityRuleConfiguration.getProvider().getProps());
- Collection<List<Object>> rows = new LinkedList<>();
- rows.add(row);
- return new MultipleLocalDataMergedResult(rows);
+ Collection<List<Object>> result = new LinkedList<>();
+ result.add(row);
+ return result;
}
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowInstanceExecutor.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowInstanceHandler.java
similarity index 76%
rename from shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowInstanceExecutor.java
rename to shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowInstanceHandler.java
index 8e5021e..de33b90 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowInstanceExecutor.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowInstanceHandler.java
@@ -15,19 +15,18 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor;
+package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable;
+import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowInstanceStatement;
import org.apache.shardingsphere.infra.instance.ComputeNodeInstance;
import org.apache.shardingsphere.infra.instance.definition.InstanceId;
-import org.apache.shardingsphere.infra.merge.result.MergedResult;
+import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.status.compute.ComputeNodeStatus;
import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
import org.apache.shardingsphere.mode.repository.standalone.StandalonePersistRepository;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.response.header.query.impl.QueryHeader;
-import org.apache.shardingsphere.sharding.merge.dal.common.MultipleLocalDataMergedResult;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.QueryableRALBackendHandler;
-import java.sql.Types;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
@@ -37,9 +36,9 @@ import java.util.Objects;
import java.util.stream.Collectors;
/**
- * Show instance executor.
+ * Show instance handler.
*/
-public final class ShowInstanceExecutor extends AbstractShowExecutor {
+public final class ShowInstanceHandler extends QueryableRALBackendHandler<ShowInstanceStatement, ShowInstanceHandler> {
private static final String DELIMITER = "@";
@@ -58,23 +57,17 @@ public final class ShowInstanceExecutor extends AbstractShowExecutor {
private static final String ENABLED = "enabled";
@Override
- protected List<QueryHeader> createQueryHeaders() {
- return Arrays.asList(
- new QueryHeader("", "", ID, ID, Types.VARCHAR, "VARCHAR", 64, 0, false, false, false, false),
- new QueryHeader("", "", HOST, HOST, Types.VARCHAR, "VARCHAR", 64, 0, false, false, false, false),
- new QueryHeader("", "", PORT, PORT, Types.VARCHAR, "VARCHAR", 64, 0, false, false, false, false),
- new QueryHeader("", "", STATUS, STATUS, Types.VARCHAR, "VARCHAR", 64, 0, false, false, false, false),
- new QueryHeader("", "", LABELS, LABELS, Types.VARCHAR, "VARCHAR", 64, 0, false, false, false, false)
- );
+ protected Collection<String> getColumnNames() {
+ return Arrays.asList(ID, HOST, PORT, STATUS, LABELS);
}
@Override
- protected MergedResult createMergedResult() {
+ protected Collection<List<Object>> getRows(final ContextManager contextManager) {
MetaDataPersistService persistService = ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaDataPersistService().orElse(null);
if (null == persistService || null == persistService.getRepository() || persistService.getRepository() instanceof StandalonePersistRepository) {
- return new MultipleLocalDataMergedResult(buildInstanceRows());
+ return buildInstanceRows();
}
- return new MultipleLocalDataMergedResult(buildInstanceRows(persistService));
+ return buildInstanceRows(persistService);
}
private Collection<List<Object>> buildInstanceRows() {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowInstanceModeExecutor.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowInstanceModeHandler.java
similarity index 64%
rename from shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowInstanceModeExecutor.java
rename to shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowInstanceModeHandler.java
index 0e1362a..24a7014 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowInstanceModeExecutor.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowInstanceModeHandler.java
@@ -15,26 +15,25 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor;
+package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable;
+import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowInstanceModeStatement;
import org.apache.shardingsphere.infra.config.mode.PersistRepositoryConfiguration;
import org.apache.shardingsphere.infra.instance.InstanceContext;
-import org.apache.shardingsphere.infra.merge.result.MergedResult;
import org.apache.shardingsphere.infra.properties.PropertiesConverter;
+import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.response.header.query.impl.QueryHeader;
-import org.apache.shardingsphere.sharding.merge.dal.common.MultipleLocalDataMergedResult;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.QueryableRALBackendHandler;
-import java.sql.Types;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
/**
- * Show instance mode executor.
+ * Show instance mode handler.
*/
-public final class ShowInstanceModeExecutor extends AbstractShowExecutor {
+public final class ShowInstanceModeHandler extends QueryableRALBackendHandler<ShowInstanceModeStatement, ShowInstanceModeHandler> {
private static final String ID = "id";
@@ -47,22 +46,12 @@ public final class ShowInstanceModeExecutor extends AbstractShowExecutor {
private static final String OVERWRITE = "overwrite";
@Override
- protected List<QueryHeader> createQueryHeaders() {
- return Arrays.asList(
- new QueryHeader("", "", ID, ID, Types.VARCHAR, "VARCHAR", 64, 0, false, false, false, false),
- new QueryHeader("", "", TYPE, TYPE, Types.VARCHAR, "VARCHAR", 64, 0, false, false, false, false),
- new QueryHeader("", "", REPOSITORY, REPOSITORY, Types.VARCHAR, "VARCHAR", 64, 0, false, false, false, false),
- new QueryHeader("", "", PROPS, PROPS, Types.VARCHAR, "VARCHAR", 1024, 0, false, false, false, false),
- new QueryHeader("", "", OVERWRITE, OVERWRITE, Types.VARCHAR, "VARCHAR", 64, 0, false, false, false, false)
- );
+ protected Collection<String> getColumnNames() {
+ return Arrays.asList(ID, TYPE, REPOSITORY, PROPS, OVERWRITE);
}
@Override
- protected MergedResult createMergedResult() {
- return new MultipleLocalDataMergedResult(buildRows());
- }
-
- private Collection<List<Object>> buildRows() {
+ protected Collection<List<Object>> getRows(final ContextManager contextManager) {
InstanceContext instanceContext = ProxyContext.getInstance().getContextManager().getInstanceContext();
PersistRepositoryConfiguration repositoryConfiguration = instanceContext.getModeConfiguration().getRepository();
return Collections.singleton(Arrays.asList(instanceContext.getInstance().getInstanceDefinition().getInstanceId().getId(), instanceContext.getModeConfiguration().getType(),
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowReadwriteSplittingReadResourcesExecutor.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowReadwriteSplittingReadResourcesHandler.java
similarity index 88%
rename from shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowReadwriteSplittingReadResourcesExecutor.java
rename to shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowReadwriteSplittingReadResourcesHandler.java
index a54347a..c4d1dce 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowReadwriteSplittingReadResourcesExecutor.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowReadwriteSplittingReadResourcesHandler.java
@@ -15,28 +15,25 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor;
+package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable;
-import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.distsql.constant.ExportableConstants;
import org.apache.shardingsphere.infra.exception.SchemaNotExistedException;
-import org.apache.shardingsphere.infra.merge.result.MergedResult;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.rule.identifier.type.ExportableRule;
+import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.status.storage.StorageNodeStatus;
import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.status.storage.node.StorageStatusNode;
import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.exception.NoDatabaseSelectedException;
-import org.apache.shardingsphere.proxy.backend.response.header.query.impl.QueryHeader;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.QueryableRALBackendHandler;
import org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.ShowReadwriteSplittingReadResourcesStatement;
-import org.apache.shardingsphere.sharding.merge.dal.common.MultipleLocalDataMergedResult;
-import java.sql.Types;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
@@ -54,8 +51,7 @@ import java.util.stream.Stream;
/**
* Show readwrite-splitting read resources executor.
*/
-@RequiredArgsConstructor
-public final class ShowReadwriteSplittingReadResourcesExecutor extends AbstractShowExecutor {
+public final class ShowReadwriteSplittingReadResourcesHandler extends QueryableRALBackendHandler<ShowReadwriteSplittingReadResourcesStatement, ShowReadwriteSplittingReadResourcesHandler> {
private static final String DELIMITER = "\\.";
@@ -67,19 +63,21 @@ public final class ShowReadwriteSplittingReadResourcesExecutor extends AbstractS
private static final String ENABLED = "enabled";
- private final ShowReadwriteSplittingReadResourcesStatement sqlStatement;
+ private ConnectionSession connectionSession;
- private final ConnectionSession connectionSession;
+ @Override
+ public ShowReadwriteSplittingReadResourcesHandler init(final HandlerParameter<ShowReadwriteSplittingReadResourcesStatement> parameter) {
+ connectionSession = parameter.getConnectionSession();
+ return super.init(parameter);
+ }
@Override
- protected List<QueryHeader> createQueryHeaders() {
- return Arrays.asList(
- new QueryHeader("", "", RESOURCE, RESOURCE, Types.VARCHAR, "VARCHAR", 64, 0, false, false, false, false),
- new QueryHeader("", "", STATUS, STATUS, Types.VARCHAR, "VARCHAR", 64, 0, false, false, false, false));
+ protected Collection<String> getColumnNames() {
+ return Arrays.asList(RESOURCE, STATUS);
}
@Override
- protected MergedResult createMergedResult() {
+ protected Collection<List<Object>> getRows(final ContextManager contextManager) {
String schemaName = sqlStatement.getSchema().isPresent() ? sqlStatement.getSchema().get().getIdentifier().getValue() : connectionSession.getSchemaName();
if (null == schemaName) {
throw new NoDatabaseSelectedException();
@@ -92,7 +90,7 @@ public final class ShowReadwriteSplittingReadResourcesExecutor extends AbstractS
Collection<Object> notShownResourceRows = new LinkedHashSet<>();
Collection<List<Object>> enableResourceRows = buildEnableResourceRows(metaData, notShownResourceRows);
Collection<List<Object>> disabledResourceRows = buildDisableResourceRows(schemaName, metaDataContexts.getMetaDataPersistService().orElse(null), notShownResourceRows);
- return new MultipleLocalDataMergedResult(mergeRows(enableResourceRows, disabledResourceRows, notShownResourceRows));
+ return mergeRows(enableResourceRows, disabledResourceRows, notShownResourceRows);
}
private Collection<List<Object>> buildEnableResourceRows(final ShardingSphereMetaData metaData, final Collection<Object> notShownResourceRows) {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowSQLParserRuleExecutor.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowSQLParserRuleHandler.java
similarity index 63%
rename from shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowSQLParserRuleExecutor.java
rename to shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowSQLParserRuleHandler.java
index e80b6fd..eeb5c91 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowSQLParserRuleExecutor.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowSQLParserRuleHandler.java
@@ -15,18 +15,15 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor;
+package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable;
import com.google.gson.Gson;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.infra.merge.result.MergedResult;
+import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowSQLParserRuleStatement;
+import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.parser.config.SQLParserRuleConfiguration;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.response.header.query.impl.QueryHeader;
-import org.apache.shardingsphere.sharding.merge.dal.common.MultipleLocalDataMergedResult;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.QueryableRALBackendHandler;
-import java.sql.Types;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
@@ -35,43 +32,37 @@ import java.util.List;
import java.util.Optional;
/**
- * Show SQL parser rule executor.
+ * Show SQL parser rule handler.
*/
-@RequiredArgsConstructor
-@Getter
-public final class ShowSQLParserRuleExecutor extends AbstractShowExecutor {
+public final class ShowSQLParserRuleHandler extends QueryableRALBackendHandler<ShowSQLParserRuleStatement, ShowSQLParserRuleHandler> {
private static final Gson GSON = new Gson();
-
+
private static final String SQL_COMMENT_PARSE_ENABLE = "sql_comment_parse_enable";
-
+
private static final String PARSE_TREE_CACHE = "parse_tree_cache";
-
+
private static final String SQL_STATEMENT_CACHE = "sql_statement_cache";
@Override
- protected List<QueryHeader> createQueryHeaders() {
- return Arrays.asList(
- new QueryHeader("", "", SQL_COMMENT_PARSE_ENABLE, SQL_COMMENT_PARSE_ENABLE, Types.VARCHAR, "VARCHAR", 6, 0, false, false, false, false),
- new QueryHeader("", "", PARSE_TREE_CACHE, PARSE_TREE_CACHE, Types.VARCHAR, "VARCHAR", 255, 0, false, false, false, false),
- new QueryHeader("", "", SQL_STATEMENT_CACHE, SQL_STATEMENT_CACHE, Types.VARCHAR, "VARCHAR", 255, 0, false, false, false, false)
- );
+ protected Collection<String> getColumnNames() {
+ return Arrays.asList(SQL_COMMENT_PARSE_ENABLE, PARSE_TREE_CACHE, SQL_STATEMENT_CACHE);
}
@Override
- protected MergedResult createMergedResult() {
+ protected Collection<List<Object>> getRows(final ContextManager contextManager) {
Optional<SQLParserRuleConfiguration> sqlParserRuleConfigurationOptional = ProxyContext.getInstance().getContextManager()
.getMetaDataContexts().getGlobalRuleMetaData().findRuleConfiguration(SQLParserRuleConfiguration.class).stream().findAny();
if (!sqlParserRuleConfigurationOptional.isPresent()) {
- return new MultipleLocalDataMergedResult(Collections.emptyList());
+ return Collections.emptyList();
}
SQLParserRuleConfiguration sqlParserRuleConfiguration = sqlParserRuleConfigurationOptional.get();
List<Object> row = new LinkedList<>();
row.add(String.valueOf(sqlParserRuleConfiguration.isSqlCommentParseEnabled()));
row.add(GSON.toJson(sqlParserRuleConfiguration.getParseTreeCache()));
row.add(GSON.toJson(sqlParserRuleConfiguration.getSqlStatementCache()));
- Collection<List<Object>> rows = new LinkedList<>();
- rows.add(row);
- return new MultipleLocalDataMergedResult(rows);
+ Collection<List<Object>> result = new LinkedList<>();
+ result.add(row);
+ return result;
}
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowTableMetadataExecutor.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTableMetadataHandler.java
similarity index 71%
rename from shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowTableMetadataExecutor.java
rename to shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTableMetadataHandler.java
index 04b55a0..1b75f56 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowTableMetadataExecutor.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTableMetadataHandler.java
@@ -15,20 +15,17 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor;
+package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable;
-import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowTableMetadataStatement;
import org.apache.shardingsphere.infra.exception.SchemaNotExistedException;
-import org.apache.shardingsphere.infra.merge.result.MergedResult;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.exception.NoDatabaseSelectedException;
-import org.apache.shardingsphere.proxy.backend.response.header.query.impl.QueryHeader;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
-import org.apache.shardingsphere.sharding.merge.dal.common.MultipleLocalDataMergedResult;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.QueryableRALBackendHandler;
-import java.sql.Types;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -37,10 +34,9 @@ import java.util.List;
import java.util.stream.Collectors;
/**
- * Show table metadata executor.
+ * Show table metadata handler.
*/
-@RequiredArgsConstructor
-public final class ShowTableMetadataExecutor extends AbstractShowExecutor {
+public final class ShowTableMetadataHandler extends QueryableRALBackendHandler<ShowTableMetadataStatement, ShowTableMetadataHandler> {
private static final String SCHEMA_NAME = "schema_name";
@@ -50,22 +46,21 @@ public final class ShowTableMetadataExecutor extends AbstractShowExecutor {
private static final String NAME = "name";
- private final ShowTableMetadataStatement sqlStatement;
+ private ConnectionSession connectionSession;
- private final ConnectionSession connectionSession;
+ @Override
+ public ShowTableMetadataHandler init(final HandlerParameter<ShowTableMetadataStatement> parameter) {
+ connectionSession = parameter.getConnectionSession();
+ return super.init(parameter);
+ }
@Override
- protected List<QueryHeader> createQueryHeaders() {
- return Arrays.asList(
- new QueryHeader("", "", SCHEMA_NAME, SCHEMA_NAME, Types.VARCHAR, "VARCHAR", 128, 0, false, false, false, false),
- new QueryHeader("", "", TABLE_NAME, TABLE_NAME, Types.VARCHAR, "VARCHAR", 128, 0, false, false, false, false),
- new QueryHeader("", "", TYPE, TYPE, Types.VARCHAR, "VARCHAR", 128, 0, false, false, false, false),
- new QueryHeader("", "", NAME, NAME, Types.VARCHAR, "VARCHAR", 128, 0, false, false, false, false)
- );
+ protected Collection<String> getColumnNames() {
+ return Arrays.asList(SCHEMA_NAME, TABLE_NAME, TYPE, NAME);
}
@Override
- protected MergedResult createMergedResult() {
+ protected Collection<List<Object>> getRows(final ContextManager contextManager) {
String schemaName = sqlStatement.getSchema().isPresent() ? sqlStatement.getSchema().get().getIdentifier().getValue() : connectionSession.getSchemaName();
if (null == schemaName) {
throw new NoDatabaseSelectedException();
@@ -74,9 +69,8 @@ public final class ShowTableMetadataExecutor extends AbstractShowExecutor {
throw new SchemaNotExistedException(schemaName);
}
ShardingSphereSchema schema = ProxyContext.getInstance().getMetaData(schemaName).getSchema();
- Collection<List<Object>> rows = schema.getAllTableNames().stream().filter(each -> sqlStatement.getTableNames().contains(each))
+ return schema.getAllTableNames().stream().filter(each -> sqlStatement.getTableNames().contains(each))
.map(each -> buildTableRows(schemaName, schema, each)).flatMap(Collection::stream).collect(Collectors.toCollection(LinkedList::new));
- return new MultipleLocalDataMergedResult(rows);
}
private Collection<List<Object>> buildTableRows(final String schemaName, final ShardingSphereSchema schema, final String tableName) {
@@ -93,5 +87,4 @@ public final class ShowTableMetadataExecutor extends AbstractShowExecutor {
private List<Object> buildRow(final String schemaName, final String tableName, final String type, final String name) {
return new ArrayList<>(Arrays.asList(schemaName, tableName, type, name));
}
-
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowTrafficRulesExecutor.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTrafficRulesHandler.java
similarity index 68%
rename from shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowTrafficRulesExecutor.java
rename to shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTrafficRulesHandler.java
index aebb8b1..2d6ed64 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowTrafficRulesExecutor.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTrafficRulesHandler.java
@@ -15,20 +15,18 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor;
+package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowTrafficRulesStatement;
import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
-import org.apache.shardingsphere.infra.merge.result.MergedResult;
import org.apache.shardingsphere.infra.properties.PropertiesConverter;
+import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.response.header.query.impl.QueryHeader;
-import org.apache.shardingsphere.sharding.merge.dal.common.MultipleLocalDataMergedResult;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.QueryableRALBackendHandler;
import org.apache.shardingsphere.traffic.api.config.TrafficRuleConfiguration;
import org.apache.shardingsphere.traffic.api.config.TrafficStrategyConfiguration;
-import java.sql.Types;
import java.util.Arrays;
import java.util.Collection;
import java.util.LinkedList;
@@ -37,10 +35,10 @@ import java.util.Map;
import java.util.Optional;
/**
- * Show traffic rules executor.
+ * Show traffic rules handler.
*/
@RequiredArgsConstructor
-public final class ShowTrafficRulesExecutor extends AbstractShowExecutor {
+public final class ShowTrafficRulesHandler extends QueryableRALBackendHandler<ShowTrafficRulesStatement, ShowTrafficRulesHandler> {
private static final String RULE_NAME = "name";
@@ -54,32 +52,24 @@ public final class ShowTrafficRulesExecutor extends AbstractShowExecutor {
private static final String LOAD_BALANCER_PROPS = "load_balancer_props";
- private final ShowTrafficRulesStatement sqlStatement;
-
@Override
- protected List<QueryHeader> createQueryHeaders() {
- return Arrays.asList(
- new QueryHeader("", "", RULE_NAME, RULE_NAME, Types.VARCHAR, "VARCHAR", 128, 0, false, false, false, false),
- new QueryHeader("", "", LABELS, LABELS, Types.VARCHAR, "VARCHAR", 128, 0, false, false, false, false),
- new QueryHeader("", "", ALGORITHM_TYPE, ALGORITHM_TYPE, Types.VARCHAR, "VARCHAR", 128, 0, false, false, false, false),
- new QueryHeader("", "", ALGORITHM_PROPS, ALGORITHM_PROPS, Types.VARCHAR, "VARCHAR", 1024, 0, false, false, false, false),
- new QueryHeader("", "", LOAD_BALANCER_TYPE, LOAD_BALANCER_TYPE, Types.VARCHAR, "VARCHAR", 128, 0, false, false, false, false),
- new QueryHeader("", "", LOAD_BALANCER_PROPS, LOAD_BALANCER_PROPS, Types.VARCHAR, "VARCHAR", 1024, 0, false, false, false, false));
+ protected Collection<String> getColumnNames() {
+ return Arrays.asList(RULE_NAME, LABELS, ALGORITHM_TYPE, ALGORITHM_PROPS, LOAD_BALANCER_TYPE, LOAD_BALANCER_PROPS);
}
@Override
- protected MergedResult createMergedResult() {
+ protected Collection<List<Object>> getRows(final ContextManager contextManager) {
Optional<TrafficRuleConfiguration> configuration = ProxyContext.getInstance().getContextManager().getMetaDataContexts()
.getGlobalRuleMetaData().findRuleConfiguration(TrafficRuleConfiguration.class).stream().findAny();
- Collection<List<Object>> rows = new LinkedList<>();
+ Collection<List<Object>> result = new LinkedList<>();
Optional<String> ruleName = Optional.ofNullable(sqlStatement.getRuleName());
configuration.ifPresent(op -> {
Map<String, ShardingSphereAlgorithmConfiguration> trafficAlgorithms = op.getTrafficAlgorithms();
Map<String, ShardingSphereAlgorithmConfiguration> loadBalancers = op.getLoadBalancers();
op.getTrafficStrategies().stream().filter(each -> !ruleName.isPresent() || each.getName().equals(ruleName.get()))
- .forEach(each -> rows.add(buildRow(each, trafficAlgorithms.get(each.getAlgorithmName()), loadBalancers.get(each.getLoadBalancerName()))));
+ .forEach(each -> result.add(buildRow(each, trafficAlgorithms.get(each.getAlgorithmName()), loadBalancers.get(each.getLoadBalancerName()))));
});
- return new MultipleLocalDataMergedResult(rows);
+ return result;
}
private List<Object> buildRow(final TrafficStrategyConfiguration strategy, final ShardingSphereAlgorithmConfiguration trafficAlgorithm,
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowTransactionRuleExecutor.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTransactionRuleHandler.java
similarity index 70%
rename from shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowTransactionRuleExecutor.java
rename to shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTransactionRuleHandler.java
index 2b11271..3d798d3 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowTransactionRuleExecutor.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTransactionRuleHandler.java
@@ -15,17 +15,16 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor;
+package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable;
import com.google.gson.Gson;
import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.infra.merge.result.MergedResult;
+import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowTransactionRuleStatement;
+import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.response.header.query.impl.QueryHeader;
-import org.apache.shardingsphere.sharding.merge.dal.common.MultipleLocalDataMergedResult;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.QueryableRALBackendHandler;
import org.apache.shardingsphere.transaction.config.TransactionRuleConfiguration;
-import java.sql.Types;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
@@ -34,7 +33,7 @@ import java.util.List;
import java.util.Optional;
@RequiredArgsConstructor
-public final class ShowTransactionRuleExecutor extends AbstractShowExecutor {
+public final class ShowTransactionRuleHandler extends QueryableRALBackendHandler<ShowTransactionRuleStatement, ShowTransactionRuleHandler> {
private static final String DEFAULT_TYPE = "default_type";
@@ -43,19 +42,16 @@ public final class ShowTransactionRuleExecutor extends AbstractShowExecutor {
private static final String PROPS = "props";
@Override
- protected List<QueryHeader> createQueryHeaders() {
- return Arrays.asList(
- new QueryHeader("", "", DEFAULT_TYPE, DEFAULT_TYPE, Types.VARCHAR, "VARCHAR", 64, 0, false, false, false, false),
- new QueryHeader("", "", PROVIDER_TYPE, PROVIDER_TYPE, Types.VARCHAR, "VARCHAR", 64, 0, false, false, false, false),
- new QueryHeader("", "", PROPS, PROPS, Types.VARCHAR, "VARCHAR", 128, 0, false, false, false, false));
+ protected Collection<String> getColumnNames() {
+ return Arrays.asList(DEFAULT_TYPE, PROVIDER_TYPE, PROPS);
}
@Override
- protected MergedResult createMergedResult() {
+ protected Collection<List<Object>> getRows(final ContextManager contextManager) {
Optional<TransactionRuleConfiguration> optionalTransactionRuleConfiguration = ProxyContext.getInstance().getContextManager()
.getMetaDataContexts().getGlobalRuleMetaData().findRuleConfiguration(TransactionRuleConfiguration.class).stream().findAny();
if (!optionalTransactionRuleConfiguration.isPresent()) {
- return new MultipleLocalDataMergedResult(Collections.emptyList());
+ return Collections.emptyList();
}
TransactionRuleConfiguration transactionRuleConfiguration = optionalTransactionRuleConfiguration.get();
List<Object> row = new LinkedList<>();
@@ -64,6 +60,6 @@ public final class ShowTransactionRuleExecutor extends AbstractShowExecutor {
row.add(null == transactionRuleConfiguration.getProps() ? "" : new Gson().toJson(transactionRuleConfiguration.getProps()));
Collection<List<Object>> rows = new LinkedList<>();
rows.add(row);
- return new MultipleLocalDataMergedResult(rows);
+ return rows;
}
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowVariableExecutor.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowVariableHandler.java
similarity index 61%
rename from shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowVariableExecutor.java
rename to shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowVariableHandler.java
index b146bba..d5e00c5 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/ShowVariableExecutor.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowVariableHandler.java
@@ -15,64 +15,63 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor;
+package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowVariableStatement;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
-import org.apache.shardingsphere.infra.merge.result.MergedResult;
+import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.JDBCBackendConnection;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.response.header.query.impl.QueryHeader;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.QueryableRALBackendHandler;
import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.enums.VariableEnum;
import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.exception.UnsupportedVariableException;
import org.apache.shardingsphere.proxy.backend.util.SystemPropertyUtil;
-import org.apache.shardingsphere.sharding.merge.dal.common.MultipleLocalDataMergedResult;
import org.apache.shardingsphere.transaction.core.TransactionType;
-import java.sql.Types;
+import java.util.Collection;
import java.util.Collections;
import java.util.List;
/**
- * Show variable executor.
+ * Show variable handler.
*/
-@RequiredArgsConstructor
-@Getter
-public final class ShowVariableExecutor extends AbstractShowExecutor {
+public final class ShowVariableHandler extends QueryableRALBackendHandler<ShowVariableStatement, ShowVariableHandler> {
- private final ShowVariableStatement sqlStatement;
+ private ConnectionSession connectionSession;
- private final ConnectionSession connectionSession;
+ @Override
+ public ShowVariableHandler init(final HandlerParameter<ShowVariableStatement> parameter) {
+ initStatement(parameter.getStatement());
+ connectionSession = parameter.getConnectionSession();
+ return this;
+ }
@Override
- protected List<QueryHeader> createQueryHeaders() {
- return Collections.singletonList(new QueryHeader("", "", sqlStatement.getName().toLowerCase(), sqlStatement.getName(), Types.VARCHAR, "VARCHAR", 100, 0, false, false, false, false));
+ protected Collection<String> getColumnNames() {
+ return Collections.singletonList(sqlStatement.getName().toLowerCase());
}
@Override
- protected MergedResult createMergedResult() {
+ protected Collection<List<Object>> getRows(final ContextManager contextManager) {
if (ConfigurationPropertyKey.getKeyNames().contains(sqlStatement.getName())) {
- ConfigurationProperties configurationProperties = ProxyContext.getInstance().getContextManager().getMetaDataContexts().getProps();
+ ConfigurationProperties configurationProperties = contextManager.getMetaDataContexts().getProps();
String propertyValue = configurationProperties.getValue(ConfigurationPropertyKey.valueOf(sqlStatement.getName())).toString();
- return new MultipleLocalDataMergedResult(Collections.singletonList(Collections.singletonList(propertyValue)));
+ return Collections.singletonList(Collections.singletonList(propertyValue));
}
VariableEnum variable = VariableEnum.getValueOf(sqlStatement.getName());
switch (variable) {
case AGENT_PLUGINS_ENABLED:
- return new MultipleLocalDataMergedResult(Collections.singletonList(Collections.singletonList(SystemPropertyUtil.getSystemProperty(variable.name(), Boolean.TRUE.toString()))));
+ return Collections.singletonList(Collections.singletonList(SystemPropertyUtil.getSystemProperty(variable.name(), Boolean.TRUE.toString())));
case CACHED_CONNECTIONS:
if (connectionSession.getBackendConnection() instanceof JDBCBackendConnection) {
int connectionSize = ((JDBCBackendConnection) connectionSession.getBackendConnection()).getConnectionSize();
- return new MultipleLocalDataMergedResult(Collections.singletonList(Collections.singletonList(connectionSize)));
+ return Collections.singletonList(Collections.singletonList(connectionSize));
}
break;
case TRANSACTION_TYPE:
TransactionType transactionType = connectionSession.getTransactionStatus().getTransactionType();
- return new MultipleLocalDataMergedResult(Collections.singletonList(Collections.singletonList(transactionType.name())));
+ return Collections.singletonList(Collections.singletonList(transactionType.name()));
default:
}
throw new UnsupportedVariableException(sqlStatement.getName());
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowStatementExecutor.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowStatementExecutor.java
deleted file mode 100644
index 50bbc2f..0000000
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowStatementExecutor.java
+++ /dev/null
@@ -1,54 +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.
- */
-
-package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show;
-
-import org.apache.shardingsphere.infra.distsql.exception.DistSQLException;
-import org.apache.shardingsphere.proxy.backend.response.data.QueryResponseRow;
-import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
-
-import java.sql.SQLException;
-
-/**
- * Show statement executor.
- */
-public interface ShowStatementExecutor {
-
- /**
- * Execute show statement.
- *
- * @return backend response
- * @throws DistSQLException DistSQL exception
- */
- ResponseHeader execute() throws DistSQLException;
-
- /**
- * Goto next result value.
- *
- * @return has more result value or not
- * @throws SQLException SQL exception
- */
- boolean next() throws SQLException;
-
- /**
- * Get query response row.
- *
- * @return query response row
- * @throws SQLException SQL exception
- */
- QueryResponseRow getQueryResponseRow() throws SQLException;
-}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowStatementExecutorFactory.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowStatementExecutorFactory.java
deleted file mode 100644
index 6af25df..0000000
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowStatementExecutorFactory.java
+++ /dev/null
@@ -1,96 +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.
- */
-
-package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show;
-
-import org.apache.shardingsphere.distsql.parser.statement.ral.common.ExportSchemaConfigurationStatement;
-import org.apache.shardingsphere.distsql.parser.statement.ral.common.ShowDistSQLStatement;
-import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowAllVariablesStatement;
-import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowAuthorityRuleStatement;
-import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowInstanceModeStatement;
-import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowInstanceStatement;
-import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowSQLParserRuleStatement;
-import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowTableMetadataStatement;
-import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowTrafficRulesStatement;
-import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowTransactionRuleStatement;
-import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowVariableStatement;
-import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
-import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor.ExportSchemaConfigurationExecutor;
-import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor.ShowAllVariablesExecutor;
-import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor.ShowAuthorityRuleExecutor;
-import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor.ShowInstanceExecutor;
-import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor.ShowInstanceModeExecutor;
-import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor.ShowReadwriteSplittingReadResourcesExecutor;
-import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor.ShowSQLParserRuleExecutor;
-import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor.ShowTableMetadataExecutor;
-import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor.ShowTrafficRulesExecutor;
-import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor.ShowTransactionRuleExecutor;
-import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor.ShowVariableExecutor;
-import org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.ShowReadwriteSplittingReadResourcesStatement;
-
-import java.sql.SQLException;
-
-/**
- * Show statement executor factory.
- */
-public final class ShowStatementExecutorFactory {
-
- /**
- * Create show statement executor instance.
- *
- * @param sqlStatement show statement
- * @param connectionSession connection session
- * @return show command executor
- * @throws SQLException SQL exception
- */
- public static ShowStatementExecutor newInstance(final ShowDistSQLStatement sqlStatement, final ConnectionSession connectionSession) throws SQLException {
- if (sqlStatement instanceof ShowInstanceStatement) {
- return new ShowInstanceExecutor();
- }
- if (sqlStatement instanceof ShowAuthorityRuleStatement) {
- return new ShowAuthorityRuleExecutor();
- }
- if (sqlStatement instanceof ShowTransactionRuleStatement) {
- return new ShowTransactionRuleExecutor();
- }
- if (sqlStatement instanceof ShowSQLParserRuleStatement) {
- return new ShowSQLParserRuleExecutor();
- }
- if (sqlStatement instanceof ShowAllVariablesStatement) {
- return new ShowAllVariablesExecutor(connectionSession);
- }
- if (sqlStatement instanceof ShowVariableStatement) {
- return new ShowVariableExecutor((ShowVariableStatement) sqlStatement, connectionSession);
- }
- if (sqlStatement instanceof ShowReadwriteSplittingReadResourcesStatement) {
- return new ShowReadwriteSplittingReadResourcesExecutor((ShowReadwriteSplittingReadResourcesStatement) sqlStatement, connectionSession);
- }
- if (sqlStatement instanceof ShowTableMetadataStatement) {
- return new ShowTableMetadataExecutor((ShowTableMetadataStatement) sqlStatement, connectionSession);
- }
- if (sqlStatement instanceof ShowInstanceModeStatement) {
- return new ShowInstanceModeExecutor();
- }
- if (sqlStatement instanceof ShowTrafficRulesStatement) {
- return new ShowTrafficRulesExecutor((ShowTrafficRulesStatement) sqlStatement);
- }
- if (sqlStatement instanceof ExportSchemaConfigurationStatement) {
- return new ExportSchemaConfigurationExecutor((ExportSchemaConfigurationStatement) sqlStatement, connectionSession);
- }
- throw new UnsupportedOperationException(sqlStatement.getClass().getCanonicalName());
- }
-}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/AbstractShowExecutor.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/AbstractShowExecutor.java
deleted file mode 100644
index a290595..0000000
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/executor/AbstractShowExecutor.java
+++ /dev/null
@@ -1,66 +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.
- */
-
-package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor;
-
-import org.apache.shardingsphere.infra.merge.result.MergedResult;
-import org.apache.shardingsphere.proxy.backend.response.data.QueryResponseCell;
-import org.apache.shardingsphere.proxy.backend.response.data.QueryResponseRow;
-import org.apache.shardingsphere.proxy.backend.response.data.impl.TextQueryResponseCell;
-import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
-import org.apache.shardingsphere.proxy.backend.response.header.query.QueryResponseHeader;
-import org.apache.shardingsphere.proxy.backend.response.header.query.impl.QueryHeader;
-import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.ShowStatementExecutor;
-
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Abstract show executor.
- */
-public abstract class AbstractShowExecutor implements ShowStatementExecutor {
-
- private List<QueryHeader> queryHeaders;
-
- private MergedResult mergedResult;
-
- @Override
- public final ResponseHeader execute() {
- queryHeaders = createQueryHeaders();
- mergedResult = createMergedResult();
- return new QueryResponseHeader(queryHeaders);
- }
-
- protected abstract List<QueryHeader> createQueryHeaders();
-
- protected abstract MergedResult createMergedResult();
-
- @Override
- public final boolean next() throws SQLException {
- return null != mergedResult && mergedResult.next();
- }
-
- @Override
- public final QueryResponseRow getQueryResponseRow() throws SQLException {
- List<QueryResponseCell> cells = new ArrayList<>(queryHeaders.size());
- for (int i = 0; i < queryHeaders.size(); i++) {
- cells.add(new TextQueryResponseCell(mergedResult.getValue(i + 1, Object.class)));
- }
- return new QueryResponseRow(cells);
- }
-}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/TextProtocolBackendHandlerFactoryTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/TextProtocolBackendHandlerFactoryTest.java
index eb2c5ab..4c91d8a 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/TextProtocolBackendHandlerFactoryTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/TextProtocolBackendHandlerFactoryTest.java
@@ -34,8 +34,8 @@ import org.apache.shardingsphere.proxy.backend.text.admin.DatabaseAdminUpdateBac
import org.apache.shardingsphere.proxy.backend.text.data.impl.BroadcastDatabaseBackendHandler;
import org.apache.shardingsphere.proxy.backend.text.data.impl.SchemaAssignedDatabaseBackendHandler;
import org.apache.shardingsphere.proxy.backend.text.data.impl.UnicastDatabaseBackendHandler;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.QueryableRALBackendHandler;
import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.HintDistSQLBackendHandler;
-import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.ShowDistSQLBackendHandler;
import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.updatable.SetVariableHandler;
import org.apache.shardingsphere.proxy.backend.text.skip.SkipBackendHandler;
import org.apache.shardingsphere.proxy.backend.text.transaction.TransactionAutoCommitHandler;
@@ -121,10 +121,10 @@ public final class TextProtocolBackendHandlerFactoryTest {
assertThat(actual, instanceOf(SetVariableHandler.class));
sql = "show variable transaction_type";
actual = TextProtocolBackendHandlerFactory.newInstance(databaseType, sql, Optional::empty, connectionSession);
- assertThat(actual, instanceOf(ShowDistSQLBackendHandler.class));
+ assertThat(actual, instanceOf(QueryableRALBackendHandler.class));
sql = "show all variables";
actual = TextProtocolBackendHandlerFactory.newInstance(databaseType, sql, Optional::empty, connectionSession);
- assertThat(actual, instanceOf(ShowDistSQLBackendHandler.class));
+ assertThat(actual, instanceOf(QueryableRALBackendHandler.class));
sql = "set sharding hint database_value=1";
actual = TextProtocolBackendHandlerFactory.newInstance(databaseType, sql, Optional::empty, connectionSession);
assertThat(actual, instanceOf(HintDistSQLBackendHandler.class));
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/ShowAllVariablesBackendHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/ShowAllVariablesBackendHandlerTest.java
index 670439b..ca5a6a3 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/ShowAllVariablesBackendHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/ShowAllVariablesBackendHandlerTest.java
@@ -26,7 +26,8 @@ import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
import org.apache.shardingsphere.proxy.backend.response.header.query.QueryResponseHeader;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
-import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.ShowDistSQLBackendHandler;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.RALBackendHandler.HandlerParameter;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable.ShowAllVariablesHandler;
import org.apache.shardingsphere.transaction.core.TransactionType;
import org.junit.Test;
@@ -53,7 +54,8 @@ public final class ShowAllVariablesBackendHandlerTest {
MetaDataContexts metaDataContexts = mock(MetaDataContexts.class);
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
when(metaDataContexts.getProps()).thenReturn(new ConfigurationProperties(new Properties()));
- ShowDistSQLBackendHandler backendHandler = new ShowDistSQLBackendHandler(new ShowAllVariablesStatement(), connectionSession);
+ ShowAllVariablesHandler backendHandler = new ShowAllVariablesHandler()
+ .init(new HandlerParameter<ShowAllVariablesStatement>().setStatement(new ShowAllVariablesStatement()).setConnectionSession(connectionSession));
ResponseHeader actual = backendHandler.execute();
assertThat(actual, instanceOf(QueryResponseHeader.class));
assertThat(((QueryResponseHeader) actual).getQueryHeaders().size(), is(2));
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/ShowVariableBackendHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/ShowVariableBackendHandlerTest.java
index 0e8e705..d6895b6 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/ShowVariableBackendHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/ShowVariableBackendHandlerTest.java
@@ -27,9 +27,10 @@ import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
import org.apache.shardingsphere.proxy.backend.response.header.query.QueryResponseHeader;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
-import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.ShowDistSQLBackendHandler;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.RALBackendHandler.HandlerParameter;
import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.enums.VariableEnum;
import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.exception.UnsupportedVariableException;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable.ShowVariableHandler;
import org.apache.shardingsphere.proxy.backend.util.SystemPropertyUtil;
import org.apache.shardingsphere.transaction.core.TransactionType;
import org.junit.After;
@@ -64,7 +65,8 @@ public final class ShowVariableBackendHandlerTest {
@Test
public void assertShowTransactionType() throws SQLException {
connectionSession.setCurrentSchema("schema");
- ShowDistSQLBackendHandler backendHandler = new ShowDistSQLBackendHandler(new ShowVariableStatement("transaction_type"), connectionSession);
+ ShowVariableHandler backendHandler = new ShowVariableHandler()
+ .init(new HandlerParameter<ShowVariableStatement>().setStatement(new ShowVariableStatement("transaction_type")).setConnectionSession(connectionSession));
ResponseHeader actual = backendHandler.execute();
assertThat(actual, instanceOf(QueryResponseHeader.class));
assertThat(((QueryResponseHeader) actual).getQueryHeaders().size(), is(1));
@@ -76,7 +78,8 @@ public final class ShowVariableBackendHandlerTest {
@Test
public void assertShowCachedConnections() throws SQLException {
connectionSession.setCurrentSchema("schema");
- ShowDistSQLBackendHandler backendHandler = new ShowDistSQLBackendHandler(new ShowVariableStatement("cached_connections"), connectionSession);
+ ShowVariableHandler backendHandler = new ShowVariableHandler()
+ .init(new HandlerParameter<ShowVariableStatement>().setStatement(new ShowVariableStatement("cached_connections")).setConnectionSession(connectionSession));
ResponseHeader actual = backendHandler.execute();
assertThat(actual, instanceOf(QueryResponseHeader.class));
assertThat(((QueryResponseHeader) actual).getQueryHeaders().size(), is(1));
@@ -88,14 +91,17 @@ public final class ShowVariableBackendHandlerTest {
@Test(expected = UnsupportedVariableException.class)
public void assertShowCachedConnectionFailed() throws SQLException {
connectionSession.setCurrentSchema("schema");
- new ShowDistSQLBackendHandler(new ShowVariableStatement("cached_connectionss"), connectionSession).execute();
+ ShowVariableHandler backendHandler = new ShowVariableHandler()
+ .init(new HandlerParameter<ShowVariableStatement>().setStatement(new ShowVariableStatement("cached_connectionss")).setConnectionSession(connectionSession));
+ backendHandler.execute();
}
@Test
public void assertShowAgentPluginsEnabled() throws SQLException {
SystemPropertyUtil.setSystemProperty(VariableEnum.AGENT_PLUGINS_ENABLED.name(), Boolean.TRUE.toString());
connectionSession.setCurrentSchema("schema");
- ShowDistSQLBackendHandler backendHandler = new ShowDistSQLBackendHandler(new ShowVariableStatement(VariableEnum.AGENT_PLUGINS_ENABLED.name()), connectionSession);
+ ShowVariableHandler backendHandler = new ShowVariableHandler()
+ .init(new HandlerParameter<ShowVariableStatement>().setStatement(new ShowVariableStatement(VariableEnum.AGENT_PLUGINS_ENABLED.name())).setConnectionSession(connectionSession));
ResponseHeader actual = backendHandler.execute();
assertThat(actual, instanceOf(QueryResponseHeader.class));
assertThat(((QueryResponseHeader) actual).getQueryHeaders().size(), is(1));
@@ -115,7 +121,8 @@ public final class ShowVariableBackendHandlerTest {
props.put("sql-show", "true");
ConfigurationProperties configurationProperties = new ConfigurationProperties(props);
when(metaDataContexts.getProps()).thenReturn(configurationProperties);
- ShowDistSQLBackendHandler backendHandler = new ShowDistSQLBackendHandler(new ShowVariableStatement("SQL_SHOW"), connectionSession);
+ ShowVariableHandler backendHandler = new ShowVariableHandler()
+ .init(new HandlerParameter<ShowVariableStatement>().setStatement(new ShowVariableStatement("SQL_SHOW")).setConnectionSession(connectionSession));
ResponseHeader actual = backendHandler.execute();
assertThat(actual, instanceOf(QueryResponseHeader.class));
assertThat(((QueryResponseHeader) actual).getQueryHeaders().size(), is(1));
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ExportSchemaConfigurationExecutorTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ExportSchemaConfigurationExecutorTest.java
index 87f84d1..a090a9d 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ExportSchemaConfigurationExecutorTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ExportSchemaConfigurationExecutorTest.java
@@ -27,9 +27,9 @@ import org.apache.shardingsphere.infra.metadata.schema.model.IndexMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.TableMetaData;
import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.response.data.QueryResponseRow;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
-import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor.ExportSchemaConfigurationExecutor;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.RALBackendHandler.HandlerParameter;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable.ExportSchemaConfigurationHandler;
import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
import org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
import org.apache.shardingsphere.sharding.api.config.strategy.keygen.KeyGenerateStrategyConfiguration;
@@ -73,11 +73,10 @@ public final class ExportSchemaConfigurationExecutorTest {
@Test
public void assertExportSchemaExecutor() throws SQLException {
- ExportSchemaConfigurationExecutor executor = new ExportSchemaConfigurationExecutor(createSqlStatement(), mockConnectionSession());
- executor.execute();
- executor.next();
- QueryResponseRow queryResponseRow = executor.getQueryResponseRow();
- List<Object> data = new ArrayList<>(queryResponseRow.getData());
+ ExportSchemaConfigurationHandler handler = new ExportSchemaConfigurationHandler().init(getParameter(createSqlStatement(), mockConnectionSession()));
+ handler.execute();
+ handler.next();
+ List<Object> data = new ArrayList<>(handler.getRowData());
assertThat(data.size(), is(1));
}
@@ -137,4 +136,8 @@ public final class ExportSchemaConfigurationExecutorTest {
private ConnectionSession mockConnectionSession() {
return mock(ConnectionSession.class);
}
+
+ private HandlerParameter<ExportSchemaConfigurationStatement> getParameter(final ExportSchemaConfigurationStatement statement, final ConnectionSession connectionSession) {
+ return new HandlerParameter<ExportSchemaConfigurationStatement>().setStatement(statement).setConnectionSession(connectionSession);
+ }
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowAuthorityRuleExecutorTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowAuthorityRuleHandlerTest.java
similarity index 85%
rename from shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowAuthorityRuleExecutorTest.java
rename to shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowAuthorityRuleHandlerTest.java
index d12dd41..8c125e8 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowAuthorityRuleExecutorTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowAuthorityRuleHandlerTest.java
@@ -18,13 +18,13 @@
package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show;
import org.apache.shardingsphere.authority.config.AuthorityRuleConfiguration;
+import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowAuthorityRuleStatement;
import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
import org.apache.shardingsphere.infra.metadata.rule.ShardingSphereRuleMetaData;
import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.response.data.QueryResponseRow;
-import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor.ShowAuthorityRuleExecutor;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable.ShowAuthorityRuleHandler;
import org.junit.Test;
import java.sql.SQLException;
@@ -39,19 +39,18 @@ import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-public final class ShowAuthorityRuleExecutorTest {
+public final class ShowAuthorityRuleHandlerTest {
- private final ShowAuthorityRuleExecutor executor = new ShowAuthorityRuleExecutor();
+ private final ShowAuthorityRuleHandler handler = new ShowAuthorityRuleHandler().initStatement(new ShowAuthorityRuleStatement());
@Test
public void assertAuthorityRule() throws SQLException {
ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
when(contextManager.getMetaDataContexts().getGlobalRuleMetaData()).thenReturn(getGlobalRuleMetaData());
ProxyContext.getInstance().init(contextManager);
- executor.execute();
- executor.next();
- QueryResponseRow queryResponseRow = executor.getQueryResponseRow();
- List<Object> data = new ArrayList<>(queryResponseRow.getData());
+ handler.execute();
+ handler.next();
+ List<Object> data = new ArrayList<>(handler.getRowData());
assertThat(data.size(), is(3));
assertThat(data.get(0), is("root@localhost"));
assertThat(data.get(1), is("ALL_PRIVILEGES_PERMITTED"));
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowInstanceModeExecutorTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowInstanceModeHandlerTest.java
similarity index 86%
rename from shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowInstanceModeExecutorTest.java
rename to shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowInstanceModeHandlerTest.java
index c64497e..f1bc7d1 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowInstanceModeExecutorTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowInstanceModeHandlerTest.java
@@ -17,13 +17,13 @@
package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show;
+import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowInstanceModeStatement;
import org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
import org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepositoryConfiguration;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.response.data.QueryResponseRow;
-import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor.ShowInstanceModeExecutor;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable.ShowInstanceModeHandler;
import org.junit.Test;
import java.sql.SQLException;
@@ -36,19 +36,18 @@ import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-public final class ShowInstanceModeExecutorTest {
+public final class ShowInstanceModeHandlerTest {
@Test
public void assertExecutor() throws SQLException {
ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
InstanceContext instanceContext = createInstanceContext();
when(contextManager.getInstanceContext()).thenReturn(instanceContext);
- ShowInstanceModeExecutor executor = new ShowInstanceModeExecutor();
+ ShowInstanceModeHandler handler = new ShowInstanceModeHandler().initStatement(new ShowInstanceModeStatement());
ProxyContext.getInstance().init(contextManager);
- executor.execute();
- executor.next();
- QueryResponseRow queryResponseRow = executor.getQueryResponseRow();
- ArrayList<Object> data = new ArrayList<>(queryResponseRow.getData());
+ handler.execute();
+ handler.next();
+ ArrayList<Object> data = new ArrayList<>(handler.getRowData());
assertThat(data.size(), is(5));
assertThat(data.get(0), is("127.0.0.1@3309"));
assertThat(data.get(1), is("Cluster"));
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowSQLParserRuleExecutorTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowSQLParserRuleHandlerTest.java
similarity index 87%
rename from shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowSQLParserRuleExecutorTest.java
rename to shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowSQLParserRuleHandlerTest.java
index 77fc782..645064e 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowSQLParserRuleExecutorTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowSQLParserRuleHandlerTest.java
@@ -17,12 +17,12 @@
package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show;
+import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowSQLParserRuleStatement;
import org.apache.shardingsphere.infra.metadata.rule.ShardingSphereRuleMetaData;
import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.parser.config.SQLParserRuleConfiguration;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.response.data.QueryResponseRow;
-import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor.ShowSQLParserRuleExecutor;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable.ShowSQLParserRuleHandler;
import org.apache.shardingsphere.sql.parser.api.CacheOption;
import org.junit.Test;
@@ -38,18 +38,17 @@ import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-public final class ShowSQLParserRuleExecutorTest {
-
+public final class ShowSQLParserRuleHandlerTest {
+
@Test
public void assertSQLParserRule() throws SQLException {
ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
when(contextManager.getMetaDataContexts().getGlobalRuleMetaData()).thenReturn(getGlobalRuleMetaData());
ProxyContext.getInstance().init(contextManager);
- ShowSQLParserRuleExecutor executor = new ShowSQLParserRuleExecutor();
- executor.execute();
- executor.next();
- QueryResponseRow queryResponseRow = executor.getQueryResponseRow();
- List<Object> data = new ArrayList<>(queryResponseRow.getData());
+ ShowSQLParserRuleHandler handler = new ShowSQLParserRuleHandler().initStatement(new ShowSQLParserRuleStatement());
+ handler.execute();
+ handler.next();
+ List<Object> data = new ArrayList<>(handler.getRowData());
assertThat(data.size(), is(3));
assertThat(data.get(0), is("true"));
String parseTreeCache = String.valueOf(data.get(1));
@@ -61,7 +60,7 @@ public final class ShowSQLParserRuleExecutorTest {
assertThat(sqlStatementCache, containsString("\"maximumSize\":65535"));
assertThat(sqlStatementCache, containsString("\"concurrencyLevel\":4"));
}
-
+
private ShardingSphereRuleMetaData getGlobalRuleMetaData() {
CacheOption parseTreeCache = new CacheOption(128, 1024, 4);
CacheOption sqlStatementCache = new CacheOption(2000, 65535, 4);
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowTableMetadataExecutorTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowTableMetadataHandlerTest.java
similarity index 83%
rename from shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowTableMetadataExecutorTest.java
rename to shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowTableMetadataHandlerTest.java
index 5f66526..26c731a 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowTableMetadataExecutorTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowTableMetadataHandlerTest.java
@@ -25,9 +25,9 @@ import org.apache.shardingsphere.infra.metadata.schema.model.IndexMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.TableMetaData;
import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.response.data.QueryResponseRow;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
-import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor.ShowTableMetadataExecutor;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.RALBackendHandler.HandlerParameter;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable.ShowTableMetadataHandler;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.SchemaSegment;
import org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
import org.junit.Test;
@@ -45,7 +45,7 @@ import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-public final class ShowTableMetadataExecutorTest {
+public final class ShowTableMetadataHandlerTest {
@Test
public void assertExecutor() throws SQLException {
@@ -55,18 +55,17 @@ public final class ShowTableMetadataExecutorTest {
when(shardingSphereMetaData.getSchema()).thenReturn(new ShardingSphereSchema(createTableMap()));
when(contextManager.getMetaDataContexts().getMetaData("schema_name")).thenReturn(shardingSphereMetaData);
ProxyContext.getInstance().init(contextManager);
- ShowTableMetadataExecutor executor = new ShowTableMetadataExecutor(createSqlStatement(), mockConnectionSession());
- executor.execute();
- executor.next();
- QueryResponseRow queryResponseRow = executor.getQueryResponseRow();
- ArrayList<Object> data = new ArrayList<>(queryResponseRow.getData());
+ ShowTableMetadataHandler handler = new ShowTableMetadataHandler().init(getParameter(createSqlStatement(), mockConnectionSession()));
+ handler.execute();
+ handler.next();
+ ArrayList<Object> data = new ArrayList<>(handler.getRowData());
assertThat(data.size(), is(4));
assertThat(data.get(0), is("schema_name"));
assertThat(data.get(1), is("t_order"));
assertThat(data.get(2), is("COLUMN"));
assertThat(data.get(3), is("order_id"));
- executor.next();
- data = new ArrayList<>(executor.getQueryResponseRow().getData());
+ handler.next();
+ data = new ArrayList<>(handler.getRowData());
assertThat(data.size(), is(4));
assertThat(data.get(0), is("schema_name"));
assertThat(data.get(1), is("t_order"));
@@ -89,4 +88,8 @@ public final class ShowTableMetadataExecutorTest {
private ConnectionSession mockConnectionSession() {
return mock(ConnectionSession.class);
}
+
+ private HandlerParameter<ShowTableMetadataStatement> getParameter(final ShowTableMetadataStatement statement, final ConnectionSession connectionSession) {
+ return new HandlerParameter<ShowTableMetadataStatement>().setStatement(statement).setConnectionSession(connectionSession);
+ }
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowTrafficRulesExecutorTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowTrafficRulesHandlerTest.java
similarity index 89%
rename from shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowTrafficRulesExecutorTest.java
rename to shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowTrafficRulesHandlerTest.java
index 6298e04..67fd346 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowTrafficRulesExecutorTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowTrafficRulesHandlerTest.java
@@ -22,8 +22,7 @@ import org.apache.shardingsphere.infra.config.RuleConfiguration;
import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.response.data.QueryResponseRow;
-import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor.ShowTrafficRulesExecutor;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable.ShowTrafficRulesHandler;
import org.apache.shardingsphere.traffic.api.config.TrafficRuleConfiguration;
import org.apache.shardingsphere.traffic.api.config.TrafficStrategyConfiguration;
import org.junit.Test;
@@ -42,20 +41,19 @@ import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-public class ShowTrafficRulesExecutorTest {
+public class ShowTrafficRulesHandlerTest {
@Test
public void assertExecutor() throws SQLException {
ShowTrafficRulesStatement showTrafficRuleStatement = new ShowTrafficRulesStatement();
showTrafficRuleStatement.setRuleName("rule_name_1");
- ShowTrafficRulesExecutor executor = new ShowTrafficRulesExecutor(showTrafficRuleStatement);
+ ShowTrafficRulesHandler handler = new ShowTrafficRulesHandler().initStatement(showTrafficRuleStatement);
ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
when(contextManager.getMetaDataContexts().getGlobalRuleMetaData().findRuleConfiguration(any())).thenReturn(createTrafficRule());
ProxyContext.getInstance().init(contextManager);
- executor.execute();
- executor.next();
- QueryResponseRow queryResponseRow = executor.getQueryResponseRow();
- ArrayList<Object> data = new ArrayList<>(queryResponseRow.getData());
+ handler.execute();
+ handler.next();
+ ArrayList<Object> data = new ArrayList<>(handler.getRowData());
assertThat(data.size(), is(6));
assertThat(data.get(0), is("rule_name_1"));
assertThat(data.get(1), is("olap,order_by"));
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowTransactionRuleExecutorTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowTransactionRuleHandlerTest.java
similarity index 83%
rename from shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowTransactionRuleExecutorTest.java
rename to shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowTransactionRuleHandlerTest.java
index 4724582..77ed926 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowTransactionRuleExecutorTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/show/ShowTransactionRuleHandlerTest.java
@@ -17,12 +17,12 @@
package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show;
+import org.apache.shardingsphere.distsql.parser.statement.ral.common.show.ShowTransactionRuleStatement;
import org.apache.shardingsphere.infra.config.RuleConfiguration;
import org.apache.shardingsphere.infra.metadata.rule.ShardingSphereRuleMetaData;
import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.response.data.QueryResponseRow;
-import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.show.executor.ShowTransactionRuleExecutor;
+import org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.queryable.ShowTransactionRuleHandler;
import org.apache.shardingsphere.transaction.config.TransactionRuleConfiguration;
import org.junit.Test;
@@ -38,19 +38,18 @@ import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-public final class ShowTransactionRuleExecutorTest {
+public final class ShowTransactionRuleHandlerTest {
- private final ShowTransactionRuleExecutor executor = new ShowTransactionRuleExecutor();
+ private final ShowTransactionRuleHandler handler = new ShowTransactionRuleHandler().initStatement(new ShowTransactionRuleStatement());
@Test
public void assertExecutorWithXA() throws SQLException {
ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
when(contextManager.getMetaDataContexts().getGlobalRuleMetaData()).thenReturn(getGlobalRuleMetaData("XA", "Atomikos", getProperties()));
ProxyContext.getInstance().init(contextManager);
- executor.execute();
- executor.next();
- QueryResponseRow queryResponseRow = executor.getQueryResponseRow();
- ArrayList<Object> data = new ArrayList<>(queryResponseRow.getData());
+ handler.execute();
+ handler.next();
+ ArrayList<Object> data = new ArrayList<>(handler.getRowData());
assertThat(data.size(), is(3));
assertThat(data.get(0), is("XA"));
assertThat(data.get(1), is("Atomikos"));
@@ -64,10 +63,9 @@ public final class ShowTransactionRuleExecutorTest {
ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
when(contextManager.getMetaDataContexts().getGlobalRuleMetaData()).thenReturn(getGlobalRuleMetaData("LOCAL", null, null));
ProxyContext.getInstance().init(contextManager);
- executor.execute();
- executor.next();
- QueryResponseRow queryResponseRow = executor.getQueryResponseRow();
- ArrayList<Object> data = new ArrayList<>(queryResponseRow.getData());
+ handler.execute();
+ handler.next();
+ ArrayList<Object> data = new ArrayList<>(handler.getRowData());
assertThat(data.size(), is(3));
assertThat(data.get(0), is("LOCAL"));
assertThat(data.get(1), is(""));