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 ce61ce6c331 Refactor ShardingSphereStatement (#28187)
ce61ce6c331 is described below

commit ce61ce6c331cae4c71557ba80ab88890e96d41c3
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Aug 20 20:09:29 2023 +0800

    Refactor ShardingSphereStatement (#28187)
    
    * Refactor ShardingSpherePreparedStatement
    
    * Refactor ShardingSphereStatement
    
    * Refactor ShardingSphereStatement
---
 .../jdbc/core/statement/ShardingSpherePreparedStatement.java      | 3 +--
 .../driver/jdbc/core/statement/ShardingSphereStatement.java       | 8 ++++++--
 2 files changed, 7 insertions(+), 4 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 c8b58e69dc1..0743313513d 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,7 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
         this.sql = sqlParserRule.isSqlCommentParseEnabled() ? sql : 
SQLHintUtils.removeHint(sql);
         statements = new ArrayList<>();
         parameterSets = new ArrayList<>();
-        DatabaseType databaseType = getDatabaseType(connection);
-        SQLParserEngine sqlParserEngine = 
sqlParserRule.getSQLParserEngine(databaseType);
+        SQLParserEngine sqlParserEngine = 
sqlParserRule.getSQLParserEngine(getDatabaseType(connection));
         sqlStatement = sqlParserEngine.parse(this.sql, true);
         sqlStatementContext = new 
SQLBindEngine(metaDataContexts.getMetaData(), 
connection.getDatabaseName()).bind(sqlStatement, Collections.emptyList());
         databaseName = 
sqlStatementContext.getTablesContext().getDatabaseName().orElse(connection.getDatabaseName());
diff --git 
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
 
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
index 5560eae29bf..a004bfd0415 100644
--- 
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
+++ 
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
@@ -500,13 +500,17 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
     private QueryContext createQueryContext(final String originSQL) {
         SQLParserRule sqlParserRule = 
metaDataContexts.getMetaData().getGlobalRuleMetaData().getSingleRule(SQLParserRule.class);
         String sql = sqlParserRule.isSqlCommentParseEnabled() ? originSQL : 
SQLHintUtils.removeHint(originSQL);
-        DatabaseType protocolType = 
metaDataContexts.getMetaData().getDatabase(databaseName).getProtocolType();
-        SQLStatement sqlStatement = 
sqlParserRule.getSQLParserEngine(protocolType.getTrunkDatabaseType().orElse(protocolType)).parse(sql,
 false);
+        SQLStatement sqlStatement = 
sqlParserRule.getSQLParserEngine(getDatabaseType()).parse(sql, false);
         SQLStatementContext sqlStatementContext = new 
SQLBindEngine(metaDataContexts.getMetaData(), databaseName).bind(sqlStatement, 
Collections.emptyList());
         HintValueContext hintValueContext = 
sqlParserRule.isSqlCommentParseEnabled() ? new HintValueContext() : 
SQLHintUtils.extractHint(originSQL).orElseGet(HintValueContext::new);
         return new QueryContext(sqlStatementContext, sql, 
Collections.emptyList(), hintValueContext);
     }
     
+    private DatabaseType getDatabaseType() {
+        DatabaseType protocolType = 
metaDataContexts.getMetaData().getDatabase(databaseName).getProtocolType();
+        return protocolType.getTrunkDatabaseType().orElse(protocolType);
+    }
+    
     private ExecutionContext createExecutionContext(final QueryContext 
queryContext) throws SQLException {
         clearStatements();
         RuleMetaData globalRuleMetaData = 
metaDataContexts.getMetaData().getGlobalRuleMetaData();

Reply via email to