You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2024/01/28 02:27:35 UTC
(shardingsphere) branch master updated: Add DistSQLQueryBackendHandler (#29882)
This is an automated email from the ASF dual-hosted git repository.
panjuan 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 b2e10af6bb3 Add DistSQLQueryBackendHandler (#29882)
b2e10af6bb3 is described below
commit b2e10af6bb32ec69a62f3a2f2117e7dafedea549
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Sun Jan 28 10:27:28 2024 +0800
Add DistSQLQueryBackendHandler (#29882)
---
.../handler/type/DistSQLQueryExecuteEngine.java | 11 +--
.../distsql/DistSQLBackendHandlerFactory.java | 9 +-
...andler.java => DistSQLQueryBackendHandler.java} | 13 ++-
.../distsql/ral/RALBackendHandlerFactory.java | 3 +-
.../handler/distsql/rql/RQLBackendHandler.java | 99 ----------------------
.../distsql/rql/RQLBackendHandlerFactory.java | 42 ---------
.../rql/{type => }/ShowLogicalTableExecutor.java | 2 +-
.../ShowRulesUsedStorageUnitExecutor.java | 2 +-
.../rql/{type => }/ShowStorageUnitExecutor.java | 2 +-
...wStatusFromReadwriteSplittingRulesExecutor.java | 2 +-
.../distsql/rul/{type => }/FormatSQLExecutor.java | 2 +-
.../rul/{type => }/ParseDistSQLExecutor.java | 2 +-
.../distsql/rul/{type => }/PreviewExecutor.java | 2 +-
.../handler/distsql/rul/RULBackendHandler.java | 99 ----------------------
.../distsql/rul/RULBackendHandlerFactory.java | 42 ---------
...phere.distsql.handler.type.DistSQLQueryExecutor | 14 +--
.../handler/ProxyBackendHandlerFactoryTest.java | 14 ++-
.../distsql/DistSQLBackendHandlerFactoryTest.java | 14 +--
.../ral/QueryableRALBackendHandlerTest.java | 9 +-
...tusFromReadwriteSplittingRulesExecutorTest.java | 2 +-
.../{type => }/ShowLogicalTableExecutorTest.java | 2 +-
.../ShowRulesUsedStorageUnitExecutorTest.java | 2 +-
.../{type => }/ShowStorageUnitExecutorTest.java | 2 +-
.../rul/{type => }/FormatSQLExecutorTest.java | 8 +-
.../rul/{type => }/ParseDistSQLExecutorTest.java | 12 +--
25 files changed, 59 insertions(+), 352 deletions(-)
diff --git a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/DistSQLQueryExecuteEngine.java b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/DistSQLQueryExecuteEngine.java
index 26978721428..9d5c4c835bb 100644
--- a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/DistSQLQueryExecuteEngine.java
+++ b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/DistSQLQueryExecuteEngine.java
@@ -24,8 +24,6 @@ import org.apache.shardingsphere.distsql.handler.aware.DistSQLExecutorDatabaseAw
import org.apache.shardingsphere.distsql.handler.aware.DistSQLExecutorRuleAware;
import org.apache.shardingsphere.distsql.handler.util.DatabaseNameUtils;
import org.apache.shardingsphere.distsql.statement.DistSQLStatement;
-import org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.NoDatabaseSelectedException;
-import org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.UnknownDatabaseException;
import org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
@@ -76,7 +74,6 @@ public abstract class DistSQLQueryExecuteEngine {
if (null == rows) {
rows = executor.getRows(sqlStatement, contextManager);
}
- rows = executor.getRows(sqlStatement, contextManager);
}
@SuppressWarnings({"rawtypes", "unchecked"})
@@ -86,13 +83,7 @@ public abstract class DistSQLQueryExecuteEngine {
executor.setRule(globalRule.get());
return;
}
- ShardingSphereDatabase database;
- try {
- database = getDatabase(DatabaseNameUtils.getDatabaseName(sqlStatement, currentDatabaseName));
- } catch (final NoDatabaseSelectedException | UnknownDatabaseException ignored) {
- rows = Collections.emptyList();
- return;
- }
+ ShardingSphereDatabase database = getDatabase(DatabaseNameUtils.getDatabaseName(sqlStatement, currentDatabaseName));
Optional<ShardingSphereRule> databaseRule = database.getRuleMetaData().findSingleRule(executor.getRuleClass());
if (databaseRule.isPresent()) {
executor.setRule(databaseRule.get());
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactory.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactory.java
index be543455466..346dd006095 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactory.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactory.java
@@ -28,8 +28,6 @@ import org.apache.shardingsphere.infra.exception.core.external.sql.type.generic.
import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
import org.apache.shardingsphere.proxy.backend.handler.distsql.ral.RALBackendHandlerFactory;
import org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.RDLBackendHandlerFactory;
-import org.apache.shardingsphere.proxy.backend.handler.distsql.rql.RQLBackendHandlerFactory;
-import org.apache.shardingsphere.proxy.backend.handler.distsql.rul.RULBackendHandlerFactory;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
/**
@@ -47,8 +45,8 @@ public final class DistSQLBackendHandlerFactory {
* @throws UnsupportedSQLOperationException unsupported SQL operation exception
*/
public static ProxyBackendHandler newInstance(final DistSQLStatement sqlStatement, final ConnectionSession connectionSession) {
- if (sqlStatement instanceof RQLStatement) {
- return RQLBackendHandlerFactory.newInstance((RQLStatement) sqlStatement, connectionSession);
+ if (sqlStatement instanceof RQLStatement || sqlStatement instanceof RULStatement) {
+ return new DistSQLQueryBackendHandler(sqlStatement, connectionSession);
}
if (sqlStatement instanceof RDLStatement) {
return RDLBackendHandlerFactory.newInstance((RDLStatement) sqlStatement, connectionSession);
@@ -56,9 +54,6 @@ public final class DistSQLBackendHandlerFactory {
if (sqlStatement instanceof RALStatement) {
return RALBackendHandlerFactory.newInstance((RALStatement) sqlStatement, connectionSession);
}
- if (sqlStatement instanceof RULStatement) {
- return RULBackendHandlerFactory.newInstance((RULStatement) sqlStatement, connectionSession);
- }
throw new UnsupportedSQLOperationException(sqlStatement.getClass().getName());
}
}
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableRALBackendHandler.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLQueryBackendHandler.java
similarity index 89%
rename from proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableRALBackendHandler.java
rename to proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLQueryBackendHandler.java
index 201462d9567..12851fc9595 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableRALBackendHandler.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLQueryBackendHandler.java
@@ -15,16 +15,15 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.distsql.ral;
+package org.apache.shardingsphere.proxy.backend.handler.distsql;
import org.apache.shardingsphere.distsql.handler.type.DistSQLConnectionContext;
import org.apache.shardingsphere.distsql.handler.type.DistSQLQueryExecuteEngine;
-import org.apache.shardingsphere.distsql.statement.ral.queryable.QueryableRALStatement;
+import org.apache.shardingsphere.distsql.statement.DistSQLStatement;
import org.apache.shardingsphere.infra.merge.result.MergedResult;
import org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataMergedResult;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.handler.distsql.DistSQLBackendHandler;
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.header.ResponseHeader;
@@ -40,9 +39,9 @@ import java.util.List;
import java.util.stream.Collectors;
/**
- * Queryable RAL backend handler.
+ * DistSQL query backend handler.
*/
-public final class QueryableRALBackendHandler extends DistSQLQueryExecuteEngine implements DistSQLBackendHandler {
+public final class DistSQLQueryBackendHandler extends DistSQLQueryExecuteEngine implements DistSQLBackendHandler {
private final ConnectionSession connectionSession;
@@ -50,7 +49,7 @@ public final class QueryableRALBackendHandler extends DistSQLQueryExecuteEngine
private MergedResult mergedResult;
- public QueryableRALBackendHandler(final QueryableRALStatement sqlStatement, final ConnectionSession connectionSession) {
+ public DistSQLQueryBackendHandler(final DistSQLStatement sqlStatement, final ConnectionSession connectionSession) {
super(sqlStatement, connectionSession.getDatabaseName(), ProxyContext.getInstance().getContextManager());
this.connectionSession = connectionSession;
}
@@ -58,8 +57,8 @@ public final class QueryableRALBackendHandler extends DistSQLQueryExecuteEngine
@Override
public ResponseHeader execute() throws SQLException {
executeQuery();
- mergedResult = new LocalDataMergedResult(getRows());
queryHeaders = createQueryHeader(getColumnNames());
+ mergedResult = new LocalDataMergedResult(getRows());
return new QueryResponseHeader(queryHeaders);
}
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/RALBackendHandlerFactory.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/RALBackendHandlerFactory.java
index 6f648273965..f9327421a93 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/RALBackendHandlerFactory.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/RALBackendHandlerFactory.java
@@ -23,6 +23,7 @@ import org.apache.shardingsphere.distsql.statement.ral.RALStatement;
import org.apache.shardingsphere.distsql.statement.ral.queryable.QueryableRALStatement;
import org.apache.shardingsphere.distsql.statement.ral.updatable.UpdatableRALStatement;
import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
+import org.apache.shardingsphere.proxy.backend.handler.distsql.DistSQLQueryBackendHandler;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
/**
@@ -40,7 +41,7 @@ public final class RALBackendHandlerFactory {
*/
public static ProxyBackendHandler newInstance(final RALStatement sqlStatement, final ConnectionSession connectionSession) {
return sqlStatement instanceof QueryableRALStatement
- ? new QueryableRALBackendHandler((QueryableRALStatement) sqlStatement, connectionSession)
+ ? new DistSQLQueryBackendHandler(sqlStatement, connectionSession)
: new UpdatableRALBackendHandler((UpdatableRALStatement) sqlStatement, connectionSession);
}
}
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/RQLBackendHandler.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/RQLBackendHandler.java
deleted file mode 100644
index 1bbb3d4e8cf..00000000000
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/RQLBackendHandler.java
+++ /dev/null
@@ -1,99 +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.handler.distsql.rql;
-
-import org.apache.shardingsphere.distsql.handler.type.DistSQLConnectionContext;
-import org.apache.shardingsphere.distsql.handler.type.DistSQLQueryExecuteEngine;
-import org.apache.shardingsphere.distsql.statement.rql.RQLStatement;
-import org.apache.shardingsphere.infra.merge.result.MergedResult;
-import org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataMergedResult;
-import org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
-import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.handler.distsql.DistSQLBackendHandler;
-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.header.ResponseHeader;
-import org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeader;
-import org.apache.shardingsphere.proxy.backend.response.header.query.QueryResponseHeader;
-import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
-
-import java.sql.SQLException;
-import java.sql.Types;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * RQL backend handler.
- */
-public final class RQLBackendHandler extends DistSQLQueryExecuteEngine implements DistSQLBackendHandler {
-
- private final ConnectionSession connectionSession;
-
- private List<QueryHeader> queryHeaders;
-
- private MergedResult mergedResult;
-
- public RQLBackendHandler(final RQLStatement sqlStatement, final ConnectionSession connectionSession) {
- super(sqlStatement, connectionSession.getDatabaseName(), ProxyContext.getInstance().getContextManager());
- this.connectionSession = connectionSession;
- }
-
- @Override
- public ResponseHeader execute() throws SQLException {
- executeQuery();
- queryHeaders = createQueryHeader(getColumnNames());
- mergedResult = null == mergedResult ? createMergedResult(getRows()) : mergedResult;
- return new QueryResponseHeader(queryHeaders);
- }
-
- private List<QueryHeader> createQueryHeader(final Collection<String> columnNames) {
- return columnNames.stream().map(each -> new QueryHeader("", "", each, each, Types.CHAR, "CHAR", 255, 0, false, false, false, false)).collect(Collectors.toList());
- }
-
- private MergedResult createMergedResult(final Collection<LocalDataQueryResultRow> rows) {
- return new LocalDataMergedResult(rows);
- }
-
- @Override
- public boolean next() throws SQLException {
- return null != mergedResult && mergedResult.next();
- }
-
- @Override
- public QueryResponseRow getRowData() throws SQLException {
- List<QueryResponseCell> cells = new ArrayList<>(queryHeaders.size());
- for (int i = 0; i < queryHeaders.size(); i++) {
- cells.add(new QueryResponseCell(queryHeaders.get(i).getColumnType(), mergedResult.getValue(i + 1, Object.class)));
- }
- return new QueryResponseRow(cells);
- }
-
- @Override
- protected ShardingSphereDatabase getDatabase(final String databaseName) {
- return ProxyContext.getInstance().getDatabase(databaseName);
- }
-
- @Override
- protected DistSQLConnectionContext getDistSQLConnectionContext() {
- return new DistSQLConnectionContext(connectionSession.getConnectionContext(), connectionSession.getDatabaseConnectionManager().getConnectionSize(),
- connectionSession.getProtocolType(), connectionSession.getDatabaseConnectionManager(), connectionSession.getStatementManager());
- }
-}
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/RQLBackendHandlerFactory.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/RQLBackendHandlerFactory.java
deleted file mode 100644
index fc69f694ac7..00000000000
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/RQLBackendHandlerFactory.java
+++ /dev/null
@@ -1,42 +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.handler.distsql.rql;
-
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.distsql.statement.rql.RQLStatement;
-import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
-import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
-
-/**
- * RQL backend handler factory.
- */
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class RQLBackendHandlerFactory {
-
- /**
- * Create new instance of RQL backend handler.
- *
- * @param sqlStatement RQL statement
- * @param connectionSession connection session
- * @return RDL backend handler
- */
- public static ProxyBackendHandler newInstance(final RQLStatement sqlStatement, final ConnectionSession connectionSession) {
- return new RQLBackendHandler(sqlStatement, connectionSession);
- }
-}
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowLogicalTableExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/ShowLogicalTableExecutor.java
similarity index 99%
rename from proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowLogicalTableExecutor.java
rename to proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/ShowLogicalTableExecutor.java
index 0c2a1c448d4..14db769a9d4 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowLogicalTableExecutor.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/ShowLogicalTableExecutor.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.distsql.rql.type;
+package org.apache.shardingsphere.proxy.backend.handler.distsql.rql;
import lombok.Setter;
import org.apache.shardingsphere.distsql.handler.aware.DistSQLExecutorDatabaseAware;
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowRulesUsedStorageUnitExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/ShowRulesUsedStorageUnitExecutor.java
similarity index 99%
rename from proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowRulesUsedStorageUnitExecutor.java
rename to proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/ShowRulesUsedStorageUnitExecutor.java
index 644024ed85c..cf1eaefc9bc 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowRulesUsedStorageUnitExecutor.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/ShowRulesUsedStorageUnitExecutor.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.distsql.rql.type;
+package org.apache.shardingsphere.proxy.backend.handler.distsql.rql;
import lombok.Setter;
import org.apache.shardingsphere.distsql.handler.aware.DistSQLExecutorDatabaseAware;
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowStorageUnitExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/ShowStorageUnitExecutor.java
similarity index 99%
rename from proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowStorageUnitExecutor.java
rename to proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/ShowStorageUnitExecutor.java
index 82eef7610a4..3934bfc9b07 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowStorageUnitExecutor.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/ShowStorageUnitExecutor.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.distsql.rql.type;
+package org.apache.shardingsphere.proxy.backend.handler.distsql.rql;
import lombok.Setter;
import org.apache.shardingsphere.distsql.handler.aware.DistSQLExecutorDatabaseAware;
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/readwritesplitting/ShowStatusFromReadwriteSplittingRulesExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/readwritesplitting/ShowStatusFromReadwriteSplittingRulesExecutor.java
similarity index 99%
rename from proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/readwritesplitting/ShowStatusFromReadwriteSplittingRulesExecutor.java
rename to proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/readwritesplitting/ShowStatusFromReadwriteSplittingRulesExecutor.java
index 90d324aece9..57cb72c6518 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/readwritesplitting/ShowStatusFromReadwriteSplittingRulesExecutor.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/readwritesplitting/ShowStatusFromReadwriteSplittingRulesExecutor.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.distsql.rql.type.readwritesplitting;
+package org.apache.shardingsphere.proxy.backend.handler.distsql.rql.readwritesplitting;
import com.google.common.base.Strings;
import lombok.Setter;
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/type/FormatSQLExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/FormatSQLExecutor.java
similarity index 99%
rename from proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/type/FormatSQLExecutor.java
rename to proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/FormatSQLExecutor.java
index 228f0af55a2..0ec171e2c67 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/type/FormatSQLExecutor.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/FormatSQLExecutor.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.distsql.rul.type;
+package org.apache.shardingsphere.proxy.backend.handler.distsql.rul;
import lombok.Setter;
import org.apache.shardingsphere.distsql.handler.aware.DistSQLExecutorConnectionContextAware;
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/type/ParseDistSQLExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/ParseDistSQLExecutor.java
similarity index 99%
rename from proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/type/ParseDistSQLExecutor.java
rename to proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/ParseDistSQLExecutor.java
index c1bf3fb16c5..c6dfc9a3f37 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/type/ParseDistSQLExecutor.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/ParseDistSQLExecutor.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.distsql.rul.type;
+package org.apache.shardingsphere.proxy.backend.handler.distsql.rul;
import lombok.Setter;
import org.apache.shardingsphere.distsql.handler.aware.DistSQLExecutorConnectionContextAware;
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/type/PreviewExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/PreviewExecutor.java
similarity index 99%
rename from proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/type/PreviewExecutor.java
rename to proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/PreviewExecutor.java
index 0e6fa738061..42d7deea3d5 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/type/PreviewExecutor.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/PreviewExecutor.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.distsql.rul.type;
+package org.apache.shardingsphere.proxy.backend.handler.distsql.rul;
import com.google.common.base.Preconditions;
import lombok.Setter;
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/RULBackendHandler.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/RULBackendHandler.java
deleted file mode 100644
index d35f8e9843e..00000000000
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/RULBackendHandler.java
+++ /dev/null
@@ -1,99 +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.handler.distsql.rul;
-
-import org.apache.shardingsphere.distsql.handler.type.DistSQLConnectionContext;
-import org.apache.shardingsphere.distsql.handler.type.DistSQLQueryExecuteEngine;
-import org.apache.shardingsphere.distsql.statement.rul.RULStatement;
-import org.apache.shardingsphere.infra.merge.result.MergedResult;
-import org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataMergedResult;
-import org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
-import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.handler.distsql.DistSQLBackendHandler;
-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.header.ResponseHeader;
-import org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeader;
-import org.apache.shardingsphere.proxy.backend.response.header.query.QueryResponseHeader;
-import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
-
-import java.sql.SQLException;
-import java.sql.Types;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * RUL backend handler.
- */
-public final class RULBackendHandler extends DistSQLQueryExecuteEngine implements DistSQLBackendHandler {
-
- private final ConnectionSession connectionSession;
-
- private List<QueryHeader> queryHeaders;
-
- private MergedResult mergedResult;
-
- public RULBackendHandler(final RULStatement sqlStatement, final ConnectionSession connectionSession) {
- super(sqlStatement, connectionSession.getDatabaseName(), ProxyContext.getInstance().getContextManager());
- this.connectionSession = connectionSession;
- }
-
- @Override
- public ResponseHeader execute() throws SQLException {
- executeQuery();
- queryHeaders = createQueryHeader(getColumnNames());
- mergedResult = createMergedResult(getRows());
- return new QueryResponseHeader(queryHeaders);
- }
-
- private List<QueryHeader> createQueryHeader(final Collection<String> columnNames) {
- return columnNames.stream().map(each -> new QueryHeader("", "", each, each, Types.CHAR, "CHAR", 255, 0, false, false, false, false)).collect(Collectors.toList());
- }
-
- private MergedResult createMergedResult(final Collection<LocalDataQueryResultRow> rows) {
- return new LocalDataMergedResult(rows);
- }
-
- @Override
- public boolean next() throws SQLException {
- return null != mergedResult && mergedResult.next();
- }
-
- @Override
- public QueryResponseRow getRowData() throws SQLException {
- List<QueryResponseCell> cells = new ArrayList<>(queryHeaders.size());
- for (int i = 0; i < queryHeaders.size(); i++) {
- cells.add(new QueryResponseCell(queryHeaders.get(i).getColumnType(), mergedResult.getValue(i + 1, Object.class)));
- }
- return new QueryResponseRow(cells);
- }
-
- @Override
- protected ShardingSphereDatabase getDatabase(final String databaseName) {
- return ProxyContext.getInstance().getDatabase(databaseName);
- }
-
- @Override
- protected DistSQLConnectionContext getDistSQLConnectionContext() {
- return new DistSQLConnectionContext(connectionSession.getConnectionContext(), connectionSession.getDatabaseConnectionManager().getConnectionSize(),
- connectionSession.getProtocolType(), connectionSession.getDatabaseConnectionManager(), connectionSession.getStatementManager());
- }
-}
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/RULBackendHandlerFactory.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/RULBackendHandlerFactory.java
deleted file mode 100644
index 6708f526517..00000000000
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/RULBackendHandlerFactory.java
+++ /dev/null
@@ -1,42 +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.handler.distsql.rul;
-
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.distsql.statement.rul.RULStatement;
-import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
-import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
-
-/**
- * RUL backend handler factory.
- */
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class RULBackendHandlerFactory {
-
- /**
- * Create new instance of RUL backend handler.
- *
- * @param sqlStatement RUL statement
- * @param connectionSession connection session
- * @return created instance
- */
- public static ProxyBackendHandler newInstance(final RULStatement sqlStatement, final ConnectionSession connectionSession) {
- return new RULBackendHandler(sqlStatement, connectionSession);
- }
-}
diff --git a/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.type.DistSQLQueryExecutor b/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.type.DistSQLQueryExecutor
index 808b9c4ad9a..cf4065402a9 100644
--- a/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.type.DistSQLQueryExecutor
+++ b/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.type.DistSQLQueryExecutor
@@ -15,10 +15,10 @@
# limitations under the License.
#
-org.apache.shardingsphere.proxy.backend.handler.distsql.rql.type.ShowStorageUnitExecutor
-org.apache.shardingsphere.proxy.backend.handler.distsql.rql.type.ShowRulesUsedStorageUnitExecutor
-org.apache.shardingsphere.proxy.backend.handler.distsql.rql.type.ShowLogicalTableExecutor
-org.apache.shardingsphere.proxy.backend.handler.distsql.rql.type.readwritesplitting.ShowStatusFromReadwriteSplittingRulesExecutor
+org.apache.shardingsphere.proxy.backend.handler.distsql.rql.ShowStorageUnitExecutor
+org.apache.shardingsphere.proxy.backend.handler.distsql.rql.ShowRulesUsedStorageUnitExecutor
+org.apache.shardingsphere.proxy.backend.handler.distsql.rql.ShowLogicalTableExecutor
+org.apache.shardingsphere.proxy.backend.handler.distsql.rql.readwritesplitting.ShowStatusFromReadwriteSplittingRulesExecutor
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable.ShowComputeNodesExecutor
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable.ShowComputeNodeInfoExecutor
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable.ShowComputeNodeModeExecutor
@@ -32,6 +32,6 @@ org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable.ShowTableM
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable.ShowMigrationRuleExecutor
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable.ShowServiceProviderImplementationsExecutor
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable.ShowKeyGenerateAlgorithmImplementationsExecutor
-org.apache.shardingsphere.proxy.backend.handler.distsql.rul.type.FormatSQLExecutor
-org.apache.shardingsphere.proxy.backend.handler.distsql.rul.type.ParseDistSQLExecutor
-org.apache.shardingsphere.proxy.backend.handler.distsql.rul.type.PreviewExecutor
+org.apache.shardingsphere.proxy.backend.handler.distsql.rul.FormatSQLExecutor
+org.apache.shardingsphere.proxy.backend.handler.distsql.rul.ParseDistSQLExecutor
+org.apache.shardingsphere.proxy.backend.handler.distsql.rul.PreviewExecutor
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
index 6f87bef5540..bf9628bb286 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
+++ b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
@@ -39,10 +39,8 @@ import org.apache.shardingsphere.proxy.backend.connector.ProxyDatabaseConnection
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.handler.admin.DatabaseAdminQueryBackendHandler;
import org.apache.shardingsphere.proxy.backend.handler.data.impl.UnicastDatabaseBackendHandler;
-import org.apache.shardingsphere.proxy.backend.handler.distsql.ral.QueryableRALBackendHandler;
+import org.apache.shardingsphere.proxy.backend.handler.distsql.DistSQLQueryBackendHandler;
import org.apache.shardingsphere.proxy.backend.handler.distsql.ral.UpdatableRALBackendHandler;
-import org.apache.shardingsphere.proxy.backend.handler.distsql.rql.RQLBackendHandler;
-import org.apache.shardingsphere.proxy.backend.handler.distsql.rul.RULBackendHandler;
import org.apache.shardingsphere.proxy.backend.handler.skip.SkipBackendHandler;
import org.apache.shardingsphere.proxy.backend.handler.transaction.TransactionBackendHandler;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
@@ -133,10 +131,10 @@ class ProxyBackendHandlerFactoryTest {
assertThat(actual, instanceOf(UpdatableRALBackendHandler.class));
sql = "show dist variable where name = sql_show";
actual = ProxyBackendHandlerFactory.newInstance(databaseType, sql, connectionSession, new HintValueContext());
- assertThat(actual, instanceOf(QueryableRALBackendHandler.class));
+ assertThat(actual, instanceOf(DistSQLQueryBackendHandler.class));
sql = "show dist variables";
actual = ProxyBackendHandlerFactory.newInstance(databaseType, sql, connectionSession, new HintValueContext());
- assertThat(actual, instanceOf(QueryableRALBackendHandler.class));
+ assertThat(actual, instanceOf(DistSQLQueryBackendHandler.class));
}
@ParameterizedTest(name = "{0}")
@@ -226,7 +224,7 @@ class ProxyBackendHandlerFactoryTest {
when(connectionSession.getTransactionStatus().isInTransaction()).thenReturn(true);
String sql = "SHOW TRANSACTION RULE;";
ProxyBackendHandler actual = ProxyBackendHandlerFactory.newInstance(databaseType, sql, connectionSession, new HintValueContext());
- assertThat(actual, instanceOf(RQLBackendHandler.class));
+ assertThat(actual, instanceOf(DistSQLQueryBackendHandler.class));
}
@Test
@@ -234,7 +232,7 @@ class ProxyBackendHandlerFactoryTest {
when(connectionSession.getTransactionStatus().isInTransaction()).thenReturn(true);
String sql = "SHOW DEFAULT SINGLE TABLE STORAGE UNIT";
ProxyBackendHandler actual = ProxyBackendHandlerFactory.newInstance(databaseType, sql, connectionSession, new HintValueContext());
- assertThat(actual, instanceOf(RQLBackendHandler.class));
+ assertThat(actual, instanceOf(DistSQLQueryBackendHandler.class));
}
@Test
@@ -242,7 +240,7 @@ class ProxyBackendHandlerFactoryTest {
when(connectionSession.getTransactionStatus().isInTransaction()).thenReturn(true);
String sql = "PREVIEW INSERT INTO account VALUES(1, 1, 1)";
ProxyBackendHandler actual = ProxyBackendHandlerFactory.newInstance(databaseType, sql, connectionSession, new HintValueContext());
- assertThat(actual, instanceOf(RULBackendHandler.class));
+ assertThat(actual, instanceOf(DistSQLQueryBackendHandler.class));
}
private static class TCLTestCaseArgumentsProvider implements ArgumentsProvider {
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
index 383b22aea34..12a7187dd72 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
+++ b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
@@ -32,7 +32,6 @@ import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.RDLBackendHandlerFactory;
-import org.apache.shardingsphere.proxy.backend.handler.distsql.rql.RQLBackendHandlerFactory;
import org.apache.shardingsphere.proxy.backend.response.header.query.QueryResponseHeader;
import org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
@@ -49,6 +48,7 @@ import org.apache.shardingsphere.shadow.distsql.statement.DropShadowRuleStatemen
import org.apache.shardingsphere.shadow.distsql.statement.ShowShadowAlgorithmsStatement;
import org.apache.shardingsphere.shadow.distsql.statement.ShowShadowRulesStatement;
import org.apache.shardingsphere.shadow.distsql.statement.ShowShadowTableRulesStatement;
+import org.apache.shardingsphere.shadow.rule.ShadowRule;
import org.apache.shardingsphere.sharding.distsql.statement.CreateShardingTableRuleStatement;
import org.apache.shardingsphere.test.mock.AutoMockExtension;
import org.apache.shardingsphere.test.mock.StaticMockSettings;
@@ -63,6 +63,7 @@ import org.mockito.quality.Strictness;
import java.sql.SQLException;
import java.util.Collections;
+import java.util.Optional;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -161,19 +162,19 @@ class DistSQLBackendHandlerFactoryTest {
@Test
void assertExecuteShowShadowRulesContext() throws SQLException {
mockRuleMetaData();
- assertThat(RQLBackendHandlerFactory.newInstance(mock(ShowShadowRulesStatement.class), connectionSession).execute(), instanceOf(QueryResponseHeader.class));
+ assertThat(new DistSQLQueryBackendHandler(mock(ShowShadowRulesStatement.class), connectionSession).execute(), instanceOf(QueryResponseHeader.class));
}
@Test
void assertExecuteShowShadowTableRulesContext() throws SQLException {
mockRuleMetaData();
- assertThat(RQLBackendHandlerFactory.newInstance(mock(ShowShadowTableRulesStatement.class), connectionSession).execute(), instanceOf(QueryResponseHeader.class));
+ assertThat(new DistSQLQueryBackendHandler(mock(ShowShadowTableRulesStatement.class), connectionSession).execute(), instanceOf(QueryResponseHeader.class));
}
@Test
void assertExecuteShowShadowAlgorithmsContext() throws SQLException {
mockRuleMetaData();
- assertThat(RQLBackendHandlerFactory.newInstance(mock(ShowShadowAlgorithmsStatement.class), connectionSession).execute(), instanceOf(QueryResponseHeader.class));
+ assertThat(new DistSQLQueryBackendHandler(mock(ShowShadowAlgorithmsStatement.class), connectionSession).execute(), instanceOf(QueryResponseHeader.class));
}
@Test
@@ -204,7 +205,7 @@ class DistSQLBackendHandlerFactoryTest {
@Test
void assertExecuteShowResourceContext() throws SQLException {
- assertThat(RQLBackendHandlerFactory.newInstance(mock(ShowStorageUnitsStatement.class), connectionSession).execute(), instanceOf(QueryResponseHeader.class));
+ assertThat(new DistSQLQueryBackendHandler(mock(ShowStorageUnitsStatement.class), connectionSession).execute(), instanceOf(QueryResponseHeader.class));
}
private void mockRuleMetaData() {
@@ -214,6 +215,9 @@ class DistSQLBackendHandlerFactoryTest {
RuleMetaData ruleMetaData = mock(RuleMetaData.class);
ShadowRuleConfiguration ruleConfig = mockShadowRuleConfiguration();
when(ruleMetaData.getConfigurations()).thenReturn(Collections.singleton(ruleConfig));
+ ShadowRule rule = mock(ShadowRule.class);
+ when(rule.getConfiguration()).thenReturn(ruleConfig);
+ when(ruleMetaData.findSingleRule(ShadowRule.class)).thenReturn(Optional.of(rule));
when(database.getRuleMetaData()).thenReturn(ruleMetaData);
when(ProxyContext.getInstance().getDatabase("foo_db")).thenReturn(database);
}
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableRALBackendHandlerTest.java b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableRALBackendHandlerTest.java
index ccc65a5760e..860e1672501 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableRALBackendHandlerTest.java
+++ b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableRALBackendHandlerTest.java
@@ -36,6 +36,7 @@ import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
+import org.apache.shardingsphere.proxy.backend.handler.distsql.DistSQLQueryBackendHandler;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.DatabaseSegment;
import org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
@@ -62,7 +63,7 @@ class QueryableRALBackendHandlerTest {
@Test
void assertExecuteWithNoDatabase() {
when(ProxyContext.getInstance().getDatabase(null)).thenThrow(NoDatabaseSelectedException.class);
- assertThrows(NoDatabaseSelectedException.class, () -> new QueryableRALBackendHandler(mock(ExportDatabaseConfigurationStatement.class), mock(ConnectionSession.class)).execute());
+ assertThrows(NoDatabaseSelectedException.class, () -> new DistSQLQueryBackendHandler(mock(ExportDatabaseConfigurationStatement.class), mock(ConnectionSession.class)).execute());
}
@Test
@@ -74,12 +75,12 @@ class QueryableRALBackendHandlerTest {
when(ProxyContext.getInstance().getDatabase("unknown")).thenThrow(UnknownDatabaseException.class);
ContextManager contextManager = new ContextManager(metaDataContexts, mock(InstanceContext.class));
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
- assertThrows(UnknownDatabaseException.class, () -> new QueryableRALBackendHandler(mock(ExportDatabaseConfigurationStatement.class), connectionSession).execute());
+ assertThrows(UnknownDatabaseException.class, () -> new DistSQLQueryBackendHandler(mock(ExportDatabaseConfigurationStatement.class), connectionSession).execute());
}
@Test
void assertExecuteWithAbstractStatement() {
- assertThrows(ServiceProviderNotFoundException.class, () -> new QueryableRALBackendHandler(mock(QueryableRALStatement.class), mock(ConnectionSession.class)).execute());
+ assertThrows(ServiceProviderNotFoundException.class, () -> new DistSQLQueryBackendHandler(mock(QueryableRALStatement.class), mock(ConnectionSession.class)).execute());
}
@Test
@@ -89,7 +90,7 @@ class QueryableRALBackendHandlerTest {
when(database.getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class, "FIXTURE"));
when(database.getSchema("foo_db")).thenReturn(new ShardingSphereSchema(createTableMap(), Collections.emptyMap()));
when(ProxyContext.getInstance().getDatabase("foo_db")).thenReturn(database);
- assertDoesNotThrow(() -> new QueryableRALBackendHandler(createSqlStatement(), mock(ConnectionSession.class)).execute());
+ assertDoesNotThrow(() -> new DistSQLQueryBackendHandler(createSqlStatement(), mock(ConnectionSession.class)).execute());
}
private Map<String, ShardingSphereTable> createTableMap() {
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowStatusFromReadwriteSplittingRulesExecutorTest.java b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowStatusFromReadwriteSplittingRulesExecutorTest.java
index 1ef949293be..3e8e79c0231 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowStatusFromReadwriteSplittingRulesExecutorTest.java
+++ b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowStatusFromReadwriteSplittingRulesExecutorTest.java
@@ -32,7 +32,7 @@ import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
import org.apache.shardingsphere.mode.repository.cluster.zookeeper.ZookeeperRepository;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.handler.distsql.rql.type.readwritesplitting.ShowStatusFromReadwriteSplittingRulesExecutor;
+import org.apache.shardingsphere.proxy.backend.handler.distsql.rql.readwritesplitting.ShowStatusFromReadwriteSplittingRulesExecutor;
import org.apache.shardingsphere.readwritesplitting.distsql.statement.ShowStatusFromReadwriteSplittingRulesStatement;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.DatabaseSegment;
import org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowLogicalTableExecutorTest.java b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/ShowLogicalTableExecutorTest.java
similarity index 99%
rename from proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowLogicalTableExecutorTest.java
rename to proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/ShowLogicalTableExecutorTest.java
index 2540810c2f4..9bc3db21f20 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowLogicalTableExecutorTest.java
+++ b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/ShowLogicalTableExecutorTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.distsql.rql.type;
+package org.apache.shardingsphere.proxy.backend.handler.distsql.rql;
import org.apache.shardingsphere.distsql.statement.rql.resource.ShowLogicalTablesStatement;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowRulesUsedStorageUnitExecutorTest.java b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/ShowRulesUsedStorageUnitExecutorTest.java
similarity index 99%
rename from proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowRulesUsedStorageUnitExecutorTest.java
rename to proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/ShowRulesUsedStorageUnitExecutorTest.java
index 72fe403d117..4b3cedaf351 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowRulesUsedStorageUnitExecutorTest.java
+++ b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/ShowRulesUsedStorageUnitExecutorTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.distsql.rql.type;
+package org.apache.shardingsphere.proxy.backend.handler.distsql.rql;
import org.apache.shardingsphere.distsql.statement.rql.rule.database.ShowRulesUsedStorageUnitStatement;
import org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration;
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowStorageUnitExecutorTest.java b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/ShowStorageUnitExecutorTest.java
similarity index 99%
rename from proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowStorageUnitExecutorTest.java
rename to proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/ShowStorageUnitExecutorTest.java
index 2ae415bf007..20d0f9aac8c 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowStorageUnitExecutorTest.java
+++ b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/ShowStorageUnitExecutorTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.distsql.rql.type;
+package org.apache.shardingsphere.proxy.backend.handler.distsql.rql;
import org.apache.shardingsphere.distsql.statement.rql.resource.ShowStorageUnitsStatement;
import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/type/FormatSQLExecutorTest.java b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/FormatSQLExecutorTest.java
similarity index 90%
rename from proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/type/FormatSQLExecutorTest.java
rename to proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/FormatSQLExecutorTest.java
index 817861ee8f6..cbb527eee78 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/type/FormatSQLExecutorTest.java
+++ b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/FormatSQLExecutorTest.java
@@ -15,14 +15,14 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.distsql.rul.type;
+package org.apache.shardingsphere.proxy.backend.handler.distsql.rul;
import org.apache.shardingsphere.distsql.statement.rul.sql.FormatStatement;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.handler.distsql.rul.RULBackendHandler;
+import org.apache.shardingsphere.proxy.backend.handler.distsql.DistSQLQueryBackendHandler;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import org.apache.shardingsphere.test.mock.AutoMockExtension;
import org.apache.shardingsphere.test.mock.StaticMockSettings;
@@ -45,7 +45,7 @@ class FormatSQLExecutorTest {
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private ContextManager contextManager;
- @Mock
+ @Mock(answer = Answers.RETURNS_DEEP_STUBS)
private ConnectionSession connectionSession;
@Test
@@ -53,7 +53,7 @@ class FormatSQLExecutorTest {
String sql = "SELECT * FROM t_order WHERE order_id=1";
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
when(connectionSession.getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class, "MySQL"));
- RULBackendHandler handler = new RULBackendHandler(new FormatStatement(sql), connectionSession);
+ DistSQLQueryBackendHandler handler = new DistSQLQueryBackendHandler(new FormatStatement(sql), connectionSession);
handler.execute();
handler.next();
assertThat(new LinkedList<>(handler.getRowData().getData()).getFirst(), is("SELECT * \n"
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/type/ParseDistSQLExecutorTest.java b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/ParseDistSQLExecutorTest.java
similarity index 89%
rename from proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/type/ParseDistSQLExecutorTest.java
rename to proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/ParseDistSQLExecutorTest.java
index 148846dacdd..3f563e043fb 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/type/ParseDistSQLExecutorTest.java
+++ b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/ParseDistSQLExecutorTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.distsql.rul.type;
+package org.apache.shardingsphere.proxy.backend.handler.distsql.rul;
import org.apache.shardingsphere.distsql.statement.rul.sql.ParseStatement;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
@@ -26,7 +26,7 @@ import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.parser.rule.SQLParserRule;
import org.apache.shardingsphere.parser.rule.builder.DefaultSQLParserRuleConfigurationBuilder;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.handler.distsql.rul.RULBackendHandler;
+import org.apache.shardingsphere.proxy.backend.handler.distsql.DistSQLQueryBackendHandler;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import org.apache.shardingsphere.sql.parser.exception.SQLParsingException;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
@@ -56,7 +56,7 @@ class ParseDistSQLExecutorTest {
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private ContextManager contextManager;
- @Mock
+ @Mock(answer = Answers.RETURNS_DEEP_STUBS)
private ConnectionSession connectionSession;
@BeforeEach
@@ -69,7 +69,7 @@ class ParseDistSQLExecutorTest {
void assertGetRowDataForMySQL() throws SQLException {
String sql = "SELECT * FROM t_order";
when(connectionSession.getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class, "MySQL"));
- RULBackendHandler handler = new RULBackendHandler(new ParseStatement(sql), connectionSession);
+ DistSQLQueryBackendHandler handler = new DistSQLQueryBackendHandler(new ParseStatement(sql), connectionSession);
handler.execute();
handler.next();
SQLStatement statement = sqlParserRule.getSQLParserEngine(TypedSPILoader.getService(DatabaseType.class, "MySQL")).parse(sql, false);
@@ -81,7 +81,7 @@ class ParseDistSQLExecutorTest {
void assertGetRowDataForPostgreSQL() throws SQLException {
String sql = "SELECT * FROM t_order";
when(connectionSession.getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class, "PostgreSQL"));
- RULBackendHandler handler = new RULBackendHandler(new ParseStatement(sql), connectionSession);
+ DistSQLQueryBackendHandler handler = new DistSQLQueryBackendHandler(new ParseStatement(sql), connectionSession);
handler.execute();
handler.next();
SQLStatement statement = sqlParserRule.getSQLParserEngine(TypedSPILoader.getService(DatabaseType.class, "PostgreSQL")).parse(sql, false);
@@ -92,7 +92,7 @@ class ParseDistSQLExecutorTest {
void assertExecute() {
String sql = "wrong sql";
when(connectionSession.getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class, "MySQL"));
- RULBackendHandler handler = new RULBackendHandler(new ParseStatement(sql), connectionSession);
+ DistSQLQueryBackendHandler handler = new DistSQLQueryBackendHandler(new ParseStatement(sql), connectionSession);
assertThrows(SQLParsingException.class, handler::execute);
}
}