This is an automated email from the ASF dual-hosted git repository.
wuweijie 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 3269d1c Reuse DataSourcesQueryBackendHandler to decouple
DataSourcesQueryBackendHandler (#10905)
3269d1c is described below
commit 3269d1cc2bb5a2d46047c1c92c1f3a621c753753
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Jun 22 12:36:02 2021 +0800
Reuse DataSourcesQueryBackendHandler to decouple
DataSourcesQueryBackendHandler (#10905)
* Refactor DataSourcesQueryBackendHandler
* Reuse DataSourcesQueryBackendHandler to decouple
DataSourcesQueryBackendHandler
---
.../text/distsql/rql/RQLBackendHandlerFactory.java | 8 ++--
...Handler.java => DataSourcesQueryResultSet.java} | 48 ++++++----------------
2 files changed, 17 insertions(+), 39 deletions(-)
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/RQLBackendHandlerFactory.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/RQLBackendHandlerFactory.java
index 3130cca..1241f58 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/RQLBackendHandlerFactory.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/RQLBackendHandlerFactory.java
@@ -25,7 +25,7 @@ import
org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowResources
import
org.apache.shardingsphere.encrypt.distsql.parser.statement.ShowEncryptRulesStatement;
import
org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
import org.apache.shardingsphere.proxy.backend.text.TextProtocolBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.text.distsql.rql.impl.DataSourcesQueryBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.text.distsql.rql.impl.DataSourcesQueryResultSet;
import
org.apache.shardingsphere.proxy.backend.text.distsql.rql.impl.DatabaseDiscoveryRuleQueryResultSet;
import
org.apache.shardingsphere.proxy.backend.text.distsql.rql.impl.EncryptRuleQueryResultSet;
import
org.apache.shardingsphere.proxy.backend.text.distsql.rql.impl.ReadwriteSplittingRuleQueryResultSet;
@@ -51,13 +51,13 @@ public final class RQLBackendHandlerFactory {
* @return RDL backend handler
*/
public static TextProtocolBackendHandler newInstance(final RQLStatement
sqlStatement, final BackendConnection backendConnection) {
- if (sqlStatement instanceof ShowResourcesStatement) {
- return new DataSourcesQueryBackendHandler((ShowResourcesStatement)
sqlStatement, backendConnection);
- }
return new RuleQueryBackendHandler(sqlStatement, backendConnection,
getRuleQueryResultSet(sqlStatement));
}
private static RuleQueryResultSet getRuleQueryResultSet(final RQLStatement
sqlStatement) {
+ if (sqlStatement instanceof ShowResourcesStatement) {
+ return new DataSourcesQueryResultSet();
+ }
if (sqlStatement instanceof ShowShardingBindingTableRulesStatement) {
return new ShardingBindingTableRuleQueryResultSet();
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/impl/DataSourcesQueryBackendHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/impl/DataSourcesQueryResultSet.java
similarity index 57%
rename from
shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/impl/DataSourcesQueryBackendHandler.java
rename to
shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/impl/DataSourcesQueryResultSet.java
index 0256b43..869aaf1 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/impl/DataSourcesQueryBackendHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/impl/DataSourcesQueryResultSet.java
@@ -18,64 +18,42 @@
package org.apache.shardingsphere.proxy.backend.text.distsql.rql.impl;
import com.google.gson.Gson;
-import
org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowResourcesStatement;
import org.apache.shardingsphere.infra.config.datasource.DataSourceConverter;
import org.apache.shardingsphere.infra.config.datasource.DataSourceParameter;
import org.apache.shardingsphere.infra.database.metadata.DataSourceMetaData;
-import
org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
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.response.header.query.impl.QueryHeader;
-import
org.apache.shardingsphere.proxy.backend.text.SchemaRequiredBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.text.distsql.rql.RuleQueryResultSet;
import
org.apache.shardingsphere.proxy.config.util.DataSourceParameterConverter;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
-import java.sql.Types;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
import java.util.Map;
/**
- * Backend handler for show resources.
+ * Result set for show resources.
*/
-public final class DataSourcesQueryBackendHandler extends
SchemaRequiredBackendHandler<ShowResourcesStatement> {
+public final class DataSourcesQueryResultSet implements RuleQueryResultSet {
private Map<String, DataSourceParameter> dataSourceParameterMap;
- private final String schema;
-
private Iterator<String> dataSourceNames;
- public DataSourcesQueryBackendHandler(final ShowResourcesStatement
sqlStatement, final BackendConnection backendConnection) {
- super(sqlStatement, backendConnection);
- if (sqlStatement.getSchema().isPresent()) {
- schema = sqlStatement.getSchema().get().getIdentifier().getValue();
- } else {
- schema = backendConnection.getSchemaName();
- }
- }
+ private String schemaName;
@Override
- public ResponseHeader execute(final String schemaName, final
ShowResourcesStatement sqlStatement) {
+ public void init(final String schemaName, final SQLStatement sqlStatement)
{
+ this.schemaName = schemaName;
dataSourceParameterMap =
DataSourceParameterConverter.getDataSourceParameterMap(
-
DataSourceConverter.getDataSourceConfigurationMap(ProxyContext.getInstance().getMetaData(schema).getResource().getDataSources()));
+
DataSourceConverter.getDataSourceConfigurationMap(ProxyContext.getInstance().getMetaData(schemaName).getResource().getDataSources()));
dataSourceNames = dataSourceParameterMap.keySet().iterator();
- return new QueryResponseHeader(generateResponseHeader());
}
- private List<QueryHeader> generateResponseHeader() {
- List<QueryHeader> result = new LinkedList<>();
- result.add(new QueryHeader(schema, "", "name", "name", Types.CHAR,
"CHAR", 255, 0, false, false, false, false));
- result.add(new QueryHeader(schema, "", "type", "type", Types.CHAR,
"CHAR", 255, 0, false, false, false, false));
- result.add(new QueryHeader(schema, "", "host", "host", Types.CHAR,
"CHAR", 255, 0, false, false, false, false));
- result.add(new QueryHeader(schema, "", "port", "port", Types.BIGINT,
"BIGINT", 255, 0, false, false, false, false));
- result.add(new QueryHeader(schema, "", "db", "db", Types.CHAR, "CHAR",
255, 0, false, false, false, false));
- result.add(new QueryHeader(schema, "", "attribute", "attribute",
Types.CHAR, "CHAR", 255, 0, false, false, false, false));
- return result;
+ @Override
+ public Collection<String> getColumnNames() {
+ return Arrays.asList("name", "type", "host", "port", "db",
"attribute");
}
@Override
@@ -86,7 +64,7 @@ public final class DataSourcesQueryBackendHandler extends
SchemaRequiredBackendH
@Override
public Collection<Object> getRowData() {
String dataSourceName = dataSourceNames.next();
- DataSourceMetaData dataSourceMetaData =
ProxyContext.getInstance().getMetaData(schema).getResource().getDataSourcesMetaData().getDataSourceMetaData(dataSourceName);
+ DataSourceMetaData dataSourceMetaData =
ProxyContext.getInstance().getMetaData(schemaName).getResource().getDataSourcesMetaData().getDataSourceMetaData(dataSourceName);
Map<Object, Object> attributeMap = new HashMap<>();
attributeMap.put("connectionTimeoutMilliseconds",
dataSourceParameterMap.get(dataSourceName).getConnectionTimeoutMilliseconds());
attributeMap.put("idleTimeoutMilliseconds",
dataSourceParameterMap.get(dataSourceName).getIdleTimeoutMilliseconds());
@@ -95,7 +73,7 @@ public final class DataSourcesQueryBackendHandler extends
SchemaRequiredBackendH
attributeMap.put("minPoolSize",
dataSourceParameterMap.get(dataSourceName).getMinPoolSize());
attributeMap.put("maintenanceIntervalMilliseconds",
dataSourceParameterMap.get(dataSourceName).getMaintenanceIntervalMilliseconds());
attributeMap.put("readOnly",
dataSourceParameterMap.get(dataSourceName).isReadOnly());
- String type =
ProxyContext.getInstance().getMetaData(schema).getResource().getDatabaseType().getName();
+ String type =
ProxyContext.getInstance().getMetaData(schemaName).getResource().getDatabaseType().getName();
String host = dataSourceMetaData.getHostName();
int port = dataSourceMetaData.getPort();
String db = dataSourceMetaData.getCatalog();