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