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 f060e21 PostgreSQL Proxy support empty statement (#10340)
f060e21 is described below
commit f060e21cf400d26eedae8060d9cfe5cd33482aa5
Author: 吴伟杰 <[email protected]>
AuthorDate: Sat May 15 01:19:51 2021 +0800
PostgreSQL Proxy support empty statement (#10340)
* PostgreSQL Proxy support empty statement
* Fix testcases
---
.../query/PostgreSQLEmptyQueryResponsePacket.java | 21 +++++++++++++--------
.../PostgreSQLEmptyQueryResponsePacketTest.java | 17 ++++++++---------
.../text/TextProtocolBackendHandlerFactory.java | 7 ++++---
.../proxy/backend/text/skip/SkipBackendHandler.java | 7 ++++++-
.../TransactionBackendHandlerFactory.java | 2 +-
.../backend/text/skip/SkipBackendHandlerTest.java | 2 +-
.../command/MySQLCommandExecutorFactoryTest.java | 4 +++-
.../text/query/MySQLComQueryPacketExecutorTest.java | 13 +++++++++++--
.../query/text/PostgreSQLComQueryExecutor.java | 7 +++++--
.../PostgreSQLCommandExecutorFactoryTest.java | 11 ++++++++++-
.../query/text/PostgreSQLComQueryExecutorTest.java | 1 +
.../sql/common/statement/dml/EmptyStatement.java | 14 ++++++--------
12 files changed, 69 insertions(+), 37 deletions(-)
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/skip/SkipBackendHandler.java
b/shardingsphere-db-protocol/shardingsphere-db-protocol-postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/PostgreSQLEmptyQueryResponsePacket.java
similarity index 50%
copy from
shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/skip/SkipBackendHandler.java
copy to
shardingsphere-db-protocol/shardingsphere-db-protocol-postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/PostgreSQLEmptyQueryResponsePacket.java
index 429e622..fdd2815 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/skip/SkipBackendHandler.java
+++
b/shardingsphere-db-protocol/shardingsphere-db-protocol-postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/PostgreSQLEmptyQueryResponsePacket.java
@@ -15,19 +15,24 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.text.skip;
+package org.apache.shardingsphere.db.protocol.postgresql.packet.command.query;
-import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
-import
org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
-import org.apache.shardingsphere.proxy.backend.text.TextProtocolBackendHandler;
+import
org.apache.shardingsphere.db.protocol.postgresql.packet.identifier.PostgreSQLIdentifierPacket;
+import
org.apache.shardingsphere.db.protocol.postgresql.packet.identifier.PostgreSQLIdentifierTag;
+import
org.apache.shardingsphere.db.protocol.postgresql.packet.identifier.PostgreSQLMessagePacketType;
+import
org.apache.shardingsphere.db.protocol.postgresql.payload.PostgreSQLPacketPayload;
/**
- * Skip backend handler.
+ * Empty query response packet for PostgreSQL.
*/
-public final class SkipBackendHandler implements TextProtocolBackendHandler {
+public final class PostgreSQLEmptyQueryResponsePacket implements
PostgreSQLIdentifierPacket {
@Override
- public ResponseHeader execute() {
- return new UpdateResponseHeader(null);
+ public void write(final PostgreSQLPacketPayload payload) {
+ }
+
+ @Override
+ public PostgreSQLIdentifierTag getIdentifier() {
+ return PostgreSQLMessagePacketType.EMPTY_QUERY_RESPONSE;
}
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/skip/SkipBackendHandlerTest.java
b/shardingsphere-db-protocol/shardingsphere-db-protocol-postgresql/src/test/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/PostgreSQLEmptyQueryResponsePacketTest.java
similarity index 59%
copy from
shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/skip/SkipBackendHandlerTest.java
copy to
shardingsphere-db-protocol/shardingsphere-db-protocol-postgresql/src/test/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/PostgreSQLEmptyQueryResponsePacketTest.java
index accba7d..82fd73d 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/skip/SkipBackendHandlerTest.java
+++
b/shardingsphere-db-protocol/shardingsphere-db-protocol-postgresql/src/test/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/PostgreSQLEmptyQueryResponsePacketTest.java
@@ -15,21 +15,20 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.text.skip;
+package org.apache.shardingsphere.db.protocol.postgresql.packet.command.query;
-import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
-import
org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
+import
org.apache.shardingsphere.db.protocol.postgresql.packet.identifier.PostgreSQLIdentifierTag;
+import
org.apache.shardingsphere.db.protocol.postgresql.packet.identifier.PostgreSQLMessagePacketType;
import org.junit.Test;
-import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
-public final class SkipBackendHandlerTest {
+public final class PostgreSQLEmptyQueryResponsePacketTest {
@Test
- public void assertExecuteSkipBackendHandler() {
- SkipBackendHandler skipBackendHandler = new SkipBackendHandler();
- ResponseHeader actual = skipBackendHandler.execute();
- assertThat(actual, instanceOf(UpdateResponseHeader.class));
+ public void assertIdentifier() {
+ PostgreSQLIdentifierTag actual = new
PostgreSQLEmptyQueryResponsePacket().getIdentifier();
+ assertThat(actual,
is(PostgreSQLMessagePacketType.EMPTY_QUERY_RESPONSE));
}
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/TextProtocolBackendHandlerFactory.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/TextProtocolBackendHandlerFactory.java
index 4ebe9ef..95a58d9 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/TextProtocolBackendHandlerFactory.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/TextProtocolBackendHandlerFactory.java
@@ -37,6 +37,7 @@ import
org.apache.shardingsphere.proxy.backend.text.sctl.utils.SCTLUtils;
import org.apache.shardingsphere.proxy.backend.text.skip.SkipBackendHandler;
import
org.apache.shardingsphere.proxy.backend.text.transaction.TransactionBackendHandlerFactory;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
+import
org.apache.shardingsphere.sql.parser.sql.common.statement.dml.EmptyStatement;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.tcl.TCLStatement;
import java.sql.SQLException;
@@ -65,11 +66,11 @@ public final class TextProtocolBackendHandlerFactory {
* @throws SQLException SQL exception
*/
public static TextProtocolBackendHandler newInstance(final DatabaseType
databaseType, final String sql, final BackendConnection backendConnection)
throws SQLException {
- if (Strings.isNullOrEmpty(sql)) {
- return new SkipBackendHandler();
+ String trimSQL = SCTLUtils.trimComment(sql);
+ if (Strings.isNullOrEmpty(trimSQL)) {
+ return new SkipBackendHandler(new EmptyStatement());
}
// TODO Parse sctl SQL with ANTLR
- String trimSQL = SCTLUtils.trimComment(sql);
if
(trimSQL.toUpperCase().startsWith(ShardingCTLBackendHandlerFactory.SCTL)) {
return ShardingCTLBackendHandlerFactory.newInstance(trimSQL,
backendConnection);
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/skip/SkipBackendHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/skip/SkipBackendHandler.java
index 429e622..c9945b6 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/skip/SkipBackendHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/skip/SkipBackendHandler.java
@@ -17,17 +17,22 @@
package org.apache.shardingsphere.proxy.backend.text.skip;
+import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
import
org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
import org.apache.shardingsphere.proxy.backend.text.TextProtocolBackendHandler;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
/**
* Skip backend handler.
*/
+@RequiredArgsConstructor
public final class SkipBackendHandler implements TextProtocolBackendHandler {
+ private final SQLStatement sqlStatement;
+
@Override
public ResponseHeader execute() {
- return new UpdateResponseHeader(null);
+ return new UpdateResponseHeader(sqlStatement);
}
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/transaction/TransactionBackendHandlerFactory.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/transaction/TransactionBackendHandlerFactory.java
index 2c152f0..e5d5d8a 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/transaction/TransactionBackendHandlerFactory.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/transaction/TransactionBackendHandlerFactory.java
@@ -51,7 +51,7 @@ public final class TransactionBackendHandlerFactory {
if (tclStatement instanceof SetAutoCommitStatement) {
if (((SetAutoCommitStatement) tclStatement).isAutoCommit()) {
return
backendConnection.getTransactionStatus().isInTransaction()
- ? new TransactionBackendHandler(tclStatement,
TransactionOperationType.COMMIT, backendConnection) : new SkipBackendHandler();
+ ? new TransactionBackendHandler(tclStatement,
TransactionOperationType.COMMIT, backendConnection) : new
SkipBackendHandler(tclStatement);
}
return new TransactionBackendHandler(tclStatement,
TransactionOperationType.BEGIN, backendConnection);
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/skip/SkipBackendHandlerTest.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/skip/SkipBackendHandlerTest.java
index accba7d..71282d3 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/skip/SkipBackendHandlerTest.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/skip/SkipBackendHandlerTest.java
@@ -28,7 +28,7 @@ public final class SkipBackendHandlerTest {
@Test
public void assertExecuteSkipBackendHandler() {
- SkipBackendHandler skipBackendHandler = new SkipBackendHandler();
+ SkipBackendHandler skipBackendHandler = new SkipBackendHandler(null);
ResponseHeader actual = skipBackendHandler.execute();
assertThat(actual, instanceOf(UpdateResponseHeader.class));
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecutorFactoryTest.java
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecutorFactoryTest.java
index c031d2f..c935912 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecutorFactoryTest.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecutorFactoryTest.java
@@ -108,7 +108,9 @@ public final class MySQLCommandExecutorFactoryTest {
@Test
public void assertNewInstanceWithComQuery() throws SQLException {
-
assertThat(MySQLCommandExecutorFactory.newInstance(MySQLCommandPacketType.COM_QUERY,
mock(MySQLComQueryPacket.class), backendConnection),
instanceOf(MySQLComQueryPacketExecutor.class));
+ MySQLComQueryPacket packet = mock(MySQLComQueryPacket.class);
+ when(packet.getSql()).thenReturn("");
+
assertThat(MySQLCommandExecutorFactory.newInstance(MySQLCommandPacketType.COM_QUERY,
packet, backendConnection), instanceOf(MySQLComQueryPacketExecutor.class));
}
@Test
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLComQueryPacketExecutorTest.java
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLComQueryPacketExecutorTest.java
index 807d4c1..39ed500 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLComQueryPacketExecutorTest.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLComQueryPacketExecutorTest.java
@@ -24,6 +24,7 @@ import
org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResp
import org.apache.shardingsphere.proxy.backend.text.TextProtocolBackendHandler;
import org.apache.shardingsphere.proxy.frontend.command.executor.ResponseType;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
+import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
@@ -44,9 +45,17 @@ public final class MySQLComQueryPacketExecutorTest {
@Mock
private TextProtocolBackendHandler textProtocolBackendHandler;
+ @Mock
+ private MySQLComQueryPacket packet;
+
+ @Before
+ public void setUp() {
+ when(packet.getSql()).thenReturn("");
+ }
+
@Test
public void assertIsQueryResponse() throws SQLException,
NoSuchFieldException {
- MySQLComQueryPacketExecutor mysqlComQueryPacketExecutor = new
MySQLComQueryPacketExecutor(mock(MySQLComQueryPacket.class), null);
+ MySQLComQueryPacketExecutor mysqlComQueryPacketExecutor = new
MySQLComQueryPacketExecutor(packet, null);
FieldSetter.setField(mysqlComQueryPacketExecutor,
MySQLComQueryPacketExecutor.class.getDeclaredField("textProtocolBackendHandler"),
textProtocolBackendHandler);
when(textProtocolBackendHandler.execute()).thenReturn(new
QueryResponseHeader(Collections.singletonList(mock(QueryHeader.class))));
mysqlComQueryPacketExecutor.execute();
@@ -55,7 +64,7 @@ public final class MySQLComQueryPacketExecutorTest {
@Test
public void assertIsUpdateResponse() throws SQLException,
NoSuchFieldException {
- MySQLComQueryPacketExecutor mysqlComQueryPacketExecutor = new
MySQLComQueryPacketExecutor(mock(MySQLComQueryPacket.class), null);
+ MySQLComQueryPacketExecutor mysqlComQueryPacketExecutor = new
MySQLComQueryPacketExecutor(packet, null);
FieldSetter.setField(mysqlComQueryPacketExecutor,
MySQLComQueryPacketExecutor.class.getDeclaredField("textProtocolBackendHandler"),
textProtocolBackendHandler);
when(textProtocolBackendHandler.execute()).thenReturn(new
UpdateResponseHeader(mock(SQLStatement.class)));
mysqlComQueryPacketExecutor.execute();
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/text/PostgreSQLComQueryExecutor.java
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/text/PostgreSQLComQueryExecutor.java
index 0381af1..17f414f 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/text/PostgreSQLComQueryExecutor.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/text/PostgreSQLComQueryExecutor.java
@@ -21,6 +21,7 @@ import lombok.Getter;
import org.apache.shardingsphere.db.protocol.packet.DatabasePacket;
import
org.apache.shardingsphere.db.protocol.postgresql.packet.PostgreSQLPacket;
import
org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.PostgreSQLColumnDescription;
+import
org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.PostgreSQLEmptyQueryResponsePacket;
import
org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.PostgreSQLRowDescriptionPacket;
import
org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.text.PostgreSQLComQueryPacket;
import
org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.text.PostgreSQLDataRowPacket;
@@ -36,6 +37,7 @@ import
org.apache.shardingsphere.proxy.backend.text.TextProtocolBackendHandlerFa
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.PostgreSQLCommand;
+import
org.apache.shardingsphere.sql.parser.sql.common.statement.dml.EmptyStatement;
import java.sql.SQLException;
import java.util.Collection;
@@ -87,8 +89,9 @@ public final class PostgreSQLComQueryExecutor implements
QueryCommandExecutor {
return result;
}
- private PostgreSQLCommandCompletePacket createUpdatePacket(final
UpdateResponseHeader updateResponseHeader) {
- return new PostgreSQLCommandCompletePacket(new
PostgreSQLCommand(updateResponseHeader.getSqlStatement()).getSQLCommand(),
updateResponseHeader.getUpdateCount());
+ private PostgreSQLPacket createUpdatePacket(final UpdateResponseHeader
updateResponseHeader) {
+ return updateResponseHeader.getSqlStatement() instanceof
EmptyStatement ? new PostgreSQLEmptyQueryResponsePacket()
+ : new PostgreSQLCommandCompletePacket(new
PostgreSQLCommand(updateResponseHeader.getSqlStatement()).getSQLCommand(),
updateResponseHeader.getUpdateCount());
}
@Override
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecutorFactoryTest.java
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecutorFactoryTest.java
index b7851c3..0bcf87c 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecutorFactoryTest.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecutorFactoryTest.java
@@ -67,11 +67,20 @@ public final class PostgreSQLCommandExecutorFactoryTest {
if (null == commandPacketClass) {
commandPacketClass = PostgreSQLCommandPacket.class;
}
- CommandExecutor actual =
PostgreSQLCommandExecutorFactory.newInstance(inputOutput.getCommandPacketType(),
mock(commandPacketClass), mock(BackendConnection.class));
+ PostgreSQLCommandPacket packet = preparePacket(commandPacketClass);
+ CommandExecutor actual =
PostgreSQLCommandExecutorFactory.newInstance(inputOutput.getCommandPacketType(),
packet, mock(BackendConnection.class));
assertThat(actual, instanceOf(inputOutput.getResultClass()));
}
}
+ private PostgreSQLCommandPacket preparePacket(final Class<? extends
PostgreSQLCommandPacket> commandPacketClass) {
+ PostgreSQLCommandPacket result = mock(commandPacketClass);
+ if (result instanceof PostgreSQLComQueryPacket) {
+ when(((PostgreSQLComQueryPacket) result).getSql()).thenReturn("");
+ }
+ return result;
+ }
+
@RequiredArgsConstructor
@Getter
private static final class InputOutput {
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/text/PostgreSQLComQueryExecutorTest.java
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/text/PostgreSQLComQueryExecutorTest.java
index fa4a07a..60f7e96 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/text/PostgreSQLComQueryExecutorTest.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/text/PostgreSQLComQueryExecutorTest.java
@@ -64,6 +64,7 @@ public final class PostgreSQLComQueryExecutorTest {
public void setUp() throws SQLException {
PostgreSQLComQueryPacket queryPacket =
mock(PostgreSQLComQueryPacket.class);
BackendConnection backendConnection = mock(BackendConnection.class);
+ when(queryPacket.getSql()).thenReturn("");
queryExecutor = new PostgreSQLComQueryExecutor(queryPacket,
backendConnection);
setMockFieldIntoExecutor(queryExecutor);
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/skip/SkipBackendHandler.java
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/dml/EmptyStatement.java
similarity index 62%
copy from
shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/skip/SkipBackendHandler.java
copy to
shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/dml/EmptyStatement.java
index 429e622..c6799d9 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/skip/SkipBackendHandler.java
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/dml/EmptyStatement.java
@@ -15,19 +15,17 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.text.skip;
+package org.apache.shardingsphere.sql.parser.sql.common.statement.dml;
-import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
-import
org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
-import org.apache.shardingsphere.proxy.backend.text.TextProtocolBackendHandler;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
/**
- * Skip backend handler.
+ * Empty statement.
*/
-public final class SkipBackendHandler implements TextProtocolBackendHandler {
+public final class EmptyStatement implements SQLStatement {
@Override
- public ResponseHeader execute() {
- return new UpdateResponseHeader(null);
+ public int getParameterCount() {
+ return 0;
}
}