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 <[email protected]>
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();
}