This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new ac06be29ea0 Refactor DistSQLQueryExecuteEngine (#30018)
ac06be29ea0 is described below
commit ac06be29ea03c3c6d89a76dbea7392fe16c8d51f
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Feb 6 18:52:51 2024 +0800
Refactor DistSQLQueryExecuteEngine (#30018)
* Refactor DistSQLQueryExecuteEngine
* Refactor DistSQLQueryExecuteEngine
---
.../type/query/DistSQLQueryExecuteEngine.java | 12 +++++++-----
.../distsql/DistSQLQueryBackendHandler.java | 22 +++++++++-------------
.../ral/QueryableRALBackendHandlerTest.java | 4 ++--
3 files changed, 18 insertions(+), 20 deletions(-)
diff --git
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/query/DistSQLQueryExecuteEngine.java
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/query/DistSQLQueryExecuteEngine.java
index a58eb49939e..48a2400661d 100644
---
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/query/DistSQLQueryExecuteEngine.java
+++
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/query/DistSQLQueryExecuteEngine.java
@@ -34,12 +34,14 @@ import java.util.Collections;
/**
* DistSQL query execute engine.
*/
-public abstract class DistSQLQueryExecuteEngine {
+public final class DistSQLQueryExecuteEngine {
private final DistSQLStatement sqlStatement;
private final ContextManager contextManager;
+ private final DistSQLConnectionContext distsqlConnectionContext;
+
private final String databaseName;
@Getter
@@ -48,9 +50,11 @@ public abstract class DistSQLQueryExecuteEngine {
@Getter
private Collection<LocalDataQueryResultRow> rows;
- public DistSQLQueryExecuteEngine(final DistSQLStatement sqlStatement,
final String currentDatabaseName, final ContextManager contextManager) {
+ public DistSQLQueryExecuteEngine(final DistSQLStatement sqlStatement,
final String currentDatabaseName,
+ final ContextManager contextManager,
final DistSQLConnectionContext distsqlConnectionContext) {
this.sqlStatement = sqlStatement;
this.contextManager = contextManager;
+ this.distsqlConnectionContext = distsqlConnectionContext;
databaseName = DatabaseNameUtils.getDatabaseName(sqlStatement,
currentDatabaseName);
}
@@ -64,13 +68,11 @@ public abstract class DistSQLQueryExecuteEngine {
DistSQLQueryExecutor<DistSQLStatement> executor =
TypedSPILoader.getService(DistSQLQueryExecutor.class, sqlStatement.getClass());
columnNames = executor.getColumnNames();
try {
- new DistSQLExecutorAwareSetter(executor).set(contextManager, null
== databaseName ? null : contextManager.getDatabase(databaseName),
getDistSQLConnectionContext());
+ new DistSQLExecutorAwareSetter(executor).set(contextManager, null
== databaseName ? null : contextManager.getDatabase(databaseName),
distsqlConnectionContext);
} catch (final UnsupportedSQLOperationException ignored) {
rows = Collections.emptyList();
return;
}
rows = executor.getRows(sqlStatement, contextManager);
}
-
- protected abstract DistSQLConnectionContext getDistSQLConnectionContext();
}
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLQueryBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLQueryBackendHandler.java
index e24693376be..3d045f4d3ea 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLQueryBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLQueryBackendHandler.java
@@ -40,24 +40,26 @@ import java.util.stream.Collectors;
/**
* DistSQL query backend handler.
*/
-public final class DistSQLQueryBackendHandler extends
DistSQLQueryExecuteEngine implements DistSQLBackendHandler {
+public final class DistSQLQueryBackendHandler implements DistSQLBackendHandler
{
- private final ConnectionSession connectionSession;
+ private final DistSQLQueryExecuteEngine engine;
private List<QueryHeader> queryHeaders;
private MergedResult mergedResult;
public DistSQLQueryBackendHandler(final DistSQLStatement sqlStatement,
final ConnectionSession connectionSession) {
- super(sqlStatement, connectionSession.getDatabaseName(),
ProxyContext.getInstance().getContextManager());
- this.connectionSession = connectionSession;
+ DistSQLConnectionContext distsqlConnectionContext = new
DistSQLConnectionContext(connectionSession.getConnectionContext(),
+
connectionSession.getDatabaseConnectionManager().getConnectionSize(),
connectionSession.getProtocolType(),
+ connectionSession.getDatabaseConnectionManager(),
connectionSession.getStatementManager());
+ engine = new DistSQLQueryExecuteEngine(sqlStatement,
connectionSession.getDatabaseName(),
ProxyContext.getInstance().getContextManager(), distsqlConnectionContext);
}
@Override
public ResponseHeader execute() throws SQLException {
- executeQuery();
- queryHeaders = createQueryHeader(getColumnNames());
- mergedResult = new LocalDataMergedResult(getRows());
+ engine.executeQuery();
+ queryHeaders = createQueryHeader(engine.getColumnNames());
+ mergedResult = new LocalDataMergedResult(engine.getRows());
return new QueryResponseHeader(queryHeaders);
}
@@ -78,10 +80,4 @@ public final class DistSQLQueryBackendHandler extends
DistSQLQueryExecuteEngine
}
return new QueryResponseRow(cells);
}
-
- @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/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 ce584598220..1024d18affb 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
@@ -70,7 +70,7 @@ class QueryableRALBackendHandlerTest {
void assertExecuteWithUnknownDatabase() {
ShardingSphereMetaData metaData = new ShardingSphereMetaData();
MetaDataContexts metaDataContexts = new
MetaDataContexts(mock(MetaDataPersistService.class), metaData);
- ConnectionSession connectionSession = mock(ConnectionSession.class);
+ ConnectionSession connectionSession = mock(ConnectionSession.class,
RETURNS_DEEP_STUBS);
when(connectionSession.getDatabaseName()).thenReturn("unknown");
ContextManager contextManager = new ContextManager(metaDataContexts,
mock(InstanceContext.class));
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
@@ -79,7 +79,7 @@ class QueryableRALBackendHandlerTest {
@Test
void assertExecuteWithAbstractStatement() {
- assertThrows(ServiceProviderNotFoundException.class, () -> new
DistSQLQueryBackendHandler(mock(QueryableRALStatement.class),
mock(ConnectionSession.class)).execute());
+ assertThrows(ServiceProviderNotFoundException.class, () -> new
DistSQLQueryBackendHandler(mock(QueryableRALStatement.class),
mock(ConnectionSession.class, RETURNS_DEEP_STUBS)).execute());
}
@Test