This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 2b28b4caaec Refactor ExecutionGroupContext none-final fields and add
new ExecutionGroupReportContext (#23783)
2b28b4caaec is described below
commit 2b28b4caaecf53f6c056b51f7e7f118f96b217eb
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Sun Jan 29 21:39:10 2023 +0800
Refactor ExecutionGroupContext none-final fields and add new
ExecutionGroupReportContext (#23783)
* Refactor ExecutionGroupContext none-final fields and add new
ExecutionGroupReportContext
* fix unit test
* fix checkstyle
---
.../kernel/model/ExecutionGroupContext.java | 9 +-----
...ntext.java => ExecutionGroupReportContext.java} | 33 +++++++++++++---------
.../sql/execute/engine/raw/RawExecutor.java | 2 +-
.../prepare/AbstractExecutionPrepareEngine.java | 10 ++++---
.../sql/prepare/ExecutionPrepareEngine.java | 4 ++-
.../executor/sql/process/ExecuteProcessEngine.java | 17 +++--------
.../sql/process/ExecuteProcessReporter.java | 2 +-
.../sql/process/model/ExecuteProcessContext.java | 6 ++--
.../infra/executor/kernel/ExecutorEngineTest.java | 5 ++--
.../sql/execute/engine/jdbc/JDBCExecutorTest.java | 14 +++++----
.../sql/process/ExecuteProcessReporterTest.java | 7 +++--
.../driver/executor/DriverJDBCExecutor.java | 6 ++--
.../batch/BatchPreparedStatementExecutor.java | 5 ++--
.../statement/ShardingSpherePreparedStatement.java | 10 ++++---
.../core/statement/ShardingSphereStatement.java | 8 ++++--
.../batch/BatchPreparedStatementExecutorTest.java | 4 ++-
.../executor/FilterableTableScanExecutor.java | 6 ++--
.../executor/TranslatableTableScanExecutor.java | 11 +++++---
.../backend/communication/ProxySQLExecutor.java | 13 ++++-----
.../jdbc/executor/ProxyJDBCExecutor.java | 2 +-
.../text/query/MySQLMultiStatementsHandler.java | 4 ++-
.../PostgreSQLBatchedStatementsExecutor.java | 4 ++-
22 files changed, 99 insertions(+), 83 deletions(-)
diff --git
a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/kernel/model/ExecutionGroupContext.java
b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/kernel/model/ExecutionGroupContext.java
index da7e93bcd4c..541e684c76b 100644
---
a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/kernel/model/ExecutionGroupContext.java
+++
b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/kernel/model/ExecutionGroupContext.java
@@ -19,8 +19,6 @@ package org.apache.shardingsphere.infra.executor.kernel.model;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
-import lombok.Setter;
-import org.apache.shardingsphere.infra.metadata.user.Grantee;
import java.util.Collection;
@@ -31,14 +29,9 @@ import java.util.Collection;
*/
@RequiredArgsConstructor
@Getter
-@Setter
public final class ExecutionGroupContext<T> {
private final Collection<ExecutionGroup<T>> inputGroups;
- private volatile String executionID;
-
- private volatile String databaseName;
-
- private volatile Grantee grantee;
+ private final ExecutionGroupReportContext reportContext;
}
diff --git
a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/kernel/model/ExecutionGroupContext.java
b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/kernel/model/ExecutionGroupReportContext.java
similarity index 52%
copy from
infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/kernel/model/ExecutionGroupContext.java
copy to
infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/kernel/model/ExecutionGroupReportContext.java
index da7e93bcd4c..94867ff37f4 100644
---
a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/kernel/model/ExecutionGroupContext.java
+++
b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/kernel/model/ExecutionGroupReportContext.java
@@ -18,27 +18,34 @@
package org.apache.shardingsphere.infra.executor.kernel.model;
import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import lombok.Setter;
import org.apache.shardingsphere.infra.metadata.user.Grantee;
-import java.util.Collection;
+import java.util.UUID;
+import java.util.concurrent.ThreadLocalRandom;
/**
- * Execution group context.
- *
- * @param <T> type of execution input value
+ * Execution group report context.
*/
-@RequiredArgsConstructor
@Getter
-@Setter
-public final class ExecutionGroupContext<T> {
+public final class ExecutionGroupReportContext {
+
+ private final String databaseName;
+
+ private final Grantee grantee;
- private final Collection<ExecutionGroup<T>> inputGroups;
+ private final String executionID;
- private volatile String executionID;
+ public ExecutionGroupReportContext(final String databaseName) {
+ this(databaseName, new Grantee("", ""));
+ }
- private volatile String databaseName;
+ public ExecutionGroupReportContext(final String databaseName, final
Grantee grantee) {
+ this(databaseName, grantee, new
UUID(ThreadLocalRandom.current().nextLong(),
ThreadLocalRandom.current().nextLong()).toString().replace("-", ""));
+ }
- private volatile Grantee grantee;
+ public ExecutionGroupReportContext(final String databaseName, final
Grantee grantee, final String executionID) {
+ this.databaseName = databaseName;
+ this.grantee = grantee;
+ this.executionID = executionID;
+ }
}
diff --git
a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/engine/raw/RawExecutor.java
b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/engine/raw/RawExecutor.java
index e79e9ad70c4..a206757a445 100644
---
a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/engine/raw/RawExecutor.java
+++
b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/engine/raw/RawExecutor.java
@@ -62,7 +62,7 @@ public final class RawExecutor {
executeProcessEngine.initializeExecution(executionGroupContext,
queryContext);
// TODO Load query header for first query
List<ExecuteResult> results = execute(executionGroupContext,
(RawSQLExecutorCallback) null, callback);
-
executeProcessEngine.finishExecution(executionGroupContext.getExecutionID(),
eventBusContext);
+
executeProcessEngine.finishExecution(executionGroupContext.getReportContext().getExecutionID(),
eventBusContext);
return results.isEmpty() || Objects.isNull(results.get(0)) ?
Collections.singletonList(new UpdateResult(0, 0L)) : results;
} finally {
executeProcessEngine.cleanExecution();
diff --git
a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/AbstractExecutionPrepareEngine.java
b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/AbstractExecutionPrepareEngine.java
index 4e621ff4410..d9bd2c13ef9 100644
---
a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/AbstractExecutionPrepareEngine.java
+++
b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/AbstractExecutionPrepareEngine.java
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.infra.executor.sql.prepare;
import com.google.common.collect.Lists;
import org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroup;
import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupContext;
+import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupReportContext;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
import org.apache.shardingsphere.infra.executor.sql.context.SQLUnit;
import
org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
@@ -53,7 +54,8 @@ public abstract class AbstractExecutionPrepareEngine<T>
implements ExecutionPrep
}
@Override
- public final ExecutionGroupContext<T> prepare(final RouteContext
routeContext, final Collection<ExecutionUnit> executionUnits) throws
SQLException {
+ public final ExecutionGroupContext<T> prepare(final RouteContext
routeContext, final Collection<ExecutionUnit> executionUnits,
+ final
ExecutionGroupReportContext reportContext) throws SQLException {
Collection<ExecutionGroup<T>> result = new LinkedList<>();
for (Entry<String, List<SQLUnit>> entry :
aggregateSQLUnitGroups(executionUnits).entrySet()) {
String dataSourceName = entry.getKey();
@@ -62,7 +64,7 @@ public abstract class AbstractExecutionPrepareEngine<T>
implements ExecutionPrep
ConnectionMode connectionMode = maxConnectionsSizePerQuery <
sqlUnits.size() ? ConnectionMode.CONNECTION_STRICTLY :
ConnectionMode.MEMORY_STRICTLY;
result.addAll(group(dataSourceName, sqlUnitGroups,
connectionMode));
}
- return decorate(routeContext, result);
+ return decorate(routeContext, result, reportContext);
}
private List<List<SQLUnit>> group(final List<SQLUnit> sqlUnits) {
@@ -84,11 +86,11 @@ public abstract class AbstractExecutionPrepareEngine<T>
implements ExecutionPrep
}
@SuppressWarnings({"unchecked", "rawtypes"})
- private ExecutionGroupContext<T> decorate(final RouteContext routeContext,
final Collection<ExecutionGroup<T>> executionGroups) {
+ private ExecutionGroupContext<T> decorate(final RouteContext routeContext,
final Collection<ExecutionGroup<T>> executionGroups, final
ExecutionGroupReportContext reportContext) {
Collection<ExecutionGroup<T>> result = executionGroups;
for (Entry<ShardingSphereRule, ExecutionPrepareDecorator> each :
decorators.entrySet()) {
result = each.getValue().decorate(routeContext, each.getKey(),
result);
}
- return new ExecutionGroupContext(result);
+ return new ExecutionGroupContext(result, reportContext);
}
}
diff --git
a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/ExecutionPrepareEngine.java
b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/ExecutionPrepareEngine.java
index 45c5678f165..7a876f0b1b6 100644
---
a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/ExecutionPrepareEngine.java
+++
b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/ExecutionPrepareEngine.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.infra.executor.sql.prepare;
import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupContext;
+import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupReportContext;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
import org.apache.shardingsphere.infra.route.context.RouteContext;
@@ -36,8 +37,9 @@ public interface ExecutionPrepareEngine<T> {
*
* @param routeContext route context
* @param executionUnits execution units
+ * @param reportContext report context
* @return execution group context
* @throws SQLException SQL exception
*/
- ExecutionGroupContext<T> prepare(RouteContext routeContext,
Collection<ExecutionUnit> executionUnits) throws SQLException;
+ ExecutionGroupContext<T> prepare(RouteContext routeContext,
Collection<ExecutionUnit> executionUnits, ExecutionGroupReportContext
reportContext) throws SQLException;
}
diff --git
a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/process/ExecuteProcessEngine.java
b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/process/ExecuteProcessEngine.java
index 86b618de0b3..fefd721dcec 100644
---
a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/process/ExecuteProcessEngine.java
+++
b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/process/ExecuteProcessEngine.java
@@ -17,9 +17,9 @@
package org.apache.shardingsphere.infra.executor.sql.process;
-import com.google.common.base.Strings;
import org.apache.shardingsphere.infra.binder.QueryContext;
import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupContext;
+import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupReportContext;
import org.apache.shardingsphere.infra.executor.kernel.model.ExecutorDataMap;
import
org.apache.shardingsphere.infra.executor.sql.execute.engine.SQLExecutionUnit;
import
org.apache.shardingsphere.infra.executor.sql.process.model.ExecuteProcessConstants;
@@ -31,8 +31,6 @@ import
org.apache.shardingsphere.sql.parser.sql.common.statement.dml.DMLStatemen
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.MySQLStatement;
import java.util.Collections;
-import java.util.UUID;
-import java.util.concurrent.ThreadLocalRandom;
/**
* Execute process engine.
@@ -51,15 +49,11 @@ public final class ExecuteProcessEngine {
public String initializeConnection(final Grantee grantee, final String
databaseName) {
ExecutionGroupContext<SQLExecutionUnit> executionGroupContext =
createExecutionGroupContext(grantee, databaseName);
reporter.report(executionGroupContext);
- return executionGroupContext.getExecutionID();
+ return executionGroupContext.getReportContext().getExecutionID();
}
private ExecutionGroupContext<SQLExecutionUnit>
createExecutionGroupContext(final Grantee grantee, final String databaseName) {
- ExecutionGroupContext<SQLExecutionUnit> result = new
ExecutionGroupContext<>(Collections.emptyList());
- result.setExecutionID(new UUID(ThreadLocalRandom.current().nextLong(),
ThreadLocalRandom.current().nextLong()).toString().replace("-", ""));
- result.setGrantee(grantee);
- result.setDatabaseName(databaseName);
- return result;
+ return new ExecutionGroupContext<>(Collections.emptyList(), new
ExecutionGroupReportContext(databaseName, grantee));
}
/**
@@ -78,11 +72,8 @@ public final class ExecuteProcessEngine {
* @param queryContext query context
*/
public void initializeExecution(final ExecutionGroupContext<? extends
SQLExecutionUnit> executionGroupContext, final QueryContext queryContext) {
- if (Strings.isNullOrEmpty(executionGroupContext.getExecutionID())) {
- executionGroupContext.setExecutionID(new
UUID(ThreadLocalRandom.current().nextLong(),
ThreadLocalRandom.current().nextLong()).toString().replace("-", ""));
- }
if
(isMySQLDDLOrDMLStatement(queryContext.getSqlStatementContext().getSqlStatement()))
{
-
ExecutorDataMap.getValue().put(ExecuteProcessConstants.EXECUTE_ID.name(),
executionGroupContext.getExecutionID());
+
ExecutorDataMap.getValue().put(ExecuteProcessConstants.EXECUTE_ID.name(),
executionGroupContext.getReportContext().getExecutionID());
reporter.report(queryContext, executionGroupContext,
ExecuteProcessConstants.EXECUTE_STATUS_START);
}
}
diff --git
a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/process/ExecuteProcessReporter.java
b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/process/ExecuteProcessReporter.java
index c3c6b86b629..2341c206e30 100644
---
a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/process/ExecuteProcessReporter.java
+++
b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/process/ExecuteProcessReporter.java
@@ -51,7 +51,7 @@ public final class ExecuteProcessReporter {
*/
public void report(final QueryContext queryContext, final
ExecutionGroupContext<? extends SQLExecutionUnit> executionGroupContext,
final ExecuteProcessConstants constants) {
- ExecuteProcessContext originExecuteProcessContext =
ShowProcessListManager.getInstance().getProcessContext(executionGroupContext.getExecutionID());
+ ExecuteProcessContext originExecuteProcessContext =
ShowProcessListManager.getInstance().getProcessContext(executionGroupContext.getReportContext().getExecutionID());
boolean isProxyContext = null != originExecuteProcessContext &&
originExecuteProcessContext.isProxyContext();
ExecuteProcessContext executeProcessContext = new
ExecuteProcessContext(queryContext.getSql(), executionGroupContext, constants,
isProxyContext);
ShowProcessListManager.getInstance().putProcessContext(executeProcessContext.getExecutionID(),
executeProcessContext);
diff --git
a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/process/model/ExecuteProcessContext.java
b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/process/model/ExecuteProcessContext.java
index f951d137508..457b13ea3f6 100644
---
a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/process/model/ExecuteProcessContext.java
+++
b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/process/model/ExecuteProcessContext.java
@@ -58,10 +58,10 @@ public final class ExecuteProcessContext {
public ExecuteProcessContext(final String sql, final
ExecutionGroupContext<? extends SQLExecutionUnit> executionGroupContext, final
ExecuteProcessConstants constants,
final boolean isProxyContext) {
- this.executionID = executionGroupContext.getExecutionID();
+ this.executionID =
executionGroupContext.getReportContext().getExecutionID();
this.sql = sql;
- this.databaseName = executionGroupContext.getDatabaseName();
- Grantee grantee = executionGroupContext.getGrantee();
+ this.databaseName =
executionGroupContext.getReportContext().getDatabaseName();
+ Grantee grantee =
executionGroupContext.getReportContext().getGrantee();
this.username = null != grantee ? grantee.getUsername() : null;
this.hostname = null != grantee ? grantee.getHostname() : null;
executeProcessConstants = constants;
diff --git
a/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/kernel/ExecutorEngineTest.java
b/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/kernel/ExecutorEngineTest.java
index c52b09a3deb..92aee212d5f 100644
---
a/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/kernel/ExecutorEngineTest.java
+++
b/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/kernel/ExecutorEngineTest.java
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.infra.executor.kernel;
import
org.apache.shardingsphere.infra.executor.kernel.fixture.ExecutorCallbackFixture;
import org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroup;
import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupContext;
+import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupReportContext;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -64,7 +65,7 @@ public final class ExecutorEngineTest {
for (int i = 0; i < groupSize; i++) {
result.add(new ExecutionGroup<>(createMockedInputs(unitSize)));
}
- return new ExecutionGroupContext(result);
+ return new ExecutionGroupContext<>(result,
mock(ExecutionGroupReportContext.class));
}
private List<Object> createMockedInputs(final int size) {
@@ -99,7 +100,7 @@ public final class ExecutorEngineTest {
@Test
public void assertExecutionGroupIsEmpty() throws SQLException {
CountDownLatch latch = new CountDownLatch(1);
- List<String> actual = executorEngine.execute(new
ExecutionGroupContext<>(new LinkedList<>()), new
ExecutorCallbackFixture(latch));
+ List<String> actual = executorEngine.execute(new
ExecutionGroupContext<>(new LinkedList<>(),
mock(ExecutionGroupReportContext.class)), new ExecutorCallbackFixture(latch));
latch.countDown();
assertTrue(actual.isEmpty());
}
diff --git
a/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/engine/jdbc/JDBCExecutorTest.java
b/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/engine/jdbc/JDBCExecutorTest.java
index d5d428a2eb2..25b1b23cc61 100644
---
a/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/engine/jdbc/JDBCExecutorTest.java
+++
b/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/engine/jdbc/JDBCExecutorTest.java
@@ -21,6 +21,7 @@ import
org.apache.shardingsphere.infra.context.ConnectionContext;
import org.apache.shardingsphere.infra.executor.kernel.ExecutorEngine;
import org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroup;
import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupContext;
+import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupReportContext;
import
org.apache.shardingsphere.infra.executor.sql.execute.engine.SQLExecutorExceptionHandler;
import
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutionUnit;
import
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutor;
@@ -44,7 +45,7 @@ public final class JDBCExecutorTest {
public void assertExecute() throws SQLException {
ExecutorEngine executorEngine = mock(ExecutorEngine.class);
ExecutionGroup<JDBCExecutionUnit> group = new
ExecutionGroup<>(Collections.singletonList(mock(JDBCExecutionUnit.class)));
- ExecutionGroupContext context = new
ExecutionGroupContext(Collections.singletonList(group));
+ ExecutionGroupContext context = new
ExecutionGroupContext(Collections.singletonList(group),
mock(ExecutionGroupReportContext.class));
when(executorEngine.execute(any(), any(), any(),
anyBoolean())).thenReturn(Collections.singletonList("test"));
JDBCExecutor jdbcExecutor = new JDBCExecutor(executorEngine, new
ConnectionContext());
List<?> actual1 = jdbcExecutor.execute(context, null);
@@ -57,9 +58,11 @@ public final class JDBCExecutorTest {
public void assertExecuteSQLException() {
try {
ExecutorEngine executorEngine = mock(ExecutorEngine.class);
- when(executorEngine.execute(new
ExecutionGroupContext<>(anyCollection()), any(), any(),
anyBoolean())).thenThrow(new SQLException("TestSQLException"));
+ ExecutionGroupReportContext reportContext =
mock(ExecutionGroupReportContext.class);
+ when(executorEngine.execute(new
ExecutionGroupContext<>(anyCollection(), reportContext), any(), any(),
anyBoolean()))
+ .thenThrow(new SQLException("TestSQLException"));
JDBCExecutor jdbcExecutor = new JDBCExecutor(executorEngine, new
ConnectionContext());
- jdbcExecutor.execute(new
ExecutionGroupContext<>(Collections.emptyList()), null);
+ jdbcExecutor.execute(new
ExecutionGroupContext<>(Collections.emptyList(), reportContext), null);
} catch (final SQLException ex) {
assertThat(ex.getMessage(), is("TestSQLException"));
}
@@ -68,10 +71,11 @@ public final class JDBCExecutorTest {
@Test
public void assertExecuteNotThrownSQLException() throws SQLException {
ExecutorEngine executorEngine = mock(ExecutorEngine.class);
- when(executorEngine.execute(new
ExecutionGroupContext<>(anyCollection()), any(), any(),
anyBoolean())).thenThrow(new SQLException("TestSQLException"));
+ ExecutionGroupReportContext reportContext =
mock(ExecutionGroupReportContext.class);
+ when(executorEngine.execute(new
ExecutionGroupContext<>(anyCollection(), reportContext), any(), any(),
anyBoolean())).thenThrow(new SQLException("TestSQLException"));
JDBCExecutor jdbcExecutor = new JDBCExecutor(executorEngine, new
ConnectionContext());
SQLExecutorExceptionHandler.setExceptionThrown(false);
- List<?> actual = jdbcExecutor.execute(new
ExecutionGroupContext<>(Collections.emptyList()), null);
+ List<?> actual = jdbcExecutor.execute(new
ExecutionGroupContext<>(Collections.emptyList(), reportContext), null);
assertThat(actual, is(Collections.emptyList()));
}
}
diff --git
a/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/process/ExecuteProcessReporterTest.java
b/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/process/ExecuteProcessReporterTest.java
index 132bb71fa4b..8b9c9740c4a 100644
---
a/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/process/ExecuteProcessReporterTest.java
+++
b/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/process/ExecuteProcessReporterTest.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.infra.executor.sql.process;
import org.apache.shardingsphere.infra.binder.QueryContext;
import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupContext;
+import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupReportContext;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
import
org.apache.shardingsphere.infra.executor.sql.execute.engine.SQLExecutionUnit;
import
org.apache.shardingsphere.infra.executor.sql.process.model.ExecuteProcessConstants;
@@ -59,13 +60,15 @@ public class ExecuteProcessReporterTest {
QueryContext queryContext = new QueryContext(null, null, null);
ExecutionGroupContext<? extends SQLExecutionUnit>
executionGroupContext = mockExecutionGroupContext();
reporter.report(queryContext, executionGroupContext,
ExecuteProcessConstants.EXECUTE_ID);
- verify(showProcessListManager,
times(1)).putProcessContext(eq(executionGroupContext.getExecutionID()), any());
+ verify(showProcessListManager,
times(1)).putProcessContext(eq(executionGroupContext.getReportContext().getExecutionID()),
any());
}
@SuppressWarnings("unchecked")
private ExecutionGroupContext<? extends SQLExecutionUnit>
mockExecutionGroupContext() {
ExecutionGroupContext<? extends SQLExecutionUnit> result =
mock(ExecutionGroupContext.class);
- when(result.getExecutionID()).thenReturn(UUID.randomUUID().toString());
+ ExecutionGroupReportContext reportContext =
mock(ExecutionGroupReportContext.class);
+
when(reportContext.getExecutionID()).thenReturn(UUID.randomUUID().toString());
+ when(result.getReportContext()).thenReturn(reportContext);
return result;
}
diff --git
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/executor/DriverJDBCExecutor.java
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/executor/DriverJDBCExecutor.java
index 8104d035c1b..ef227efa7e9 100644
---
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/executor/DriverJDBCExecutor.java
+++
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/executor/DriverJDBCExecutor.java
@@ -77,7 +77,7 @@ public final class DriverJDBCExecutor {
try {
executeProcessEngine.initializeExecution(executionGroupContext,
queryContext);
List<QueryResult> result =
jdbcExecutor.execute(executionGroupContext, callback);
-
executeProcessEngine.finishExecution(executionGroupContext.getExecutionID(),
eventBusContext);
+
executeProcessEngine.finishExecution(executionGroupContext.getReportContext().getExecutionID(),
eventBusContext);
return result;
} finally {
executeProcessEngine.cleanExecution();
@@ -102,7 +102,7 @@ public final class DriverJDBCExecutor {
SQLStatementContext<?> sqlStatementContext =
queryContext.getSqlStatementContext();
List<Integer> results = doExecute(executionGroupContext,
sqlStatementContext, routeUnits, callback);
int result =
isNeedAccumulate(metaDataContexts.getMetaData().getDatabase(databaseName).getRuleMetaData().getRules(),
sqlStatementContext) ? accumulate(results) : results.get(0);
-
executeProcessEngine.finishExecution(executionGroupContext.getExecutionID(),
eventBusContext);
+
executeProcessEngine.finishExecution(executionGroupContext.getReportContext().getExecutionID(),
eventBusContext);
return result;
} finally {
executeProcessEngine.cleanExecution();
@@ -143,7 +143,7 @@ public final class DriverJDBCExecutor {
executeProcessEngine.initializeExecution(executionGroupContext,
queryContext);
List<Boolean> results = doExecute(executionGroupContext,
queryContext.getSqlStatementContext(), routeUnits, callback);
boolean result = null != results && !results.isEmpty() && null !=
results.get(0) && results.get(0);
-
executeProcessEngine.finishExecution(executionGroupContext.getExecutionID(),
eventBusContext);
+
executeProcessEngine.finishExecution(executionGroupContext.getReportContext().getExecutionID(),
eventBusContext);
return result;
} finally {
executeProcessEngine.cleanExecution();
diff --git
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutor.java
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutor.java
index 19cb5608f37..67ca95c4d50 100644
---
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutor.java
+++
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutor.java
@@ -20,9 +20,9 @@ package org.apache.shardingsphere.driver.executor.batch;
import lombok.Getter;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
-import org.apache.shardingsphere.infra.util.eventbus.EventBusContext;
import org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroup;
import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupContext;
+import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupReportContext;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
import
org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
import
org.apache.shardingsphere.infra.executor.sql.execute.engine.SQLExecutorExceptionHandler;
@@ -31,6 +31,7 @@ import
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.J
import
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutorCallback;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import
org.apache.shardingsphere.infra.rule.identifier.type.DataNodeContainedRule;
+import org.apache.shardingsphere.infra.util.eventbus.EventBusContext;
import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
@@ -70,7 +71,7 @@ public final class BatchPreparedStatementExecutor {
this.metaDataContexts = metaDataContexts;
this.jdbcExecutor = jdbcExecutor;
this.eventBusContext = eventBusContext;
- executionGroupContext = new ExecutionGroupContext<>(new
LinkedList<>());
+ executionGroupContext = new ExecutionGroupContext<>(new
LinkedList<>(), new ExecutionGroupReportContext(databaseName));
batchExecutionUnits = new LinkedList<>();
}
diff --git
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
index 727a11fb5d3..685d290d794 100644
---
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
+++
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
@@ -50,6 +50,7 @@ import
org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
import org.apache.shardingsphere.infra.executor.check.SQLCheckEngine;
import org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroup;
import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupContext;
+import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupReportContext;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionContext;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
import org.apache.shardingsphere.infra.executor.sql.context.SQLUnit;
@@ -265,7 +266,8 @@ public final class ShardingSpherePreparedStatement extends
AbstractPreparedState
private JDBCExecutionUnit createTrafficExecutionUnit(final String
trafficInstanceId, final QueryContext queryContext) throws SQLException {
DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection>
prepareEngine = createDriverExecutionPrepareEngine();
ExecutionUnit executionUnit = new ExecutionUnit(trafficInstanceId, new
SQLUnit(queryContext.getSql(), queryContext.getParameters()));
- ExecutionGroupContext<JDBCExecutionUnit> context =
prepareEngine.prepare(new RouteContext(),
Collections.singletonList(executionUnit));
+ ExecutionGroupContext<JDBCExecutionUnit> context =
+ prepareEngine.prepare(new RouteContext(),
Collections.singletonList(executionUnit), new
ExecutionGroupReportContext(connection.getDatabaseName()));
if (context.getInputGroups().isEmpty() ||
context.getInputGroups().iterator().next().getInputs().isEmpty()) {
throw new EmptyTrafficExecutionUnitException();
}
@@ -436,7 +438,7 @@ public final class ShardingSpherePreparedStatement extends
AbstractPreparedState
private ExecutionGroupContext<RawSQLExecutionUnit>
createRawExecutionGroupContext() throws SQLException {
int maxConnectionsSizePerQuery =
metaDataContexts.getMetaData().getProps().<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY);
return new RawExecutionPrepareEngine(maxConnectionsSizePerQuery,
metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getRuleMetaData().getRules())
- .prepare(executionContext.getRouteContext(),
executionContext.getExecutionUnits());
+ .prepare(executionContext.getRouteContext(),
executionContext.getExecutionUnits(), new
ExecutionGroupReportContext(connection.getDatabaseName()));
}
private boolean isNeedImplicitCommitTransaction(final ExecutionContext
executionContext) {
@@ -504,7 +506,7 @@ public final class ShardingSpherePreparedStatement extends
AbstractPreparedState
private ExecutionGroupContext<JDBCExecutionUnit>
createExecutionGroupContext() throws SQLException {
DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection>
prepareEngine = createDriverExecutionPrepareEngine();
- return prepareEngine.prepare(executionContext.getRouteContext(),
executionContext.getExecutionUnits());
+ return prepareEngine.prepare(executionContext.getRouteContext(),
executionContext.getExecutionUnits(), new
ExecutionGroupReportContext(connection.getDatabaseName()));
}
@Override
@@ -674,7 +676,7 @@ public final class ShardingSpherePreparedStatement extends
AbstractPreparedState
ExecutionUnit executionUnit = each.getExecutionUnit();
executionUnits.add(executionUnit);
}
-
batchPreparedStatementExecutor.init(prepareEngine.prepare(executionContext.getRouteContext(),
executionUnits));
+
batchPreparedStatementExecutor.init(prepareEngine.prepare(executionContext.getRouteContext(),
executionUnits, new
ExecutionGroupReportContext(connection.getDatabaseName())));
setBatchParametersForStatements();
}
diff --git
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
index 7010d4119c9..5fd0efb30bb 100644
---
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
+++
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
@@ -49,6 +49,7 @@ import
org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
import org.apache.shardingsphere.infra.executor.check.SQLCheckEngine;
import org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroup;
import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupContext;
+import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupReportContext;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionContext;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
import org.apache.shardingsphere.infra.executor.sql.context.SQLUnit;
@@ -499,7 +500,8 @@ public final class ShardingSphereStatement extends
AbstractStatementAdapter {
private JDBCExecutionUnit createTrafficExecutionUnit(final String
trafficInstanceId, final QueryContext queryContext) throws SQLException {
DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection>
prepareEngine = createDriverExecutionPrepareEngine();
ExecutionUnit executionUnit = new ExecutionUnit(trafficInstanceId, new
SQLUnit(queryContext.getSql(), queryContext.getParameters()));
- ExecutionGroupContext<JDBCExecutionUnit> context =
prepareEngine.prepare(new RouteContext(),
Collections.singletonList(executionUnit));
+ ExecutionGroupContext<JDBCExecutionUnit> context =
+ prepareEngine.prepare(new RouteContext(),
Collections.singletonList(executionUnit), new
ExecutionGroupReportContext(connection.getDatabaseName()));
return context.getInputGroups().stream().flatMap(each ->
each.getInputs().stream()).findFirst().orElseThrow(EmptyTrafficExecutionUnitException::new);
}
@@ -530,13 +532,13 @@ public final class ShardingSphereStatement extends
AbstractStatementAdapter {
private ExecutionGroupContext<JDBCExecutionUnit>
createExecutionGroupContext() throws SQLException {
DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection>
prepareEngine = createDriverExecutionPrepareEngine();
- return prepareEngine.prepare(executionContext.getRouteContext(),
executionContext.getExecutionUnits());
+ return prepareEngine.prepare(executionContext.getRouteContext(),
executionContext.getExecutionUnits(), new
ExecutionGroupReportContext(connection.getDatabaseName()));
}
private ExecutionGroupContext<RawSQLExecutionUnit>
createRawExecutionContext() throws SQLException {
int maxConnectionsSizePerQuery =
metaDataContexts.getMetaData().getProps().<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY);
return new RawExecutionPrepareEngine(maxConnectionsSizePerQuery,
metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getRuleMetaData().getRules())
- .prepare(executionContext.getRouteContext(),
executionContext.getExecutionUnits());
+ .prepare(executionContext.getRouteContext(),
executionContext.getExecutionUnits(), new
ExecutionGroupReportContext(connection.getDatabaseName()));
}
private boolean isNeedImplicitCommitTransaction(final ExecutionContext
executionContext) {
diff --git
a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutorTest.java
b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutorTest.java
index dcd6695c9f5..91a69553073 100644
---
a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutorTest.java
+++
b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutorTest.java
@@ -24,6 +24,7 @@ import
org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.database.DefaultDatabase;
import org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroup;
import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupContext;
+import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupReportContext;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
import org.apache.shardingsphere.infra.executor.sql.context.SQLUnit;
import
org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
@@ -147,7 +148,8 @@ public final class BatchPreparedStatementExecutorTest
extends AbstractBaseExecut
@SneakyThrows(ReflectiveOperationException.class)
private void setFields(final Collection<ExecutionGroup<JDBCExecutionUnit>>
executionGroups, final Collection<BatchExecutionUnit> batchExecutionUnits) {
-
Plugins.getMemberAccessor().set(BatchPreparedStatementExecutor.class.getDeclaredField("executionGroupContext"),
actual, new ExecutionGroupContext<>(executionGroups));
+
Plugins.getMemberAccessor().set(BatchPreparedStatementExecutor.class.getDeclaredField("executionGroupContext"),
actual, new ExecutionGroupContext<>(executionGroups,
+ new ExecutionGroupReportContext("logic_db")));
Plugins.getMemberAccessor().set(BatchPreparedStatementExecutor.class.getDeclaredField("batchExecutionUnits"),
actual, batchExecutionUnits);
Plugins.getMemberAccessor().set(BatchPreparedStatementExecutor.class.getDeclaredField("batchCount"),
actual, 2);
}
diff --git
a/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/FilterableTableScanExecutor.java
b/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/FilterableTableScanExecutor.java
index 84ce5fea378..c3daad3a068 100644
---
a/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/FilterableTableScanExecutor.java
+++
b/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/FilterableTableScanExecutor.java
@@ -45,6 +45,7 @@ import
org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.database.type.DatabaseTypeEngine;
import org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroup;
import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupContext;
+import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupReportContext;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionContext;
import
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutionUnit;
import
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutor;
@@ -152,11 +153,12 @@ public final class FilterableTableScanExecutor implements
TableScanExecutor {
private AbstractEnumerable<Object[]> execute(final DatabaseType
databaseType, final QueryContext queryContext, final ShardingSphereDatabase
database, final ExecutionContext context) {
ExecuteProcessEngine executeProcessEngine = new ExecuteProcessEngine();
try {
- ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext =
prepareEngine.prepare(context.getRouteContext(), context.getExecutionUnits());
+ ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext =
+ prepareEngine.prepare(context.getRouteContext(),
context.getExecutionUnits(), new
ExecutionGroupReportContext(database.getName()));
setParameters(executionGroupContext.getInputGroups());
executeProcessEngine.initializeExecution(executionGroupContext,
context.getQueryContext());
List<QueryResult> queryResults = execute(executionGroupContext,
databaseType);
-
executeProcessEngine.finishExecution(executionGroupContext.getExecutionID(),
eventBusContext);
+
executeProcessEngine.finishExecution(executionGroupContext.getReportContext().getExecutionID(),
eventBusContext);
// TODO need to get session context
MergeEngine mergeEngine = new MergeEngine(database,
executorContext.getProps(), new ConnectionContext());
MergedResult mergedResult = mergeEngine.merge(queryResults,
queryContext.getSqlStatementContext());
diff --git
a/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/TranslatableTableScanExecutor.java
b/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/TranslatableTableScanExecutor.java
index 191221306eb..64bd9fc4119 100644
---
a/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/TranslatableTableScanExecutor.java
+++
b/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/TranslatableTableScanExecutor.java
@@ -49,6 +49,7 @@ import
org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.database.type.DatabaseTypeEngine;
import org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroup;
import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupContext;
+import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupReportContext;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionContext;
import
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutionUnit;
import
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutor;
@@ -179,11 +180,12 @@ public final class TranslatableTableScanExecutor
implements TableScanExecutor {
final
ShardingSphereDatabase database, final ExecutionContext context) {
ExecuteProcessEngine executeProcessEngine = new ExecuteProcessEngine();
try {
- ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext =
prepareEngine.prepare(context.getRouteContext(), context.getExecutionUnits());
+ ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext =
+ prepareEngine.prepare(context.getRouteContext(),
context.getExecutionUnits(), new
ExecutionGroupReportContext(database.getName()));
setParameters(executionGroupContext.getInputGroups());
executeProcessEngine.initializeExecution(executionGroupContext,
context.getQueryContext());
List<QueryResult> queryResults = execute(executionGroupContext,
databaseType);
-
executeProcessEngine.finishExecution(executionGroupContext.getExecutionID(),
eventBusContext);
+
executeProcessEngine.finishExecution(executionGroupContext.getReportContext().getExecutionID(),
eventBusContext);
MergeEngine mergeEngine = new MergeEngine(database,
executorContext.getProps(), new ConnectionContext());
MergedResult mergedResult = mergeEngine.merge(queryResults,
queryContext.getSqlStatementContext());
Collection<Statement> statements =
getStatements(executionGroupContext.getInputGroups());
@@ -240,11 +242,12 @@ public final class TranslatableTableScanExecutor
implements TableScanExecutor {
private AbstractEnumerable<Object[]> execute(final DatabaseType
databaseType, final QueryContext queryContext, final ShardingSphereDatabase
database, final ExecutionContext context) {
ExecuteProcessEngine executeProcessEngine = new ExecuteProcessEngine();
try {
- ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext =
prepareEngine.prepare(context.getRouteContext(), context.getExecutionUnits());
+ ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext =
+ prepareEngine.prepare(context.getRouteContext(),
context.getExecutionUnits(), new
ExecutionGroupReportContext(database.getName()));
setParameters(executionGroupContext.getInputGroups());
executeProcessEngine.initializeExecution(executionGroupContext,
context.getQueryContext());
List<QueryResult> queryResults = execute(executionGroupContext,
databaseType);
-
executeProcessEngine.finishExecution(executionGroupContext.getExecutionID(),
eventBusContext);
+
executeProcessEngine.finishExecution(executionGroupContext.getReportContext().getExecutionID(),
eventBusContext);
MergeEngine mergeEngine = new MergeEngine(database,
executorContext.getProps(), new ConnectionContext());
MergedResult mergedResult = mergeEngine.merge(queryResults,
queryContext.getSqlStatementContext());
Collection<Statement> statements =
getStatements(executionGroupContext.getInputGroups());
diff --git
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/ProxySQLExecutor.java
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/ProxySQLExecutor.java
index 427139951a0..69b6ebffd49 100644
---
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/ProxySQLExecutor.java
+++
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/ProxySQLExecutor.java
@@ -25,6 +25,7 @@ import
org.apache.shardingsphere.infra.context.ConnectionContext;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.executor.kernel.ExecutorEngine;
import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupContext;
+import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupReportContext;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionContext;
import
org.apache.shardingsphere.infra.executor.sql.execute.engine.SQLExecutorExceptionHandler;
import
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutionUnit;
@@ -197,13 +198,11 @@ public final class ProxySQLExecutor {
RawExecutionPrepareEngine prepareEngine = new
RawExecutionPrepareEngine(maxConnectionsSizePerQuery, rules);
ExecutionGroupContext<RawSQLExecutionUnit> executionGroupContext;
try {
- executionGroupContext =
prepareEngine.prepare(executionContext.getRouteContext(),
executionContext.getExecutionUnits());
+ executionGroupContext =
prepareEngine.prepare(executionContext.getRouteContext(),
executionContext.getExecutionUnits(), new ExecutionGroupReportContext(
+
backendConnection.getConnectionSession().getDatabaseName(),
backendConnection.getConnectionSession().getGrantee(),
backendConnection.getConnectionSession().getExecutionId()));
} catch (final SQLException ex) {
return getSaneExecuteResults(executionContext, ex);
}
-
executionGroupContext.setExecutionID(backendConnection.getConnectionSession().getExecutionId());
-
executionGroupContext.setDatabaseName(backendConnection.getConnectionSession().getDatabaseName());
-
executionGroupContext.setGrantee(backendConnection.getConnectionSession().getGrantee());
// TODO handle query header
return rawExecutor.execute(executionGroupContext,
executionContext.getQueryContext(), new RawSQLExecutorCallback());
}
@@ -216,13 +215,11 @@ public final class ProxySQLExecutor {
ProxyContext.getInstance().getDatabase(backendConnection.getConnectionSession().getDatabaseName()).getResourceMetaData().getStorageTypes());
ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext;
try {
- executionGroupContext =
prepareEngine.prepare(executionContext.getRouteContext(),
executionContext.getExecutionUnits());
+ executionGroupContext =
prepareEngine.prepare(executionContext.getRouteContext(),
executionContext.getExecutionUnits(), new ExecutionGroupReportContext(
+
backendConnection.getConnectionSession().getDatabaseName(),
backendConnection.getConnectionSession().getGrantee(),
backendConnection.getConnectionSession().getExecutionId()));
} catch (final SQLException ex) {
return getSaneExecuteResults(executionContext, ex);
}
-
executionGroupContext.setExecutionID(backendConnection.getConnectionSession().getExecutionId());
-
executionGroupContext.setDatabaseName(backendConnection.getConnectionSession().getDatabaseName());
-
executionGroupContext.setGrantee(backendConnection.getConnectionSession().getGrantee());
return jdbcExecutor.execute(executionContext.getQueryContext(),
executionGroupContext, isReturnGeneratedKeys, isExceptionThrown);
}
diff --git
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/executor/ProxyJDBCExecutor.java
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/executor/ProxyJDBCExecutor.java
index cca1b8bf448..2cb2c8a223f 100644
---
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/executor/ProxyJDBCExecutor.java
+++
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/executor/ProxyJDBCExecutor.java
@@ -78,7 +78,7 @@ public final class ProxyJDBCExecutor {
true),
ProxyJDBCExecutorCallbackFactory.newInstance(type,
protocolType, storageTypes, context.getSqlStatement(),
databaseCommunicationEngine, isReturnGeneratedKeys, isExceptionThrown,
false));
-
executeProcessEngine.finishExecution(executionGroupContext.getExecutionID(),
eventBusContext);
+
executeProcessEngine.finishExecution(executionGroupContext.getReportContext().getExecutionID(),
eventBusContext);
return result;
} finally {
executeProcessEngine.cleanExecution();
diff --git
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsHandler.java
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsHandler.java
index 6f8e4154af0..3ecbbb9a4de 100644
---
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsHandler.java
+++
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsHandler.java
@@ -26,6 +26,7 @@ import
org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.executor.check.SQLCheckEngine;
import org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroup;
import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupContext;
+import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupReportContext;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionContext;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
import
org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
@@ -140,7 +141,8 @@ public final class MySQLMultiStatementsHandler implements
ProxyBackendHandler {
.<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY),
connectionSession.getBackendConnection(),
(JDBCBackendStatement)
connectionSession.getStatementManager(), new StatementOption(false), rules,
metaDataContexts.getMetaData().getDatabase(connectionSession.getDatabaseName()).getResourceMetaData().getStorageTypes());
- ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext =
prepareEngine.prepare(anyExecutionContext.getRouteContext(),
samplingExecutionUnit());
+ ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext =
prepareEngine.prepare(anyExecutionContext.getRouteContext(),
samplingExecutionUnit(),
+ new
ExecutionGroupReportContext(connectionSession.getDatabaseName(),
connectionSession.getGrantee(), connectionSession.getExecutionId()));
for (ExecutionGroup<JDBCExecutionUnit> eachGroup :
executionGroupContext.getInputGroups()) {
for (JDBCExecutionUnit each : eachGroup.getInputs()) {
prepareBatchedStatement(each);
diff --git
a/proxy/frontend/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutor.java
b/proxy/frontend/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutor.java
index 8e6dc960ab4..d235a836dc6 100644
---
a/proxy/frontend/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutor.java
+++
b/proxy/frontend/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutor.java
@@ -28,6 +28,7 @@ import
org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.executor.check.SQLCheckEngine;
import org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroup;
import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupContext;
+import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupReportContext;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionContext;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
import
org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
@@ -150,7 +151,8 @@ public final class PostgreSQLBatchedStatementsExecutor {
metaDataContexts.getMetaData().getProps().<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY),
connectionSession.getBackendConnection(),
(JDBCBackendStatement) connectionSession.getStatementManager(),
new StatementOption(false), rules,
metaDataContexts.getMetaData().getDatabase(connectionSession.getDatabaseName()).getResourceMetaData().getStorageTypes());
- executionGroupContext =
prepareEngine.prepare(anyExecutionContext.getRouteContext(),
executionUnitParams.keySet());
+ executionGroupContext =
prepareEngine.prepare(anyExecutionContext.getRouteContext(),
executionUnitParams.keySet(),
+ new
ExecutionGroupReportContext(connectionSession.getDatabaseName(),
connectionSession.getGrantee(), connectionSession.getExecutionId()));
for (ExecutionGroup<JDBCExecutionUnit> eachGroup :
executionGroupContext.getInputGroups()) {
for (JDBCExecutionUnit each : eachGroup.getInputs()) {
prepareJDBCExecutionUnit(each);