This is an automated email from the ASF dual-hosted git repository.
zhangyonglun 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 acc4250 Update MySQLComStmtExecuteExecutor (#7518)
acc4250 is described below
commit acc42501d6639c3ac02903fbc7811b89bb987c3c
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Sep 19 00:39:02 2020 +0800
Update MySQLComStmtExecuteExecutor (#7518)
---
.../execute/MySQLComStmtExecuteExecutor.java | 32 +++++++++++++---------
1 file changed, 19 insertions(+), 13 deletions(-)
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutor.java
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutor.java
index b2f75a5..19777c7 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutor.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutor.java
@@ -39,6 +39,7 @@ import
org.apache.shardingsphere.proxy.backend.response.query.QueryResponse;
import org.apache.shardingsphere.proxy.backend.response.update.UpdateResponse;
import
org.apache.shardingsphere.proxy.frontend.command.executor.QueryCommandExecutor;
import org.apache.shardingsphere.proxy.frontend.command.executor.ResponseType;
+import
org.apache.shardingsphere.rdl.parser.engine.ShardingSphereSQLParserEngine;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import java.sql.SQLException;
@@ -60,10 +61,10 @@ public final class MySQLComStmtExecuteExecutor implements
QueryCommandExecutor {
private int currentSequenceId;
- public MySQLComStmtExecuteExecutor(final MySQLComStmtExecutePacket
comStmtExecutePacket, final BackendConnection backendConnection) {
- SQLStatement sqlStatement =
ProxyContext.getInstance().getSchema(backendConnection.getSchemaName()).getRuntimeContext().getSqlParserEngine().parse(comStmtExecutePacket.getSql(),
true);
- databaseCommunicationEngine =
DatabaseCommunicationEngineFactory.getInstance().newBinaryProtocolInstance(
- sqlStatement, comStmtExecutePacket.getSql(),
comStmtExecutePacket.getParameters(), backendConnection);
+ public MySQLComStmtExecuteExecutor(final MySQLComStmtExecutePacket packet,
final BackendConnection backendConnection) {
+ ShardingSphereSQLParserEngine sqlParserEngine =
ProxyContext.getInstance().getSchema(backendConnection.getSchemaName()).getRuntimeContext().getSqlParserEngine();
+ SQLStatement sqlStatement = sqlParserEngine.parse(packet.getSql(),
true);
+ databaseCommunicationEngine =
DatabaseCommunicationEngineFactory.getInstance().newBinaryProtocolInstance(sqlStatement,
packet.getSql(), packet.getParameters(), backendConnection);
}
@Override
@@ -72,15 +73,15 @@ public final class MySQLComStmtExecuteExecutor implements
QueryCommandExecutor {
throw new CircuitBreakException();
}
BackendResponse backendResponse =
databaseCommunicationEngine.execute();
- if (backendResponse instanceof QueryResponse) {
- responseType = ResponseType.QUERY;
- return createQueryPacket((QueryResponse) backendResponse);
- }
- responseType = ResponseType.UPDATE;
- return Collections.singletonList(createUpdatePacket((UpdateResponse)
backendResponse));
+ return backendResponse instanceof QueryResponse ?
processQuery((QueryResponse) backendResponse) : processUpdate((UpdateResponse)
backendResponse);
+ }
+
+ private Collection<DatabasePacket<?>> processQuery(final QueryResponse
backendResponse) {
+ responseType = ResponseType.QUERY;
+ return createQueryPackets(backendResponse);
}
- private Collection<DatabasePacket<?>> createQueryPacket(final
QueryResponse backendResponse) {
+ private Collection<DatabasePacket<?>> createQueryPackets(final
QueryResponse backendResponse) {
Collection<DatabasePacket<?>> result = new LinkedList<>();
List<QueryHeader> queryHeader = backendResponse.getQueryHeaders();
result.add(new MySQLFieldCountPacket(++currentSequenceId,
queryHeader.size()));
@@ -92,8 +93,13 @@ public final class MySQLComStmtExecuteExecutor implements
QueryCommandExecutor {
return result;
}
- private MySQLOKPacket createUpdatePacket(final UpdateResponse
updateResponse) {
- return new MySQLOKPacket(1, updateResponse.getUpdateCount(),
updateResponse.getLastInsertId());
+ private Collection<DatabasePacket<?>> processUpdate(final UpdateResponse
backendResponse) {
+ responseType = ResponseType.UPDATE;
+ return createUpdatePackets(backendResponse);
+ }
+
+ private Collection<DatabasePacket<?>> createUpdatePackets(final
UpdateResponse updateResponse) {
+ return Collections.singletonList(new MySQLOKPacket(1,
updateResponse.getUpdateCount(), updateResponse.getLastInsertId()));
}
@Override