You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2021/05/03 04:03:50 UTC
[shardingsphere] branch master updated: Fix ReadyForQuery may be
missing when Simple Query (#10245)
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 9517356 Fix ReadyForQuery may be missing when Simple Query (#10245)
9517356 is described below
commit 951735639653344579a75c304c6abec3b6ae1799
Author: 吴伟杰 <wu...@apache.org>
AuthorDate: Mon May 3 12:03:10 2021 +0800
Fix ReadyForQuery may be missing when Simple Query (#10245)
* Fix ReadyForQuery may be missing when Simple Query
* Fix testcases
---
.../postgresql/command/PostgreSQLCommandExecuteEngine.java | 12 +++++++++++-
.../command/PostgreSQLCommandExecuteEngineTest.java | 2 +-
2 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecuteEngine.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecuteEngine.java
index 3ada4b6..53e89e6 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecuteEngine.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecuteEngine.java
@@ -36,6 +36,9 @@ import org.apache.shardingsphere.proxy.frontend.command.CommandExecuteEngine;
import org.apache.shardingsphere.proxy.frontend.command.executor.CommandExecutor;
import org.apache.shardingsphere.proxy.frontend.command.executor.QueryCommandExecutor;
import org.apache.shardingsphere.proxy.frontend.command.executor.ResponseType;
+import org.apache.shardingsphere.proxy.frontend.postgresql.command.query.binary.bind.PostgreSQLComBindExecutor;
+import org.apache.shardingsphere.proxy.frontend.postgresql.command.query.binary.sync.PostgreSQLComSyncExecutor;
+import org.apache.shardingsphere.proxy.frontend.postgresql.command.query.text.PostgreSQLComQueryExecutor;
import org.apache.shardingsphere.proxy.frontend.postgresql.err.PostgreSQLErrPacketFactory;
import java.sql.SQLException;
@@ -75,11 +78,15 @@ public final class PostgreSQLCommandExecuteEngine implements CommandExecuteEngin
@Override
public void writeQueryData(final ChannelHandlerContext context,
final BackendConnection backendConnection, final QueryCommandExecutor queryCommandExecutor, final int headerPackagesCount) throws SQLException {
+ if (queryCommandExecutor instanceof PostgreSQLComSyncExecutor) {
+ return;
+ }
if (ResponseType.QUERY == queryCommandExecutor.getResponseType() && !context.channel().isActive()) {
context.write(new PostgreSQLCommandCompletePacket());
return;
}
- if (ResponseType.UPDATE == queryCommandExecutor.getResponseType()) {
+ if (ResponseType.UPDATE == queryCommandExecutor.getResponseType() && !(queryCommandExecutor instanceof PostgreSQLComBindExecutor)) {
+ context.write(new PostgreSQLReadyForQueryPacket(true));
return;
}
int count = 0;
@@ -98,5 +105,8 @@ public final class PostgreSQLCommandExecuteEngine implements CommandExecuteEngin
}
}
context.write(new PostgreSQLCommandCompletePacket());
+ if (queryCommandExecutor instanceof PostgreSQLComQueryExecutor) {
+ context.write(new PostgreSQLReadyForQueryPacket(true));
+ }
}
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecuteEngineTest.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecuteEngineTest.java
index fffeba6..8fd18e1 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecuteEngineTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecuteEngineTest.java
@@ -50,6 +50,6 @@ public final class PostgreSQLCommandExecuteEngineTest {
PostgreSQLCommandExecuteEngine commandExecuteEngine = new PostgreSQLCommandExecuteEngine();
when(queryCommandExecutor.getResponseType()).thenReturn(ResponseType.UPDATE);
commandExecuteEngine.writeQueryData(channelHandlerContext, null, queryCommandExecutor, 0);
- verify(channelHandlerContext, times(0)).write(isA(PostgreSQLReadyForQueryPacket.class));
+ verify(channelHandlerContext, times(1)).write(isA(PostgreSQLReadyForQueryPacket.class));
}
}