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",