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