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(); }