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 c0dce9d44e2 Refactor QueryContext (#23707)
c0dce9d44e2 is described below

commit c0dce9d44e2ff7b0eaa4e84cfe0a897f3ecba98c
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Jan 23 17:19:23 2023 +0800

    Refactor QueryContext (#23707)
    
    * Refactor QueryContext
---
 .../shardingsphere/infra/binder/QueryContext.java      | 18 +++++++++---------
 .../proxy/backend/session/ConnectionSession.java       |  2 +-
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/QueryContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/QueryContext.java
index 3af8c7354a3..ad7f74df4fe 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/QueryContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/QueryContext.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.infra.binder;
 
+import lombok.AccessLevel;
 import lombok.Getter;
 import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
 import org.apache.shardingsphere.infra.binder.type.TableAvailable;
@@ -37,9 +38,10 @@ public final class QueryContext {
     
     private final List<Object> parameters;
     
-    private HintValueContext hintValueContext;
+    @Getter(AccessLevel.NONE)
+    private final String databaseName;
     
-    private String sqlStatementDatabaseName;
+    private final HintValueContext hintValueContext;
     
     public QueryContext(final SQLStatementContext<?> sqlStatementContext, 
final String sql, final List<Object> params) {
         this(sqlStatementContext, sql, params, new HintValueContext());
@@ -49,18 +51,16 @@ public final class QueryContext {
         this.sqlStatementContext = sqlStatementContext;
         this.sql = sql;
         parameters = params;
+        databaseName = sqlStatementContext instanceof TableAvailable ? 
((TableAvailable) 
sqlStatementContext).getTablesContext().getDatabaseName().orElse(null) : null;
         this.hintValueContext = hintValueContext;
-        if (sqlStatementContext instanceof TableAvailable) {
-            ((TableAvailable) 
sqlStatementContext).getTablesContext().getDatabaseName().ifPresent(optional -> 
sqlStatementDatabaseName = optional);
-        }
     }
     
     /**
-     * Find SQL statement database name.
+     * Get database name from SQL statement.
      * 
-     * @return database name
+     * @return got database name
      */
-    public Optional<String> findSqlStatementDatabaseName() {
-        return Optional.ofNullable(sqlStatementDatabaseName);
+    public Optional<String> getDatabaseNameFromSQLStatement() {
+        return Optional.ofNullable(databaseName);
     }
 }
diff --git 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/session/ConnectionSession.java
 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/session/ConnectionSession.java
index 29e1fe2fcc4..ae4d3956d02 100644
--- 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/session/ConnectionSession.java
+++ 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/session/ConnectionSession.java
@@ -101,7 +101,7 @@ public final class ConnectionSession {
      * @return database name
      */
     public String getDatabaseName() {
-        return null == queryContext ? databaseName : 
queryContext.findSqlStatementDatabaseName().orElse(databaseName);
+        return null == queryContext ? databaseName : 
queryContext.getDatabaseNameFromSQLStatement().orElse(databaseName);
     }
     
     /**

Reply via email to