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

zhangliang 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 8e104c0dcef Remove useless DistributedTransactionOperationType.IGNORE 
(#33088)
8e104c0dcef is described below

commit 8e104c0dcefdbfd52f481701e17bd3f8add2348d
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Oct 1 20:11:17 2024 +0800

    Remove useless DistributedTransactionOperationType.IGNORE (#33088)
---
 .../core/connection/ShardingSphereConnection.java     | 19 ++++++++++---------
 .../core/connection/ShardingSphereConnectionTest.java |  7 ++++---
 .../transaction/ConnectionTransaction.java            | 13 +++++++------
 .../transaction/ConnectionTransactionTest.java        | 13 +++++++------
 4 files changed, 28 insertions(+), 24 deletions(-)

diff --git 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java
 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java
index e5d20c2b43c..6e41678f3bc 100644
--- 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java
+++ 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java
@@ -32,6 +32,7 @@ import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePrecondition
 import org.apache.shardingsphere.infra.executor.sql.process.ProcessEngine;
 import 
org.apache.shardingsphere.infra.session.connection.transaction.TransactionConnectionContext;
 import org.apache.shardingsphere.mode.manager.ContextManager;
+import 
org.apache.shardingsphere.transaction.ConnectionTransaction.DistributedTransactionOperationType;
 import org.apache.shardingsphere.transaction.rule.TransactionRule;
 
 import java.sql.DatabaseMetaData;
@@ -41,6 +42,7 @@ import java.sql.SQLFeatureNotSupportedException;
 import java.sql.Savepoint;
 import java.sql.Statement;
 import java.util.Collection;
+import java.util.Optional;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.Executor;
 
@@ -177,15 +179,14 @@ public final class ShardingSphereConnection extends 
AbstractConnectionAdapter {
     }
     
     private void processDistributedTransaction() throws SQLException {
-        switch 
(databaseConnectionManager.getConnectionTransaction().getDistributedTransactionOperationType(autoCommit))
 {
-            case BEGIN:
-                databaseConnectionManager.begin();
-                break;
-            case COMMIT:
-                databaseConnectionManager.commit();
-                break;
-            default:
-                break;
+        Optional<DistributedTransactionOperationType> operationType = 
databaseConnectionManager.getConnectionTransaction().getDistributedTransactionOperationType(autoCommit);
+        if (!operationType.isPresent()) {
+            return;
+        }
+        if (DistributedTransactionOperationType.BEGIN == operationType.get()) {
+            databaseConnectionManager.begin();
+        } else {
+            databaseConnectionManager.commit();
         }
     }
     
diff --git 
a/jdbc/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java
 
b/jdbc/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java
index 136ab424eaf..9169ab0170d 100644
--- 
a/jdbc/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java
+++ 
b/jdbc/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java
@@ -37,6 +37,7 @@ import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.Collections;
+import java.util.Optional;
 import java.util.Properties;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -64,7 +65,7 @@ class ShardingSphereConnectionTest {
     @Test
     void assertSetAutoCommitWithDistributedTransaction() throws SQLException {
         ConnectionTransaction connectionTransaction = 
mock(ConnectionTransaction.class);
-        
when(connectionTransaction.getDistributedTransactionOperationType(true)).thenReturn(DistributedTransactionOperationType.COMMIT);
+        
when(connectionTransaction.getDistributedTransactionOperationType(true)).thenReturn(Optional.of(DistributedTransactionOperationType.COMMIT));
         
when(connectionTransaction.getTransactionType()).thenReturn(TransactionType.XA);
         try (ShardingSphereConnection connection = new 
ShardingSphereConnection(DefaultDatabase.LOGIC_NAME, mockContextManager(), 
null)) {
             DriverDatabaseConnectionManager connectionManager = 
mockConnectionManager(connection, connectionTransaction);
@@ -92,7 +93,7 @@ class ShardingSphereConnectionTest {
     @Test
     void assertCommitWithDistributedTransaction() throws SQLException {
         ConnectionTransaction connectionTransaction = 
mock(ConnectionTransaction.class);
-        
when(connectionTransaction.getDistributedTransactionOperationType(false)).thenReturn(DistributedTransactionOperationType.BEGIN);
+        
when(connectionTransaction.getDistributedTransactionOperationType(false)).thenReturn(Optional.of(DistributedTransactionOperationType.BEGIN));
         
when(connectionTransaction.getTransactionType()).thenReturn(TransactionType.XA);
         try (ShardingSphereConnection connection = new 
ShardingSphereConnection(DefaultDatabase.LOGIC_NAME, mockContextManager(), 
null)) {
             DriverDatabaseConnectionManager databaseConnectionManager = 
mockConnectionManager(connection, connectionTransaction);
@@ -119,7 +120,7 @@ class ShardingSphereConnectionTest {
     @Test
     void assertRollbackWithDistributedTransaction() throws SQLException {
         ConnectionTransaction connectionTransaction = 
mock(ConnectionTransaction.class);
-        
when(connectionTransaction.getDistributedTransactionOperationType(false)).thenReturn(DistributedTransactionOperationType.BEGIN);
+        
when(connectionTransaction.getDistributedTransactionOperationType(false)).thenReturn(Optional.of(DistributedTransactionOperationType.BEGIN));
         
when(connectionTransaction.getTransactionType()).thenReturn(TransactionType.XA);
         try (ShardingSphereConnection connection = new 
ShardingSphereConnection(DefaultDatabase.LOGIC_NAME, mockContextManager(), 
null)) {
             final DriverDatabaseConnectionManager databaseConnectionManager = 
mockConnectionManager(connection, connectionTransaction);
diff --git 
a/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/ConnectionTransaction.java
 
b/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/ConnectionTransaction.java
index 8a95ac3633e..c0456ef3ab3 100644
--- 
a/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/ConnectionTransaction.java
+++ 
b/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/ConnectionTransaction.java
@@ -121,19 +121,20 @@ public final class ConnectionTransaction {
      * Get distributed transaction operation type.
      *
      * @param autoCommit is auto commit
-     * @return distributed transaction operation type
+     * @return got distributed transaction operation type
      */
-    public DistributedTransactionOperationType 
getDistributedTransactionOperationType(final boolean autoCommit) {
+    public Optional<DistributedTransactionOperationType> 
getDistributedTransactionOperationType(final boolean autoCommit) {
         if (!autoCommit && !distributedTransactionManager.isInTransaction()) {
-            return DistributedTransactionOperationType.BEGIN;
+            return Optional.of(DistributedTransactionOperationType.BEGIN);
         }
         if (autoCommit && distributedTransactionManager.isInTransaction()) {
-            return DistributedTransactionOperationType.COMMIT;
+            return Optional.of(DistributedTransactionOperationType.COMMIT);
         }
-        return DistributedTransactionOperationType.IGNORE;
+        return Optional.empty();
     }
     
     public enum DistributedTransactionOperationType {
-        BEGIN, COMMIT, IGNORE
+        
+        BEGIN, COMMIT
     }
 }
diff --git 
a/kernel/transaction/core/src/test/java/org/apache/shardingsphere/transaction/ConnectionTransactionTest.java
 
b/kernel/transaction/core/src/test/java/org/apache/shardingsphere/transaction/ConnectionTransactionTest.java
index 28efa6c3186..3fde2974704 100644
--- 
a/kernel/transaction/core/src/test/java/org/apache/shardingsphere/transaction/ConnectionTransactionTest.java
+++ 
b/kernel/transaction/core/src/test/java/org/apache/shardingsphere/transaction/ConnectionTransactionTest.java
@@ -26,6 +26,7 @@ import org.junit.jupiter.api.Test;
 
 import java.sql.Connection;
 import java.sql.SQLException;
+import java.util.Optional;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
@@ -153,26 +154,26 @@ class ConnectionTransactionTest {
     @Test
     void assertGetDistributedTransactionBeginOperationType() {
         assertThat(new ConnectionTransaction(mock(TransactionRule.class, 
RETURNS_DEEP_STUBS), new 
TransactionConnectionContext()).getDistributedTransactionOperationType(false),
-                is(DistributedTransactionOperationType.BEGIN));
+                is(Optional.of(DistributedTransactionOperationType.BEGIN)));
     }
     
     @Test
     void assertGetDistributedTransactionCommitOperationType() {
         TransactionRule rule = mock(TransactionRule.class, RETURNS_DEEP_STUBS);
         
when(rule.getResource().getTransactionManager(rule.getDefaultType()).isInTransaction()).thenReturn(true);
-        assertThat(new ConnectionTransaction(rule, new 
TransactionConnectionContext()).getDistributedTransactionOperationType(true), 
is(DistributedTransactionOperationType.COMMIT));
+        assertThat(new ConnectionTransaction(rule, new 
TransactionConnectionContext()).getDistributedTransactionOperationType(true), 
is(Optional.of(DistributedTransactionOperationType.COMMIT)));
     }
     
     @Test
-    void assertDistributedTransactionIgnoreOperationTypeWhenIsAutoCommit() {
+    void assertDistributedTransactionOperationTypeFailedWhenIsAutoCommit() {
         TransactionRule rule = mock(TransactionRule.class, RETURNS_DEEP_STUBS);
         
when(rule.getResource().getTransactionManager(rule.getDefaultType()).isInTransaction()).thenReturn(true);
-        assertThat(new ConnectionTransaction(rule, new 
TransactionConnectionContext()).getDistributedTransactionOperationType(false), 
is(DistributedTransactionOperationType.IGNORE));
+        assertFalse(new ConnectionTransaction(rule, new 
TransactionConnectionContext()).getDistributedTransactionOperationType(false).isPresent());
     }
     
     @Test
-    void 
assertDistributedTransactionIgnoreOperationTypeWhenIsNotInDistributedTransaction()
 {
+    void 
assertDistributedTransactionOperationTypeFailedWhenIsNotInDistributedTransaction()
 {
         ConnectionTransaction connectionTransaction = new 
ConnectionTransaction(mock(TransactionRule.class, RETURNS_DEEP_STUBS), new 
TransactionConnectionContext());
-        
assertThat(connectionTransaction.getDistributedTransactionOperationType(true), 
is(DistributedTransactionOperationType.IGNORE));
+        
assertFalse(connectionTransaction.getDistributedTransactionOperationType(true).isPresent());
     }
 }

Reply via email to