This is an automated email from the ASF dual-hosted git repository.

duanzhengqiang 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 349cffe3b55 Modify the get isolation level method to return Optional 
(#31827)
349cffe3b55 is described below

commit 349cffe3b55b2ea72d4135637e206a51e09fba4c
Author: ZhangCheng <[email protected]>
AuthorDate: Mon Jun 24 19:20:42 2024 +0800

    Modify the get isolation level method to return Optional (#31827)
---
 .../backend/connector/ProxyDatabaseConnectionManager.java      |  4 ++--
 .../proxy/backend/connector/ProxySQLExecutor.java              |  4 +++-
 .../proxy/backend/session/ConnectionSession.java               | 10 ++++++++++
 .../sysvar/provider/TransactionIsolationValueProvider.java     |  7 ++-----
 .../handler/admin/executor/PostgreSQLShowVariableExecutor.java |  3 ++-
 5 files changed, 19 insertions(+), 9 deletions(-)

diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxyDatabaseConnectionManager.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxyDatabaseConnectionManager.java
index 457a577fda5..6a6909ba7db 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxyDatabaseConnectionManager.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxyDatabaseConnectionManager.java
@@ -170,8 +170,8 @@ public final class ProxyDatabaseConnectionManager 
implements DatabaseConnectionM
         if (connectionSession.isReadOnly()) {
             connection.setReadOnly(true);
         }
-        if (null != connectionSession.getIsolationLevel()) {
-            
connection.setTransactionIsolation(TransactionUtils.getTransactionIsolationLevel(connectionSession.getIsolationLevel()));
+        if (connectionSession.getIsolationLevel().isPresent()) {
+            
connection.setTransactionIsolation(TransactionUtils.getTransactionIsolationLevel(connectionSession.getIsolationLevel().get()));
         }
     }
     
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxySQLExecutor.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxySQLExecutor.java
index 1315fc8fc67..6626521de0b 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxySQLExecutor.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxySQLExecutor.java
@@ -55,6 +55,7 @@ import 
org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
 import 
org.apache.shardingsphere.proxy.backend.session.transaction.TransactionStatus;
 import org.apache.shardingsphere.proxy.backend.util.TransactionUtils;
+import 
org.apache.shardingsphere.sql.parser.statement.core.enums.TransactionIsolationLevel;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.CloseStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.DDLStatement;
@@ -234,7 +235,8 @@ public final class ProxySQLExecutor {
             return;
         }
         for (TransactionHook each : transactionHooks) {
-            
each.beforeExecuteSQL(connectionSession.getDatabaseConnectionManager().getCachedConnections().values(),
 getTransactionContext(connectionSession), 
connectionSession.getIsolationLevel());
+            
each.beforeExecuteSQL(connectionSession.getDatabaseConnectionManager().getCachedConnections().values(),
 getTransactionContext(connectionSession),
+                    
connectionSession.getIsolationLevel().orElse(TransactionIsolationLevel.READ_COMMITTED));
         }
     }
     
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/session/ConnectionSession.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/session/ConnectionSession.java
index bc06bbe83ad..d749c20787c 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/session/ConnectionSession.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/session/ConnectionSession.java
@@ -31,6 +31,7 @@ import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.statement.JDBCBack
 import 
org.apache.shardingsphere.proxy.backend.session.transaction.TransactionStatus;
 import 
org.apache.shardingsphere.sql.parser.statement.core.enums.TransactionIsolationLevel;
 
+import java.util.Optional;
 import java.util.concurrent.atomic.AtomicReference;
 
 /**
@@ -129,6 +130,15 @@ public final class ConnectionSession {
         return databaseName;
     }
     
+    /**
+     * Get isolation level.
+     *
+     * @return isolation level
+     */
+    public Optional<TransactionIsolationLevel> getIsolationLevel() {
+        return Optional.ofNullable(isolationLevel);
+    }
+    
     /**
      * Clear query context.
      */
diff --git 
a/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/sysvar/provider/TransactionIsolationValueProvider.java
 
b/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/sysvar/provider/TransactionIsolationValueProvider.java
index 6af143efd49..2c6a7074723 100644
--- 
a/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/sysvar/provider/TransactionIsolationValueProvider.java
+++ 
b/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/sysvar/provider/TransactionIsolationValueProvider.java
@@ -17,14 +17,12 @@
 
 package 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.sysvar.provider;
 
-import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.sysvar.Scope;
 import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.sysvar.MySQLSystemVariable;
 import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.sysvar.MySQLSystemVariableValueProvider;
+import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.sysvar.Scope;
 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
 import 
org.apache.shardingsphere.sql.parser.statement.core.enums.TransactionIsolationLevel;
 
-import java.util.Optional;
-
 /**
  * Transaction isolation value provider.
  */
@@ -32,7 +30,6 @@ public final class TransactionIsolationValueProvider 
implements MySQLSystemVaria
     
     @Override
     public String get(final Scope scope, final ConnectionSession 
connectionSession, final MySQLSystemVariable variable) {
-        return Scope.GLOBAL == scope ? variable.getDefaultValue()
-                : 
Optional.ofNullable(connectionSession.getIsolationLevel()).map(TransactionIsolationLevel::getIsolationLevel).orElseGet(TransactionIsolationLevel.REPEATABLE_READ::getIsolationLevel);
+        return Scope.GLOBAL == scope ? variable.getDefaultValue() : 
connectionSession.getIsolationLevel().orElse(TransactionIsolationLevel.REPEATABLE_READ).getIsolationLevel();
     }
 }
diff --git 
a/proxy/backend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/backend/postgresql/handler/admin/executor/PostgreSQLShowVariableExecutor.java
 
b/proxy/backend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/backend/postgresql/handler/admin/executor/PostgreSQLShowVariableExecutor.java
index a060485185c..7c07b00d340 100644
--- 
a/proxy/backend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/backend/postgresql/handler/admin/executor/PostgreSQLShowVariableExecutor.java
+++ 
b/proxy/backend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/backend/postgresql/handler/admin/executor/PostgreSQLShowVariableExecutor.java
@@ -28,6 +28,7 @@ import 
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataMergedRe
 import 
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
 import 
org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAdminQueryExecutor;
 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
+import 
org.apache.shardingsphere.sql.parser.statement.core.enums.TransactionIsolationLevel;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.dal.ShowStatement;
 
 import java.sql.Types;
@@ -52,7 +53,7 @@ public final class PostgreSQLShowVariableExecutor implements 
DatabaseAdminQueryE
         VARIABLE_ROW_DATA_GENERATORS.put("integer_datetimes", 
connectionSession -> new String[]{"integer_datetimes", "on", "Shows whether 
datetimes are integer based."});
         VARIABLE_ROW_DATA_GENERATORS.put("timezone", connectionSession -> new 
String[]{"TimeZone", "Etc/UTC", "Sets the time zone for displaying and 
interpreting time stamps."});
         VARIABLE_ROW_DATA_GENERATORS.put("transaction_isolation", 
connectionSession -> {
-            String result = null == connectionSession.getIsolationLevel() ? 
"read committed" : 
connectionSession.getIsolationLevel().getIsolationLevel().replace("-", " 
").toLowerCase(Locale.ROOT);
+            String result = 
connectionSession.getIsolationLevel().orElse(TransactionIsolationLevel.READ_COMMITTED).getIsolationLevel().replace("-",
 " ").toLowerCase(Locale.ROOT);
             return new String[]{"transaction_isolation", result, "Sets the 
current transaction's isolation level"};
         });
         VARIABLE_ROW_DATA_GENERATORS.put("transaction_read_only",

Reply via email to