This is an automated email from the ASF dual-hosted git repository.
zhonghongsheng 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 0f04f334230 Support ConnectionContextAware for DistSQLQueryExecutor
(#37469)
0f04f334230 is described below
commit 0f04f334230847693d9c1b9bcb3aefda100d8319
Author: Hongsheng Zhong <[email protected]>
AuthorDate: Tue Dec 23 16:05:00 2025 +0800
Support ConnectionContextAware for DistSQLQueryExecutor (#37469)
* Add QueryContext param in DistSQLUpdateProxyBackendHandler constructor
* Refactor DistSQLUpdateExecuteEngine constructor, replace
ConnectionContext to DistSQLConnectionContext
* Refactor DistSQLExecutorAwareSetter set method, remove ConnectionContext
param
* Update unit test
---
.../handler/aware/DistSQLExecutorAwareSetter.java | 11 ++++-----
.../engine/query/DistSQLQueryExecuteEngine.java | 2 +-
.../engine/update/DistSQLUpdateExecuteEngine.java | 11 ++++-----
.../distsql/DistSQLProxyBackendHandlerFactory.java | 4 ++--
.../distsql/DistSQLUpdateProxyBackendHandler.java | 9 ++++++--
.../DistSQLProxyBackendHandlerFactoryTest.java | 26 +++++++++++-----------
.../DistSQLUpdateProxyBackendHandlerTest.java | 14 +++++++-----
.../DistSQLGlobalRuleDefinitionExecutorAssert.java | 4 ++--
8 files changed, 43 insertions(+), 38 deletions(-)
diff --git
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/aware/DistSQLExecutorAwareSetter.java
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/aware/DistSQLExecutorAwareSetter.java
index 328ba678cd5..2039bfb5a4a 100644
---
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/aware/DistSQLExecutorAwareSetter.java
+++
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/aware/DistSQLExecutorAwareSetter.java
@@ -28,7 +28,6 @@ import
org.apache.shardingsphere.infra.exception.generic.UnsupportedSQLOperation
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.rewrite.sql.token.common.generator.aware.ConnectionContextAware;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
-import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
import org.apache.shardingsphere.mode.manager.ContextManager;
import java.util.Optional;
@@ -46,13 +45,11 @@ public final class DistSQLExecutorAwareSetter {
*
* @param contextManager context manager
* @param database database
- * @param distSQLConnectionContext DistSQL connection context
- * @param connectionContext connection context
+ * @param distsqlConnectionContext DistSQL connection context
* @param sqlStatement DistSQL statement
*/
@SuppressWarnings("rawtypes")
- public void set(final ContextManager contextManager, final
ShardingSphereDatabase database, final DistSQLConnectionContext
distSQLConnectionContext,
- final ConnectionContext connectionContext, final
DistSQLStatement sqlStatement) {
+ public void set(final ContextManager contextManager, final
ShardingSphereDatabase database, final DistSQLConnectionContext
distsqlConnectionContext, final DistSQLStatement sqlStatement) {
if (executor instanceof DistSQLExecutorDatabaseAware) {
ShardingSpherePreconditions.checkNotNull(database,
NoDatabaseSelectedException::new);
((DistSQLExecutorDatabaseAware) executor).setDatabase(database);
@@ -64,10 +61,10 @@ public final class DistSQLExecutorAwareSetter {
setRule((DistSQLExecutorRuleAware) executor, contextManager,
database);
}
if (executor instanceof DistSQLExecutorConnectionContextAware) {
- ((DistSQLExecutorConnectionContextAware)
executor).setConnectionContext(distSQLConnectionContext);
+ ((DistSQLExecutorConnectionContextAware)
executor).setConnectionContext(distsqlConnectionContext);
}
if (executor instanceof ConnectionContextAware) {
- ((ConnectionContextAware)
executor).setConnectionContext(connectionContext);
+ ((ConnectionContextAware)
executor).setConnectionContext(distsqlConnectionContext.getQueryContext().getConnectionContext());
}
}
diff --git
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/query/DistSQLQueryExecuteEngine.java
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/query/DistSQLQueryExecuteEngine.java
index e5ae6b46749..a4209e54d81 100644
---
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/query/DistSQLQueryExecuteEngine.java
+++
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/query/DistSQLQueryExecuteEngine.java
@@ -67,7 +67,7 @@ public final class DistSQLQueryExecuteEngine {
public void executeQuery() throws SQLException {
DistSQLQueryExecutor<DistSQLStatement> executor =
TypedSPILoader.getService(DistSQLQueryExecutor.class, sqlStatement.getClass());
try {
- new DistSQLExecutorAwareSetter(executor).set(contextManager, null
== databaseName ? null : contextManager.getDatabase(databaseName),
distsqlConnectionContext, null, sqlStatement);
+ new DistSQLExecutorAwareSetter(executor).set(contextManager, null
== databaseName ? null : contextManager.getDatabase(databaseName),
distsqlConnectionContext, sqlStatement);
} catch (final UnsupportedSQLOperationException ignored) {
columnNames = executor.getColumnNames(sqlStatement);
rows = Collections.emptyList();
diff --git
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/DistSQLUpdateExecuteEngine.java
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/DistSQLUpdateExecuteEngine.java
index 5bd4750a84f..e90e28f4b9e 100644
---
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/DistSQLUpdateExecuteEngine.java
+++
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/DistSQLUpdateExecuteEngine.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.distsql.handler.engine.update;
import
org.apache.shardingsphere.distsql.handler.aware.DistSQLExecutorAwareSetter;
+import
org.apache.shardingsphere.distsql.handler.engine.DistSQLConnectionContext;
import
org.apache.shardingsphere.distsql.handler.engine.update.rdl.rule.engine.database.DatabaseRuleDefinitionExecuteEngine;
import
org.apache.shardingsphere.distsql.handler.engine.update.rdl.rule.engine.global.GlobalRuleDefinitionExecuteEngine;
import
org.apache.shardingsphere.distsql.handler.engine.update.rdl.rule.spi.database.DatabaseRuleDefinitionExecutor;
@@ -31,7 +32,6 @@ import
org.apache.shardingsphere.distsql.statement.type.rdl.rule.RuleDefinitionS
import
org.apache.shardingsphere.distsql.statement.type.rdl.rule.database.DatabaseRuleDefinitionStatement;
import
org.apache.shardingsphere.distsql.statement.type.rdl.rule.global.GlobalRuleDefinitionStatement;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -49,13 +49,14 @@ public final class DistSQLUpdateExecuteEngine {
private final String databaseName;
- private final ConnectionContext connectionContext;
+ private final DistSQLConnectionContext distsqlConnectionContext;
- public DistSQLUpdateExecuteEngine(final DistSQLStatement sqlStatement,
final String currentDatabaseName, final ContextManager contextManager, final
ConnectionContext connectionContext) {
+ public DistSQLUpdateExecuteEngine(final DistSQLStatement sqlStatement,
final String currentDatabaseName,
+ final ContextManager contextManager,
final DistSQLConnectionContext distsqlConnectionContext) {
this.sqlStatement = sqlStatement;
this.contextManager = contextManager;
databaseName = DatabaseNameUtils.getDatabaseName(sqlStatement,
currentDatabaseName);
- this.connectionContext = connectionContext;
+ this.distsqlConnectionContext = distsqlConnectionContext;
}
/**
@@ -90,7 +91,7 @@ public final class DistSQLUpdateExecuteEngine {
Optional<AdvancedDistSQLUpdateExecutor> advancedExecutor =
TypedSPILoader.findService(AdvancedDistSQLUpdateExecutor.class,
sqlStatement.getClass());
DistSQLUpdateExecutor executor = advancedExecutor.isPresent() ?
advancedExecutor.get() : TypedSPILoader.getService(DistSQLUpdateExecutor.class,
sqlStatement.getClass());
ShardingSphereDatabase database = null == databaseName ? null :
contextManager.getDatabase(databaseName);
- new DistSQLExecutorAwareSetter(executor).set(contextManager, database,
null, connectionContext, sqlStatement);
+ new DistSQLExecutorAwareSetter(executor).set(contextManager, database,
distsqlConnectionContext, sqlStatement);
new DistSQLExecutorRequiredChecker(executor).check(sqlStatement,
contextManager, database);
executor.executeUpdate(sqlStatement, contextManager);
}
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLProxyBackendHandlerFactory.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLProxyBackendHandlerFactory.java
index 9d6ac67bb08..6976e5ba3d3 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLProxyBackendHandlerFactory.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLProxyBackendHandlerFactory.java
@@ -53,12 +53,12 @@ public final class DistSQLProxyBackendHandlerFactory {
return new DistSQLQueryProxyBackendHandler(sqlStatement,
queryContext, connectionSession, contextManager);
}
if (sqlStatement instanceof RDLStatement) {
- return new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession, contextManager);
+ return new DistSQLUpdateProxyBackendHandler(sqlStatement,
queryContext, connectionSession, contextManager);
}
if (sqlStatement instanceof RALStatement) {
return sqlStatement instanceof QueryableRALStatement
? new DistSQLQueryProxyBackendHandler(sqlStatement,
queryContext, connectionSession, contextManager)
- : new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession, contextManager);
+ : new DistSQLUpdateProxyBackendHandler(sqlStatement,
queryContext, connectionSession, contextManager);
}
throw new
UnsupportedSQLOperationException(sqlStatement.getClass().getName());
}
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLUpdateProxyBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLUpdateProxyBackendHandler.java
index 3d45d34f630..f643e7f2b6c 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLUpdateProxyBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLUpdateProxyBackendHandler.java
@@ -17,8 +17,10 @@
package org.apache.shardingsphere.proxy.backend.handler.distsql;
+import
org.apache.shardingsphere.distsql.handler.engine.DistSQLConnectionContext;
import
org.apache.shardingsphere.distsql.handler.engine.update.DistSQLUpdateExecuteEngine;
import org.apache.shardingsphere.distsql.statement.DistSQLStatement;
+import org.apache.shardingsphere.infra.session.query.QueryContext;
import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
import
org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
@@ -35,9 +37,12 @@ public final class DistSQLUpdateProxyBackendHandler
implements DistSQLProxyBacke
private final DistSQLUpdateExecuteEngine engine;
- public DistSQLUpdateProxyBackendHandler(final DistSQLStatement
sqlStatement, final ConnectionSession connectionSession, final ContextManager
contextManager) {
+ public DistSQLUpdateProxyBackendHandler(final DistSQLStatement
sqlStatement, final QueryContext queryContext, final ConnectionSession
connectionSession, final ContextManager contextManager) {
this.sqlStatement = sqlStatement;
- engine = new DistSQLUpdateExecuteEngine(sqlStatement,
connectionSession.getUsedDatabaseName(), contextManager,
connectionSession.getConnectionContext());
+ DistSQLConnectionContext distsqlConnectionContext = new
DistSQLConnectionContext(queryContext,
+
connectionSession.getDatabaseConnectionManager().getConnectionSize(),
connectionSession.getProtocolType(),
+ connectionSession.getDatabaseConnectionManager(),
connectionSession.getStatementManager());
+ engine = new DistSQLUpdateExecuteEngine(sqlStatement,
connectionSession.getUsedDatabaseName(), contextManager,
distsqlConnectionContext);
}
@Override
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLProxyBackendHandlerFactoryTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLProxyBackendHandlerFactoryTest.java
index cae0b4d9483..7e24f21eabc 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLProxyBackendHandlerFactoryTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLProxyBackendHandlerFactoryTest.java
@@ -114,7 +114,7 @@ class DistSQLProxyBackendHandlerFactoryTest {
void assertExecuteDataSourcesContext() throws SQLException {
RegisterStorageUnitStatement sqlStatement =
mock(RegisterStorageUnitStatement.class);
when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
- assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
+ assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement, mock(),
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
}
@Test
@@ -122,21 +122,21 @@ class DistSQLProxyBackendHandlerFactoryTest {
when(contextManager.getDatabase("foo_db").getRuleMetaData()).thenReturn(new
RuleMetaData(Collections.emptyList()));
CreateShardingTableRuleStatement sqlStatement =
mock(CreateShardingTableRuleStatement.class);
when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
- assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
+ assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement, mock(),
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
}
@Test
void assertExecuteAddResourceContext() throws SQLException {
RegisterStorageUnitStatement sqlStatement =
mock(RegisterStorageUnitStatement.class);
when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
- assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
+ assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement, mock(),
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
}
@Test
void assertExecuteAlterResourceContext() throws SQLException {
AlterStorageUnitStatement sqlStatement =
mock(AlterStorageUnitStatement.class);
when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
- assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
+ assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement, mock(),
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
}
@Test
@@ -145,7 +145,7 @@ class DistSQLProxyBackendHandlerFactoryTest {
when(contextManager.getDatabase("foo_db")).thenReturn(database);
AlterShadowRuleStatement sqlStatement =
mock(AlterShadowRuleStatement.class);
when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
- assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
+ assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement, mock(),
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
}
@Test
@@ -154,7 +154,7 @@ class DistSQLProxyBackendHandlerFactoryTest {
when(contextManager.getDatabase("foo_db")).thenReturn(database);
CreateShadowRuleStatement sqlStatement =
mock(CreateShadowRuleStatement.class);
when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
- assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
+ assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement, mock(),
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
}
@Test
@@ -163,7 +163,7 @@ class DistSQLProxyBackendHandlerFactoryTest {
when(contextManager.getDatabase("foo_db")).thenReturn(database);
DropShadowRuleStatement sqlStatement =
mock(DropShadowRuleStatement.class);
when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
- assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
+ assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement, mock(),
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
}
@Test
@@ -172,7 +172,7 @@ class DistSQLProxyBackendHandlerFactoryTest {
when(contextManager.getDatabase("foo_db")).thenReturn(database);
AlterDefaultShadowAlgorithmStatement statement = new
AlterDefaultShadowAlgorithmStatement(
new ShadowAlgorithmSegment("foo", new
AlgorithmSegment("SQL_HINT", PropertiesBuilder.build(new Property("type",
"value")))));
- assertThat(new DistSQLUpdateProxyBackendHandler(statement,
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
+ assertThat(new DistSQLUpdateProxyBackendHandler(statement, mock(),
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
}
@Test
@@ -205,33 +205,33 @@ class DistSQLProxyBackendHandlerFactoryTest {
when(contextManager.getDatabase("foo_db")).thenReturn(database);
DropShadowAlgorithmStatement sqlStatement =
mock(DropShadowAlgorithmStatement.class);
when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
- assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
+ assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement, mock(),
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
}
@Test
void assertExecuteDropResourceContext() throws SQLException {
UnregisterStorageUnitStatement sqlStatement =
mock(UnregisterStorageUnitStatement.class);
when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
- assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
+ assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement, mock(),
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
}
@Test
void assertExecuteDropReadwriteSplittingRuleContext() {
assertThrows(MissingRequiredRuleException.class,
- () -> new
DistSQLUpdateProxyBackendHandler(mock(DropReadwriteSplittingRuleStatement.class,
RETURNS_DEEP_STUBS), connectionSession, contextManager).execute());
+ () -> new
DistSQLUpdateProxyBackendHandler(mock(DropReadwriteSplittingRuleStatement.class,
RETURNS_DEEP_STUBS), mock(), connectionSession, contextManager).execute());
}
@Test
void assertExecuteCreateReadwriteSplittingRuleContext() throws
SQLException {
CreateReadwriteSplittingRuleStatement sqlStatement =
mock(CreateReadwriteSplittingRuleStatement.class);
when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
- assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
+ assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement, mock(),
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
}
@Test
void assertExecuteAlterReadwriteSplittingRuleContext() {
assertThrows(MissingRequiredRuleException.class,
- () -> new
DistSQLUpdateProxyBackendHandler(mock(AlterReadwriteSplittingRuleStatement.class,
RETURNS_DEEP_STUBS), connectionSession, contextManager).execute());
+ () -> new
DistSQLUpdateProxyBackendHandler(mock(AlterReadwriteSplittingRuleStatement.class,
RETURNS_DEEP_STUBS), mock(), connectionSession, contextManager).execute());
}
private ShardingSphereDatabase mockDatabaseWithRule() {
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLUpdateProxyBackendHandlerTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLUpdateProxyBackendHandlerTest.java
index dc5630f22e8..c95417aef29 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLUpdateProxyBackendHandlerTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLUpdateProxyBackendHandlerTest.java
@@ -45,6 +45,7 @@ import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.isA;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -59,7 +60,7 @@ class DistSQLUpdateProxyBackendHandlerTest {
@Test
void assertEmptyStorageUnit() {
when(contextManager.getDatabase("foo_db")).thenReturn(new
ShardingSphereDatabase("foo_db", databaseType, mock(), mock(),
Collections.emptyList()));
- DistSQLUpdateProxyBackendHandler backendHandler = new
DistSQLUpdateProxyBackendHandler(new RefreshTableMetaDataStatement(),
mockConnectionSession("foo_db"), contextManager);
+ DistSQLUpdateProxyBackendHandler backendHandler = new
DistSQLUpdateProxyBackendHandler(new RefreshTableMetaDataStatement(), mock(),
mockConnectionSession("foo_db"), contextManager);
assertThrows(EmptyStorageUnitException.class, backendHandler::execute);
}
@@ -69,7 +70,7 @@ class DistSQLUpdateProxyBackendHandlerTest {
when(resourceMetaData.getStorageUnits()).thenReturn(Collections.singletonMap("ds_0",
mock(StorageUnit.class)));
when(contextManager.getDatabase("foo_db")).thenReturn(new
ShardingSphereDatabase("foo_db", databaseType, resourceMetaData, mock(),
Collections.emptyList()));
DistSQLUpdateProxyBackendHandler backendHandler = new
DistSQLUpdateProxyBackendHandler(
- new RefreshTableMetaDataStatement("t_order", "ds_1", null),
mockConnectionSession("foo_db"), contextManager);
+ new RefreshTableMetaDataStatement("t_order", "ds_1", null),
mock(), mockConnectionSession("foo_db"), contextManager);
assertThrows(MissingRequiredStorageUnitsException.class,
backendHandler::execute);
}
@@ -79,7 +80,7 @@ class DistSQLUpdateProxyBackendHandlerTest {
when(resourceMetaData.getStorageUnits()).thenReturn(Collections.singletonMap("ds_0",
mock(StorageUnit.class)));
when(contextManager.getDatabase("foo_db")).thenReturn(new
ShardingSphereDatabase("foo_db", databaseType, resourceMetaData, mock(),
Collections.emptyList()));
DistSQLUpdateProxyBackendHandler backendHandler = new
DistSQLUpdateProxyBackendHandler(
- new RefreshTableMetaDataStatement("t_order", "ds_0",
"bar_db"), mockConnectionSession("foo_db"), contextManager);
+ new RefreshTableMetaDataStatement("t_order", "ds_0",
"bar_db"), mock(), mockConnectionSession("foo_db"), contextManager);
assertThrows(SchemaNotFoundException.class, backendHandler::execute);
}
@@ -94,7 +95,7 @@ class DistSQLUpdateProxyBackendHandlerTest {
when(database.getResourceMetaData()).thenReturn(resourceMetaData);
when(contextManager.getDatabase("foo_db")).thenReturn(database);
DistSQLUpdateProxyBackendHandler backendHandler = new
DistSQLUpdateProxyBackendHandler(
- new RefreshTableMetaDataStatement("t_order", "ds_0",
"foo_db"), mockConnectionSession("foo_db"), contextManager);
+ new RefreshTableMetaDataStatement("t_order", "ds_0",
"foo_db"), mock(), mockConnectionSession("foo_db"), contextManager);
assertThrows(TableNotFoundException.class, backendHandler::execute);
}
@@ -107,13 +108,14 @@ class DistSQLUpdateProxyBackendHandlerTest {
when(database.getProtocolType()).thenReturn(databaseType);
when(database.getResourceMetaData()).thenReturn(resourceMetaData);
when(contextManager.getDatabase("foo_db")).thenReturn(database);
- ResponseHeader actual = new DistSQLUpdateProxyBackendHandler(new
RefreshTableMetaDataStatement(), mockConnectionSession("foo_db"),
contextManager).execute();
+ ResponseHeader actual = new DistSQLUpdateProxyBackendHandler(new
RefreshTableMetaDataStatement(), mock(), mockConnectionSession("foo_db"),
contextManager).execute();
assertThat(actual, isA(UpdateResponseHeader.class));
}
private ConnectionSession mockConnectionSession(final String databaseName)
{
- ConnectionSession result = mock(ConnectionSession.class);
+ ConnectionSession result = mock(ConnectionSession.class,
RETURNS_DEEP_STUBS);
when(result.getUsedDatabaseName()).thenReturn(databaseName);
+
when(result.getDatabaseConnectionManager().getConnectionSize()).thenReturn(1);
return result;
}
}
diff --git
a/test/it/distsql/src/main/java/org/apache/shardingsphere/test/it/distsql/handler/engine/update/DistSQLGlobalRuleDefinitionExecutorAssert.java
b/test/it/distsql/src/main/java/org/apache/shardingsphere/test/it/distsql/handler/engine/update/DistSQLGlobalRuleDefinitionExecutorAssert.java
index 00548ba1dca..4b80aeb6132 100644
---
a/test/it/distsql/src/main/java/org/apache/shardingsphere/test/it/distsql/handler/engine/update/DistSQLGlobalRuleDefinitionExecutorAssert.java
+++
b/test/it/distsql/src/main/java/org/apache/shardingsphere/test/it/distsql/handler/engine/update/DistSQLGlobalRuleDefinitionExecutorAssert.java
@@ -18,13 +18,13 @@
package org.apache.shardingsphere.test.it.distsql.handler.engine.update;
import lombok.RequiredArgsConstructor;
+import
org.apache.shardingsphere.distsql.handler.engine.DistSQLConnectionContext;
import
org.apache.shardingsphere.distsql.handler.engine.update.DistSQLUpdateExecuteEngine;
import org.apache.shardingsphere.distsql.statement.DistSQLStatement;
import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
import
org.apache.shardingsphere.infra.config.rule.scope.GlobalRuleConfiguration;
import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import org.apache.shardingsphere.infra.rule.scope.GlobalRule;
-import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
import org.apache.shardingsphere.mode.manager.ContextManager;
import
org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService;
@@ -58,7 +58,7 @@ public final class DistSQLGlobalRuleDefinitionExecutorAssert {
public void assertExecuteUpdate(final GlobalRuleConfiguration ruleConfig,
final DistSQLStatement sqlStatement, final
RuleConfiguration matchedRuleConfig, final Class<? extends Exception>
expectedException) throws SQLException {
ContextManager contextManager = mockContextManager(ruleConfig);
- DistSQLUpdateExecuteEngine engine = new
DistSQLUpdateExecuteEngine(sqlStatement, null, contextManager,
mock(ConnectionContext.class));
+ DistSQLUpdateExecuteEngine engine = new
DistSQLUpdateExecuteEngine(sqlStatement, null, contextManager,
mock(DistSQLConnectionContext.class));
if (null != expectedException) {
assertThrows(expectedException, engine::executeUpdate);
return;