You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2020/12/01 07:06:19 UTC
[shardingsphere] branch master updated: Use PostgreSQLCommand
decouple UpdateResponseHeader.type (#8437)
This is an automated email from the ASF dual-hosted git repository.
panjuan 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 d238cc3 Use PostgreSQLCommand decouple UpdateResponseHeader.type (#8437)
d238cc3 is described below
commit d238cc336bed2f0a777d1b7709fea1e9e4965fad
Author: Liang Zhang <te...@163.com>
AuthorDate: Tue Dec 1 15:06:07 2020 +0800
Use PostgreSQLCommand decouple UpdateResponseHeader.type (#8437)
* Add PostgreSQLCommand
* Remove useless UpdateResponseHeader.type
* Refactor UpdateResponseHeader
* Refactor UpdateResponseHeader
* Resolve conflict
---
.../communication/DatabaseCommunicationEngine.java | 19 +------
.../header/update/UpdateResponseHeader.java | 27 +++++-----
.../text/admin/BroadcastBackendHandler.java | 2 +-
.../backend/text/admin/RDLBackendHandler.java | 18 ++-----
.../text/admin/UseDatabaseBackendHandler.java | 2 +-
.../HintAddDatabaseShardingValueExecutor.java | 2 +-
.../HintAddTableShardingValueExecutor.java | 2 +-
.../hint/internal/executor/HintClearExecutor.java | 2 +-
.../HintSetDatabaseShardingValueExecutor.java | 2 +-
.../executor/HintSetPrimaryOnlyExecutor.java | 2 +-
.../sctl/set/ShardingCTLSetBackendHandler.java | 2 +-
.../backend/text/skip/SkipBackendHandler.java | 2 +-
.../transaction/TransactionBackendHandler.java | 2 +-
.../text/admin/BroadcastBackendHandlerTest.java | 2 +-
.../text/admin/UnicastBackendHandlerTest.java | 2 +-
.../execute/MySQLComStmtExecuteExecutorTest.java | 5 +-
.../query/MySQLComQueryPacketExecutorTest.java | 5 +-
.../command/query/PostgreSQLCommand.java | 61 ++++++++++++++++++++++
.../binary/bind/PostgreSQLComBindExecutor.java | 9 ++--
.../query/text/PostgreSQLComQueryExecutor.java | 7 +--
20 files changed, 108 insertions(+), 67 deletions(-)
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngine.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngine.java
index 135f55a..52b0562 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngine.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngine.java
@@ -45,9 +45,6 @@ import org.apache.shardingsphere.proxy.backend.response.header.query.impl.QueryH
import org.apache.shardingsphere.proxy.backend.response.header.query.impl.QueryHeaderBuilder;
import org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
-import org.apache.shardingsphere.sql.parser.sql.common.statement.dml.DeleteStatement;
-import org.apache.shardingsphere.sql.parser.sql.common.statement.dml.InsertStatement;
-import org.apache.shardingsphere.sql.parser.sql.common.statement.dml.UpdateStatement;
import java.sql.SQLException;
import java.util.ArrayList;
@@ -95,7 +92,7 @@ public final class DatabaseCommunicationEngine {
private ResponseHeader doExecute(final ExecutionContext executionContext) throws SQLException {
if (executionContext.getExecutionUnits().isEmpty()) {
- return new UpdateResponseHeader();
+ return new UpdateResponseHeader(executionContext.getSqlStatementContext().getSqlStatement());
}
proxySQLExecutor.checkExecutePrerequisites(executionContext);
Collection<ExecuteResult> executeResults = proxySQLExecutor.execute(executionContext);
@@ -138,24 +135,12 @@ public final class DatabaseCommunicationEngine {
}
private UpdateResponseHeader processExecuteUpdate(final ExecutionContext executionContext, final Collection<ExecuteResult> executeResults) throws SQLException {
- UpdateResponseHeader result = createUpdateResponse(executionContext, executeResults);
+ UpdateResponseHeader result = new UpdateResponseHeader(executionContext.getSqlStatementContext().getSqlStatement(), executeResults);
refreshSchema(executionContext);
mergeUpdateCount(executionContext.getSqlStatementContext(), result);
return result;
}
- private UpdateResponseHeader createUpdateResponse(final ExecutionContext executionContext, final Collection<ExecuteResult> executeResults) {
- UpdateResponseHeader result = new UpdateResponseHeader(executeResults);
- if (executionContext.getSqlStatementContext().getSqlStatement() instanceof InsertStatement) {
- result.setType("INSERT");
- } else if (executionContext.getSqlStatementContext().getSqlStatement() instanceof DeleteStatement) {
- result.setType("DELETE");
- } else if (executionContext.getSqlStatementContext().getSqlStatement() instanceof UpdateStatement) {
- result.setType("UPDATE");
- }
- return result;
- }
-
@SuppressWarnings({"unchecked", "rawtypes"})
private void refreshSchema(final ExecutionContext executionContext) throws SQLException {
SQLStatement sqlStatement = executionContext.getSqlStatementContext().getSqlStatement();
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/update/UpdateResponseHeader.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/update/UpdateResponseHeader.java
index df76284..76bd64e 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/update/UpdateResponseHeader.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/update/UpdateResponseHeader.java
@@ -17,44 +17,43 @@
package org.apache.shardingsphere.proxy.backend.response.header.update;
+import lombok.AccessLevel;
import lombok.Getter;
-import lombok.Setter;
import org.apache.shardingsphere.infra.executor.sql.execute.result.ExecuteResult;
import org.apache.shardingsphere.infra.executor.sql.execute.result.update.UpdateResult;
import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
-import java.util.List;
/**
* Update response header.
*/
+@Getter
public final class UpdateResponseHeader implements ResponseHeader {
- private final List<Integer> updateCounts = new LinkedList<>();
+ private final SQLStatement sqlStatement;
- @Getter
private final long lastInsertId;
- @Getter
- private long updateCount;
+ @Getter(AccessLevel.NONE)
+ private final Collection<Integer> updateCounts = new LinkedList<>();
- @Getter
- @Setter
- private String type;
+ private long updateCount;
- public UpdateResponseHeader() {
- this(Collections.emptyList());
+ public UpdateResponseHeader(final SQLStatement sqlStatement) {
+ this(sqlStatement, Collections.emptyList());
}
- public UpdateResponseHeader(final Collection<ExecuteResult> executeResults) {
+ public UpdateResponseHeader(final SQLStatement sqlStatement, final Collection<ExecuteResult> executeResults) {
+ this.sqlStatement = sqlStatement;
+ lastInsertId = getLastInsertId(executeResults);
+ updateCount = executeResults.iterator().hasNext() ? ((UpdateResult) executeResults.iterator().next()).getUpdateCount() : 0;
for (ExecuteResult each : executeResults) {
- updateCount = ((UpdateResult) each).getUpdateCount();
updateCounts.add(((UpdateResult) each).getUpdateCount());
}
- lastInsertId = getLastInsertId(executeResults);
}
private long getLastInsertId(final Collection<ExecuteResult> executeResults) {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/BroadcastBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/BroadcastBackendHandler.java
index 1c08a2a..e24abf9 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/BroadcastBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/BroadcastBackendHandler.java
@@ -55,7 +55,7 @@ public final class BroadcastBackendHandler implements TextProtocolBackendHandler
databaseCommunicationEngineFactory.newTextProtocolInstance(sqlStatement, sql, backendConnection).execute();
}
backendConnection.setCurrentSchema(originalSchema);
- return new UpdateResponseHeader();
+ return new UpdateResponseHeader(sqlStatement);
}
@Override
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/RDLBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/RDLBackendHandler.java
index 95aadef..2b7a3eb 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/RDLBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/RDLBackendHandler.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.proxy.backend.text.admin;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.distsql.parser.statement.rdl.CreateDataSourcesStatement;
import org.apache.shardingsphere.distsql.parser.statement.rdl.CreateShardingRuleStatement;
-import org.apache.shardingsphere.infra.eventbus.ShardingSphereEventBus;
import org.apache.shardingsphere.governance.core.event.model.datasource.DataSourcePersistEvent;
import org.apache.shardingsphere.governance.core.event.model.rule.RuleConfigurationsPersistEvent;
import org.apache.shardingsphere.governance.core.event.model.schema.SchemaNamePersistEvent;
@@ -33,6 +32,7 @@ import org.apache.shardingsphere.infra.config.RuleConfiguration;
import org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
import org.apache.shardingsphere.infra.context.metadata.impl.StandardMetaDataContexts;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.infra.eventbus.ShardingSphereEventBus;
import org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapperEngine;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
@@ -79,9 +79,7 @@ public final class RDLBackendHandler implements TextProtocolBackendHandler {
}
// TODO Need to get the executed feedback from registry center for returning.
ShardingSphereEventBus.getInstance().post(new SchemaNamePersistEvent(context.getSqlStatement().getDatabaseName(), false));
- UpdateResponseHeader result = new UpdateResponseHeader();
- result.setType("CREATE");
- return result;
+ return new UpdateResponseHeader(context.getSqlStatement());
}
private ResponseHeader execute(final DropDatabaseStatementContext context) {
@@ -90,9 +88,7 @@ public final class RDLBackendHandler implements TextProtocolBackendHandler {
}
// TODO Need to get the executed feedback from registry center for returning.
ShardingSphereEventBus.getInstance().post(new SchemaNamePersistEvent(context.getSqlStatement().getDatabaseName(), true));
- UpdateResponseHeader result = new UpdateResponseHeader();
- result.setType("DROP");
- return result;
+ return new UpdateResponseHeader(context.getSqlStatement());
}
private ResponseHeader execute(final CreateDataSourcesStatementContext context) {
@@ -101,9 +97,7 @@ public final class RDLBackendHandler implements TextProtocolBackendHandler {
DataSourceParameterConverter.getDataSourceParameterMapFromYamlConfiguration(parameters));
// TODO Need to get the executed feedback from registry center for returning.
ShardingSphereEventBus.getInstance().post(new DataSourcePersistEvent(backendConnection.getSchemaName(), dataSources));
- UpdateResponseHeader result = new UpdateResponseHeader();
- result.setType("CREATE");
- return result;
+ return new UpdateResponseHeader(context.getSqlStatement());
}
private ResponseHeader execute(final CreateShardingRuleStatementContext context) {
@@ -111,9 +105,7 @@ public final class RDLBackendHandler implements TextProtocolBackendHandler {
Collection<RuleConfiguration> rules = new YamlRuleConfigurationSwapperEngine().swapToRuleConfigurations(Collections.singleton(config));
// TODO Need to get the executed feedback from registry center for returning.
ShardingSphereEventBus.getInstance().post(new RuleConfigurationsPersistEvent(backendConnection.getSchemaName(), rules));
- UpdateResponseHeader result = new UpdateResponseHeader();
- result.setType("CREATE");
- return result;
+ return new UpdateResponseHeader(context.getSqlStatement());
}
private SQLStatementContext<?> getSQLStatementContext() {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/UseDatabaseBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/UseDatabaseBackendHandler.java
index 8bf68fd..663c60c 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/UseDatabaseBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/UseDatabaseBackendHandler.java
@@ -44,7 +44,7 @@ public final class UseDatabaseBackendHandler implements TextProtocolBackendHandl
String schema = SQLUtil.getExactlyValue(useStatement.getSchema());
if (ProxyContext.getInstance().schemaExists(schema) && isAuthorizedSchema(schema)) {
backendConnection.setCurrentSchema(schema);
- return new UpdateResponseHeader();
+ return new UpdateResponseHeader(useStatement);
}
throw new UnknownDatabaseException(schema);
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintAddDatabaseShardingValueExecutor.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintAddDatabaseShardingValueExecutor.java
index f4f1431..842e6b9 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintAddDatabaseShardingValueExecutor.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintAddDatabaseShardingValueExecutor.java
@@ -30,6 +30,6 @@ public final class HintAddDatabaseShardingValueExecutor extends AbstractHintUpda
@Override
public ResponseHeader execute(final HintAddDatabaseShardingValueCommand command) {
HintManagerHolder.get().addDatabaseShardingValue(command.getLogicTable(), command.getValue());
- return new UpdateResponseHeader();
+ return new UpdateResponseHeader(null);
}
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintAddTableShardingValueExecutor.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintAddTableShardingValueExecutor.java
index 4228edd..04da2e3 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintAddTableShardingValueExecutor.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintAddTableShardingValueExecutor.java
@@ -30,6 +30,6 @@ public final class HintAddTableShardingValueExecutor extends AbstractHintUpdateE
@Override
public ResponseHeader execute(final HintAddTableShardingValueCommand command) {
HintManagerHolder.get().addTableShardingValue(command.getLogicTable(), command.getValue());
- return new UpdateResponseHeader();
+ return new UpdateResponseHeader(null);
}
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintClearExecutor.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintClearExecutor.java
index e1a7b34..0649456 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintClearExecutor.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintClearExecutor.java
@@ -31,6 +31,6 @@ public final class HintClearExecutor extends AbstractHintUpdateExecutor<HintClea
public ResponseHeader execute(final HintClearCommand command) {
HintManagerHolder.get().close();
HintManagerHolder.remove();
- return new UpdateResponseHeader();
+ return new UpdateResponseHeader(null);
}
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintSetDatabaseShardingValueExecutor.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintSetDatabaseShardingValueExecutor.java
index 7b999e0..93877f4 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintSetDatabaseShardingValueExecutor.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintSetDatabaseShardingValueExecutor.java
@@ -30,6 +30,6 @@ public final class HintSetDatabaseShardingValueExecutor extends AbstractHintUpda
@Override
public ResponseHeader execute(final HintSetDatabaseShardingValueCommand command) {
HintManagerHolder.get().setDatabaseShardingValue(command.getValue());
- return new UpdateResponseHeader();
+ return new UpdateResponseHeader(null);
}
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintSetPrimaryOnlyExecutor.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintSetPrimaryOnlyExecutor.java
index 9366ac1..2bed712 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintSetPrimaryOnlyExecutor.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintSetPrimaryOnlyExecutor.java
@@ -32,6 +32,6 @@ public final class HintSetPrimaryOnlyExecutor extends AbstractHintUpdateExecutor
if (command.isPrimaryOnly()) {
HintManagerHolder.get().setPrimaryRouteOnly();
}
- return new UpdateResponseHeader();
+ return new UpdateResponseHeader(null);
}
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/set/ShardingCTLSetBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/set/ShardingCTLSetBackendHandler.java
index f823169..e89adcc 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/set/ShardingCTLSetBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/set/ShardingCTLSetBackendHandler.java
@@ -61,7 +61,7 @@ public final class ShardingCTLSetBackendHandler implements TextProtocolBackendHa
} else {
throw new UnsupportedShardingCTLTypeException(sql);
}
- return new UpdateResponseHeader();
+ return new UpdateResponseHeader(null);
}
@Override
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 1b77c84..f2f079e 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
@@ -30,7 +30,7 @@ public final class SkipBackendHandler implements TextProtocolBackendHandler {
@Override
public ResponseHeader execute() {
- return new UpdateResponseHeader();
+ return new UpdateResponseHeader(null);
}
@Override
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/transaction/TransactionBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/transaction/TransactionBackendHandler.java
index e398c65..83dc861 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/transaction/TransactionBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/transaction/TransactionBackendHandler.java
@@ -57,7 +57,7 @@ public final class TransactionBackendHandler implements TextProtocolBackendHandl
default:
throw new SQLFeatureNotSupportedException(operationType.name());
}
- return new UpdateResponseHeader();
+ return new UpdateResponseHeader(null);
}
@Override
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/BroadcastBackendHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/BroadcastBackendHandlerTest.java
index 940bd87..03ad39f 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/BroadcastBackendHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/BroadcastBackendHandlerTest.java
@@ -79,7 +79,7 @@ public final class BroadcastBackendHandlerTest {
@Test
public void assertExecuteSuccess() throws SQLException {
- mockDatabaseCommunicationEngine(new UpdateResponseHeader());
+ mockDatabaseCommunicationEngine(new UpdateResponseHeader(mock(SQLStatement.class)));
BroadcastBackendHandler broadcastBackendHandler = new BroadcastBackendHandler("SET timeout = 1000", mock(SQLStatement.class), backendConnection);
setBackendHandlerFactory(broadcastBackendHandler);
ResponseHeader actual = broadcastBackendHandler.execute();
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/UnicastBackendHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/UnicastBackendHandlerTest.java
index bc37016..1c96141 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/UnicastBackendHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/UnicastBackendHandlerTest.java
@@ -69,7 +69,7 @@ public final class UnicastBackendHandlerTest {
metaDataContexts.setAccessible(true);
metaDataContexts.set(ProxyContext.getInstance(),
new StandardMetaDataContexts(getMetaDataMap(), mock(ExecutorEngine.class), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
- setUnderlyingHandler(new UpdateResponseHeader());
+ setUnderlyingHandler(new UpdateResponseHeader(mock(SQLStatement.class)));
}
private Map<String, ShardingSphereMetaData> getMetaDataMap() {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java
index 68a0013..09a1f69 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java
@@ -23,14 +23,15 @@ import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties
import org.apache.shardingsphere.infra.context.metadata.impl.StandardMetaDataContexts;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
import org.apache.shardingsphere.infra.executor.kernel.ExecutorEngine;
-import org.apache.shardingsphere.proxy.backend.response.header.query.impl.QueryHeader;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngine;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.response.header.query.QueryResponseHeader;
+import org.apache.shardingsphere.proxy.backend.response.header.query.impl.QueryHeader;
import org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
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;
@@ -86,7 +87,7 @@ public final class MySQLComStmtExecuteExecutorTest {
when(packet.getSql()).thenReturn("SELECT 1");
MySQLComStmtExecuteExecutor mysqlComStmtExecuteExecutor = new MySQLComStmtExecuteExecutor(packet, backendConnection);
FieldSetter.setField(mysqlComStmtExecuteExecutor, MySQLComStmtExecuteExecutor.class.getDeclaredField("databaseCommunicationEngine"), databaseCommunicationEngine);
- when(databaseCommunicationEngine.execute()).thenReturn(new UpdateResponseHeader());
+ when(databaseCommunicationEngine.execute()).thenReturn(new UpdateResponseHeader(mock(SQLStatement.class)));
mysqlComStmtExecuteExecutor.execute();
assertThat(mysqlComStmtExecuteExecutor.getResponseType(), is(ResponseType.UPDATE));
}
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 5590a11..9e491ba 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
@@ -18,11 +18,12 @@
package org.apache.shardingsphere.proxy.frontend.mysql.command.query.text.query;
import org.apache.shardingsphere.db.protocol.mysql.packet.command.query.text.query.MySQLComQueryPacket;
-import org.apache.shardingsphere.proxy.backend.response.header.query.impl.QueryHeader;
import org.apache.shardingsphere.proxy.backend.response.header.query.QueryResponseHeader;
+import org.apache.shardingsphere.proxy.backend.response.header.query.impl.QueryHeader;
import org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
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.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
@@ -56,7 +57,7 @@ public final class MySQLComQueryPacketExecutorTest {
@Test
public void assertIsUpdateResponse() throws SQLException, NoSuchFieldException {
FieldSetter.setField(mysqlComQueryPacketExecutor, MySQLComQueryPacketExecutor.class.getDeclaredField("textProtocolBackendHandler"), textProtocolBackendHandler);
- when(textProtocolBackendHandler.execute()).thenReturn(new UpdateResponseHeader());
+ when(textProtocolBackendHandler.execute()).thenReturn(new UpdateResponseHeader(mock(SQLStatement.class)));
mysqlComQueryPacketExecutor.execute();
assertThat(mysqlComQueryPacketExecutor.getResponseType(), is(ResponseType.UPDATE));
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/PostgreSQLCommand.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/PostgreSQLCommand.java
new file mode 100644
index 0000000..65fd76f
--- /dev/null
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/PostgreSQLCommand.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.proxy.frontend.postgresql.command.query;
+
+import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.CreateDataSourcesStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.CreateShardingRuleStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateDatabaseStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropDatabaseStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.dml.DeleteStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.dml.InsertStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.dml.UpdateStatement;
+
+/**
+ * PostgreSQL command.
+ */
+@RequiredArgsConstructor
+public final class PostgreSQLCommand {
+
+ private final SQLStatement sqlStatement;
+
+ /**
+ * Get SQL command.
+ *
+ * @return SQL command
+ */
+ public String getSQLCommand() {
+ if (sqlStatement instanceof InsertStatement) {
+ return "INSERT";
+ }
+ if (sqlStatement instanceof DeleteStatement) {
+ return "DELETE";
+ }
+ if (sqlStatement instanceof UpdateStatement) {
+ return "UPDATE";
+ }
+ if (sqlStatement instanceof CreateDatabaseStatement || sqlStatement instanceof CreateDataSourcesStatement || sqlStatement instanceof CreateShardingRuleStatement) {
+ return "CREATE";
+ }
+ if (sqlStatement instanceof DropDatabaseStatement) {
+ return "DROP";
+ }
+ return "";
+ }
+}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/binary/bind/PostgreSQLComBindExecutor.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/binary/bind/PostgreSQLComBindExecutor.java
index 87b1ba3..9d3150c 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/binary/bind/PostgreSQLComBindExecutor.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/binary/bind/PostgreSQLComBindExecutor.java
@@ -34,13 +34,14 @@ import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicati
import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngineFactory;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
import org.apache.shardingsphere.proxy.backend.response.data.QueryResponseData;
-import org.apache.shardingsphere.proxy.backend.response.header.query.impl.QueryHeader;
+import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
import org.apache.shardingsphere.proxy.backend.response.header.query.QueryResponseHeader;
+import org.apache.shardingsphere.proxy.backend.response.header.query.impl.QueryHeader;
import org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
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.SQLStatement;
import java.sql.SQLException;
@@ -56,7 +57,7 @@ import java.util.stream.Collectors;
public final class PostgreSQLComBindExecutor implements QueryCommandExecutor {
private final PostgreSQLComBindPacket packet;
-
+
private final DatabaseCommunicationEngine databaseCommunicationEngine;
@Getter
@@ -114,7 +115,7 @@ public final class PostgreSQLComBindExecutor implements QueryCommandExecutor {
}
private PostgreSQLCommandCompletePacket createUpdatePacket(final UpdateResponseHeader updateResponseHeader) {
- return new PostgreSQLCommandCompletePacket(updateResponseHeader.getType(), updateResponseHeader.getUpdateCount());
+ return new PostgreSQLCommandCompletePacket(new PostgreSQLCommand(updateResponseHeader.getSqlStatement()).getSQLCommand(), updateResponseHeader.getUpdateCount());
}
@Override
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 32d8ac22..271a1bb 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
@@ -28,13 +28,14 @@ import org.apache.shardingsphere.db.protocol.postgresql.packet.generic.PostgreSQ
import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
-import org.apache.shardingsphere.proxy.backend.response.header.query.impl.QueryHeader;
import org.apache.shardingsphere.proxy.backend.response.header.query.QueryResponseHeader;
+import org.apache.shardingsphere.proxy.backend.response.header.query.impl.QueryHeader;
import org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
import org.apache.shardingsphere.proxy.backend.text.TextProtocolBackendHandler;
import org.apache.shardingsphere.proxy.backend.text.TextProtocolBackendHandlerFactory;
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 java.sql.SQLException;
import java.util.Collection;
@@ -47,7 +48,7 @@ import java.util.Optional;
* Command query executor for PostgreSQL.
*/
public final class PostgreSQLComQueryExecutor implements QueryCommandExecutor {
-
+
private final TextProtocolBackendHandler textProtocolBackendHandler;
@Getter
@@ -89,7 +90,7 @@ public final class PostgreSQLComQueryExecutor implements QueryCommandExecutor {
}
private PostgreSQLCommandCompletePacket createUpdatePacket(final UpdateResponseHeader updateResponseHeader) {
- return new PostgreSQLCommandCompletePacket(updateResponseHeader.getType(), updateResponseHeader.getUpdateCount());
+ return new PostgreSQLCommandCompletePacket(new PostgreSQLCommand(updateResponseHeader.getSqlStatement()).getSQLCommand(), updateResponseHeader.getUpdateCount());
}
@Override