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 8f026a7d9ff Refactor ShardingSphereStatement (#31398)
8f026a7d9ff is described below

commit 8f026a7d9ff3fea10229496bc1619f2f99a295dc
Author: Liang Zhang <[email protected]>
AuthorDate: Sun May 26 15:11:58 2024 +0800

    Refactor ShardingSphereStatement (#31398)
    
    * Refactor BaseDQLE2EIT
    
    * Refactor ShardingSphereStatement
---
 .../core/statement/ShardingSphereStatement.java    | 23 ++++++++++------------
 1 file changed, 10 insertions(+), 13 deletions(-)

diff --git 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
index 58905a7565a..abe0ed5e0a5 100644
--- 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
+++ 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
@@ -108,8 +108,6 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
     
     private final MetaDataContexts metaDataContexts;
     
-    private String databaseName;
-    
     private final List<Statement> statements;
     
     private final StatementOption statementOption;
@@ -126,6 +124,8 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
     
     private final BatchStatementExecutor batchStatementExecutor;
     
+    private String databaseName;
+    
     private boolean returnGeneratedKeys;
     
     private ExecutionContext executionContext;
@@ -143,7 +143,6 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
     public ShardingSphereStatement(final ShardingSphereConnection connection, 
final int resultSetType, final int resultSetConcurrency, final int 
resultSetHoldability) {
         this.connection = connection;
         metaDataContexts = 
connection.getContextManager().getMetaDataContexts();
-        databaseName = connection.getDatabaseName();
         statements = new LinkedList<>();
         statementOption = new StatementOption(resultSetType, 
resultSetConcurrency, resultSetHoldability);
         executor = new DriverExecutor(connection);
@@ -151,12 +150,12 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
         trafficRule = 
metaDataContexts.getMetaData().getGlobalRuleMetaData().getSingleRule(TrafficRule.class);
         statementManager = new StatementManager();
         batchStatementExecutor = new BatchStatementExecutor(this);
+        databaseName = connection.getDatabaseName();
     }
     
     @Override
     public ResultSet executeQuery(final String sql) throws SQLException {
         ShardingSpherePreconditions.checkNotEmpty(sql, () -> new 
EmptySQLException().toSQLException());
-        ResultSet result;
         try {
             QueryContext queryContext = createQueryContext(sql);
             handleAutoCommit(queryContext);
@@ -164,25 +163,23 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
             
connection.getDatabaseConnectionManager().getConnectionContext().setCurrentDatabase(databaseName);
             String trafficInstanceId = 
getInstanceIdAndSet(queryContext).orElse(null);
             if (null != trafficInstanceId) {
-                result = 
executor.getTrafficExecutor().execute(createTrafficExecutionUnit(trafficInstanceId,
 queryContext), Statement::executeQuery);
-                currentResultSet = result;
-                return result;
+                currentResultSet = 
executor.getTrafficExecutor().execute(createTrafficExecutionUnit(trafficInstanceId,
 queryContext), Statement::executeQuery);
+                return currentResultSet;
             }
             if (decide(queryContext, 
metaDataContexts.getMetaData().getDatabase(databaseName), 
metaDataContexts.getMetaData().getGlobalRuleMetaData())) {
-                result = executeFederationQuery(queryContext);
-                currentResultSet = result;
-                return result;
+                currentResultSet = executeFederationQuery(queryContext);
+                return currentResultSet;
             }
             executionContext = createExecutionContext(queryContext);
-            result = doExecuteQuery(executionContext);
+            currentResultSet = doExecuteQuery(executionContext);
+            return currentResultSet;
             // CHECKSTYLE:OFF
         } catch (final RuntimeException ex) {
             // CHECKSTYLE:ON
             handleExceptionInTransaction(connection, metaDataContexts);
+            currentResultSet = null;
             throw SQLExceptionTransformEngine.toSQLException(ex, 
metaDataContexts.getMetaData().getDatabase(databaseName).getProtocolType());
         }
-        currentResultSet = result;
-        return result;
     }
     
     private ShardingSphereResultSet doExecuteQuery(final ExecutionContext 
executionContext) throws SQLException {

Reply via email to