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

tuichenchuxin 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 4facabd8b99 Minor refactor of databaseType usage (#29237)
4facabd8b99 is described below

commit 4facabd8b9927fdbba1985322c64c942ea695ce8
Author: Zhengqiang Duan <duanzhengqi...@apache.org>
AuthorDate: Thu Nov 30 11:45:38 2023 +0800

    Minor refactor of databaseType usage (#29237)
---
 .../driver/jdbc/core/statement/ShardingSphereStatement.java            | 2 +-
 .../proxy/backend/handler/distsql/rul/sql/PreviewExecutor.java         | 3 ++-
 .../command/query/binary/prepare/MySQLComStmtPrepareExecutor.java      | 3 ++-
 3 files changed, 5 insertions(+), 3 deletions(-)

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 d0774578610..69ed878ca26 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
@@ -522,8 +522,8 @@ 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);
-        SQLStatement sqlStatement = 
sqlParserRule.getSQLParserEngine(getDatabaseType()).parse(sql, false);
         HintValueContext hintValueContext = 
sqlParserRule.isSqlCommentParseEnabled() ? new HintValueContext() : 
SQLHintUtils.extractHint(originSQL).orElseGet(HintValueContext::new);
+        SQLStatement sqlStatement = 
sqlParserRule.getSQLParserEngine(getDatabaseType()).parse(sql, false);
         SQLStatementContext sqlStatementContext = new 
SQLBindEngine(metaDataContexts.getMetaData(), databaseName, 
hintValueContext).bind(sqlStatement, Collections.emptyList());
         return new QueryContext(sqlStatementContext, sql, 
Collections.emptyList(), hintValueContext);
     }
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/PreviewExecutor.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/PreviewExecutor.java
index 25b52a58d7d..e32dd16515b 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/PreviewExecutor.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/PreviewExecutor.java
@@ -94,8 +94,9 @@ public final class PreviewExecutor implements 
ConnectionSessionRequiredRULExecut
         SQLParserRule sqlParserRule = 
globalRuleMetaData.getSingleRule(SQLParserRule.class);
         String sql = sqlParserRule.isSqlCommentParseEnabled() ? 
sqlStatement.getSql() : SQLHintUtils.removeHint(sqlStatement.getSql());
         DatabaseType protocolType = 
metaDataContexts.getMetaData().getDatabase(databaseName).getProtocolType();
-        SQLStatement previewedStatement = 
sqlParserRule.getSQLParserEngine(protocolType.getTrunkDatabaseType().orElse(protocolType)).parse(sql,
 false);
         HintValueContext hintValueContext = 
sqlParserRule.isSqlCommentParseEnabled() ? new HintValueContext() : 
SQLHintUtils.extractHint(sqlStatement.getSql()).orElseGet(HintValueContext::new);
+        DatabaseType databaseType = 
protocolType.getTrunkDatabaseType().orElse(protocolType);
+        SQLStatement previewedStatement = 
sqlParserRule.getSQLParserEngine(databaseType).parse(sql, false);
         SQLStatementContext sqlStatementContext = new 
SQLBindEngine(metaDataContexts.getMetaData(), databaseName, 
hintValueContext).bind(previewedStatement, Collections.emptyList());
         QueryContext queryContext = new QueryContext(sqlStatementContext, sql, 
Collections.emptyList(), hintValueContext);
         connectionSession.setQueryContext(queryContext);
diff --git 
a/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java
 
b/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java
index 1c6d7989936..8e63f755af3 100644
--- 
a/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java
+++ 
b/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java
@@ -75,7 +75,8 @@ public final class MySQLComStmtPrepareExecutor implements 
CommandExecutor {
         failedIfContainsMultiStatements();
         MetaDataContexts metaDataContexts = 
ProxyContext.getInstance().getContextManager().getMetaDataContexts();
         SQLParserRule sqlParserRule = 
metaDataContexts.getMetaData().getGlobalRuleMetaData().getSingleRule(SQLParserRule.class);
-        SQLStatement sqlStatement = 
sqlParserRule.getSQLParserEngine(TypedSPILoader.getService(DatabaseType.class, 
"MySQL")).parse(packet.getSQL(), true);
+        DatabaseType databaseType = 
TypedSPILoader.getService(DatabaseType.class, "MySQL");
+        SQLStatement sqlStatement = 
sqlParserRule.getSQLParserEngine(databaseType).parse(packet.getSQL(), true);
         if (!MySQLComStmtPrepareChecker.isAllowedStatement(sqlStatement)) {
             throw new UnsupportedPreparedStatementException();
         }

Reply via email to