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

sunnianjun 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 d79d89e0fa2 Refactor ShardingSpherePreparedStatement (#28186)
d79d89e0fa2 is described below

commit d79d89e0fa2df53ea92af5719f7ac346d068f915
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Aug 20 19:47:04 2023 +0800

    Refactor ShardingSpherePreparedStatement (#28186)
---
 .../jdbc/core/statement/ShardingSpherePreparedStatement.java     | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git 
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
 
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
index ab50d97eeee..c8b58e69dc1 100644
--- 
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
+++ 
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
@@ -195,8 +195,8 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
         this.sql = sqlParserRule.isSqlCommentParseEnabled() ? sql : 
SQLHintUtils.removeHint(sql);
         statements = new ArrayList<>();
         parameterSets = new ArrayList<>();
-        DatabaseType protocolType = 
metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getProtocolType();
-        SQLParserEngine sqlParserEngine = 
sqlParserRule.getSQLParserEngine(protocolType.getTrunkDatabaseType().orElse(protocolType));
+        DatabaseType databaseType = getDatabaseType(connection);
+        SQLParserEngine sqlParserEngine = 
sqlParserRule.getSQLParserEngine(databaseType);
         sqlStatement = sqlParserEngine.parse(this.sql, true);
         sqlStatementContext = new 
SQLBindEngine(metaDataContexts.getMetaData(), 
connection.getDatabaseName()).bind(sqlStatement, Collections.emptyList());
         databaseName = 
sqlStatementContext.getTablesContext().getDatabaseName().orElse(connection.getDatabaseName());
@@ -212,6 +212,11 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
         statementManager = new StatementManager();
     }
     
+    private DatabaseType getDatabaseType(final ShardingSphereConnection 
connection) {
+        DatabaseType protocolType = 
metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getProtocolType();
+        return protocolType.getTrunkDatabaseType().orElse(protocolType);
+    }
+    
     private boolean isStatementsCacheable(final RuleMetaData 
databaseRuleMetaData) {
         return 
databaseRuleMetaData.findRules(StorageConnectorReusableRule.class).size() == 
databaseRuleMetaData.getRules().size() && !HintManager.isInstantiated();
     }

Reply via email to