This is an automated email from the ASF dual-hosted git repository.

wuweijie pushed a commit to branch opengauss_adapt
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git

commit 8de86d7449438a82b60684cd742578bfa0d21959
Author: 吴伟杰 <[email protected]>
AuthorDate: Tue Jul 6 18:57:22 2021 +0800

    Adapt master
---
 .../binary/bind/OpenGaussComBatchBindExecutor.java      | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

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/OpenGaussComBatchBindExecutor.java
 
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/binary/bind/OpenGaussComBatchBindExecutor.java
index ee879bd..4d3ae04 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/binary/bind/OpenGaussComBatchBindExecutor.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/binary/bind/OpenGaussComBatchBindExecutor.java
@@ -30,6 +30,8 @@ import 
org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.bin
 import 
org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.binary.bind.PostgreSQLBindCompletePacket;
 import 
org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.text.PostgreSQLDataRowPacket;
 import 
org.apache.shardingsphere.db.protocol.postgresql.packet.generic.PostgreSQLCommandCompletePacket;
+import org.apache.shardingsphere.infra.binder.SQLStatementContextFactory;
+import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
 import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
 import org.apache.shardingsphere.infra.parser.ShardingSphereSQLParserEngine;
 import 
org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngine;
@@ -75,11 +77,14 @@ public final class OpenGaussComBatchBindExecutor implements 
QueryCommandExecutor
     @Getter
     private volatile ResponseType responseType;
     
+    private SQLStatement sqlStatement;
+    
     private boolean batchBindComplete;
     
     @Override
     public Collection<DatabasePacket<?>> execute() throws SQLException {
         List<List<Object>> parameters = packet.getParameters();
+        sqlStatement = parseSql(packet.getSql(), 
backendConnection.getSchemaName());
         for (int i = 0; i < parameters.size(); i++) {
             List<Object> parameter = parameters.get(i);
             init(parameter);
@@ -96,15 +101,11 @@ public final class OpenGaussComBatchBindExecutor 
implements QueryCommandExecutor
     }
     
     private void init(final List<Object> parameter) {
-        
databaseCommunicationEngines.add(DatabaseCommunicationEngineFactory.getInstance().newBinaryProtocolInstance(getSqlStatement(),
 packet.getSql(), parameter, backendConnection));
+        
databaseCommunicationEngines.add(DatabaseCommunicationEngineFactory.getInstance().newBinaryProtocolInstance(getSqlStatementContext(parameter),
 packet.getSql(), parameter, backendConnection));
     }
     
-    private SQLStatement getSqlStatement() {
-        return connectionContext.getSqlStatement().orElseGet(() -> {
-            SQLStatement result = parseSql(packet.getSql(), 
backendConnection.getSchemaName());
-            connectionContext.setSqlStatement(result);
-            return result;
-        });
+    private SQLStatementContext<?> getSqlStatementContext(final List<Object> 
parameters) {
+        return 
SQLStatementContextFactory.newInstance(ProxyContext.getInstance().getMetaDataContexts().getMetaDataMap(),
 parameters, sqlStatement, backendConnection.getDefaultSchemaName());
     }
     
     private SQLStatement parseSql(final String sql, final String schemaName) {
@@ -147,7 +148,7 @@ public final class OpenGaussComBatchBindExecutor implements 
QueryCommandExecutor
     @Override
     public PostgreSQLPacket getQueryRowPacket() throws SQLException {
         if (batchBindComplete) {
-            String sqlCommand = 
connectionContext.getSqlStatement().map(SQLStatement::getClass).map(PostgreSQLCommand::valueOf).map(command
 -> command.map(Enum::name).orElse("")).orElse("");
+            String sqlCommand = 
PostgreSQLCommand.valueOf(sqlStatement.getClass()).map(Enum::name).orElse("");
             return new PostgreSQLCommandCompletePacket(sqlCommand, 
connectionContext.getUpdateCount());
         }
         QueryResponseRow queryResponseRow = 
databaseCommunicationEngines.get(0).getQueryResponseRow();

Reply via email to