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 9ab1721f43c Close connections with try-with-resource in transaction
test cases (#24564)
9ab1721f43c is described below
commit 9ab1721f43c032ac1afd7db1a0110791454cdb29
Author: ZhangCheng <[email protected]>
AuthorDate: Sun Mar 12 22:12:45 2023 +0800
Close connections with try-with-resource in transaction test cases (#24564)
* Close connections with try-with-resource in transaction test cases
* Close connections with try-with-resource in transaction test cases
* Close connections with try-with-resource in transaction test cases
---
.../cases/alterresource/AddResourceTestCase.java | 44 ++++++-------
.../cases/alterresource/CloseResourceTestCase.java | 42 +++++++------
.../cases/autocommit/MySQLAutoCommitTestCase.java | 24 ++++----
.../autocommit/PostgreSQLAutoCommitTestCase.java | 24 ++++----
.../cases/base/BaseTransactionTestCase.java | 14 ++---
.../classictransfer/ClassicTransferTestCase.java | 5 +-
.../BroadcastTableTransactionTestCase.java | 37 ++++++-----
.../ExceptionInTransactionTestCase.java | 5 +-
.../MultiTableCommitAndRollbackTestCase.java | 58 ++++++++---------
.../SingleTableCommitAndRollbackTestCase.java | 34 +++++-----
.../cases/cursor/OpenGaussCursorTestCase.java | 22 ++++---
.../cases/nested/NestedTransactionTestCase.java | 26 ++++----
.../cases/readonly/MySQLSetReadOnlyTestCase.java | 12 ++--
.../readonly/PostgreSQLSetReadOnlyTestCase.java | 12 ++--
.../cases/readonly/SetReadOnlyTestCase.java | 15 ++---
.../cases/savepoint/BaseSavePointTestCase.java | 50 +++++++--------
.../savepoint/OpenGaussSavePointTestCase.java | 37 +++++------
.../savepoint/PostgreSQLSavePointTestCase.java | 41 ++++++------
.../cases/truncate/MySQLLocalTruncateTestCase.java | 42 ++++++-------
.../cases/truncate/MySQLXATruncateTestCase.java | 34 +++++-----
.../PostgreSQLAndOpenGaussTruncateTestCase.java | 46 +++++++-------
.../engine/base/TransactionBaseE2EIT.java | 72 ++++++++++++----------
.../engine/base/TransactionContainerComposer.java | 2 +-
23 files changed, 361 insertions(+), 337 deletions(-)
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/AddResourceTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/AddResourceTestCase.java
index 81d7238c283..ec2914ae9ad 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/AddResourceTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/AddResourceTestCase.java
@@ -46,13 +46,13 @@ public final class AddResourceTestCase extends
BaseTransactionTestCase {
}
private void assertAddResource(final TransactionContainerComposer
containerComposer) throws SQLException {
- Connection connection = getDataSource().getConnection();
- getBaseTransactionITCase().addResource(connection, "transaction_it_2",
containerComposer);
- createThreeDataSourceAccountTableRule(connection);
- reCreateAccountTable(connection);
- assertRollback();
- assertCommit();
- connection.close();
+ try (Connection connection = getDataSource().getConnection()) {
+ getBaseTransactionITCase().addResource(connection,
"transaction_it_2", containerComposer);
+ createThreeDataSourceAccountTableRule(connection);
+ reCreateAccountTable(connection);
+ assertRollback();
+ assertCommit();
+ }
}
private void createThreeDataSourceAccountTableRule(final Connection
connection) throws SQLException {
@@ -68,22 +68,24 @@ public final class AddResourceTestCase extends
BaseTransactionTestCase {
}
private void assertRollback() throws SQLException {
- Connection connection = getDataSource().getConnection();
- connection.setAutoCommit(false);
- assertTableRowCount(connection, TransactionTestConstants.ACCOUNT, 0);
- executeWithLog(connection, "insert into account(id, BALANCE,
TRANSACTION_ID) values(1, 1, 1),(2, 2, 2),(3, 3, 3),(4, 4, 4),(5, 5, 5),(6, 6,
6);");
- assertTableRowCount(connection, TransactionTestConstants.ACCOUNT, 6);
- connection.rollback();
- assertTableRowCount(connection, TransactionTestConstants.ACCOUNT, 0);
+ try (Connection connection = getDataSource().getConnection()) {
+ connection.setAutoCommit(false);
+ assertTableRowCount(connection, TransactionTestConstants.ACCOUNT,
0);
+ executeWithLog(connection, "insert into account(id, BALANCE,
TRANSACTION_ID) values(1, 1, 1),(2, 2, 2),(3, 3, 3),(4, 4, 4),(5, 5, 5),(6, 6,
6);");
+ assertTableRowCount(connection, TransactionTestConstants.ACCOUNT,
6);
+ connection.rollback();
+ assertTableRowCount(connection, TransactionTestConstants.ACCOUNT,
0);
+ }
}
private void assertCommit() throws SQLException {
- Connection connection = getDataSource().getConnection();
- connection.setAutoCommit(false);
- assertTableRowCount(connection, TransactionTestConstants.ACCOUNT, 0);
- executeWithLog(connection, "insert into account(id, BALANCE,
TRANSACTION_ID) values(1, 1, 1),(2, 2, 2),(3, 3, 3),(4, 4, 4),(5, 5, 5),(6, 6,
6);");
- assertTableRowCount(connection, TransactionTestConstants.ACCOUNT, 6);
- connection.commit();
- assertTableRowCount(connection, TransactionTestConstants.ACCOUNT, 6);
+ try (Connection connection = getDataSource().getConnection()) {
+ connection.setAutoCommit(false);
+ assertTableRowCount(connection, TransactionTestConstants.ACCOUNT,
0);
+ executeWithLog(connection, "insert into account(id, BALANCE,
TRANSACTION_ID) values(1, 1, 1),(2, 2, 2),(3, 3, 3),(4, 4, 4),(5, 5, 5),(6, 6,
6);");
+ assertTableRowCount(connection, TransactionTestConstants.ACCOUNT,
6);
+ connection.commit();
+ assertTableRowCount(connection, TransactionTestConstants.ACCOUNT,
6);
+ }
}
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/CloseResourceTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/CloseResourceTestCase.java
index f7d6ae0439c..1413c1212c7 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/CloseResourceTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/CloseResourceTestCase.java
@@ -45,12 +45,12 @@ public final class CloseResourceTestCase extends
BaseTransactionTestCase {
}
private void assertCloseResource(final TransactionContainerComposer
containerComposer) throws SQLException {
- Connection connection = getDataSource().getConnection();
- getBaseTransactionITCase().createOriginalAccountTableRule(connection,
containerComposer);
- reCreateAccountTable(connection);
- assertRollback();
- assertCommit();
- connection.close();
+ try (Connection connection = getDataSource().getConnection()) {
+
getBaseTransactionITCase().createOriginalAccountTableRule(connection,
containerComposer);
+ reCreateAccountTable(connection);
+ assertRollback();
+ assertCommit();
+ }
}
private void reCreateAccountTable(final Connection connection) throws
SQLException {
@@ -59,22 +59,24 @@ public final class CloseResourceTestCase extends
BaseTransactionTestCase {
}
private void assertRollback() throws SQLException {
- Connection connection = getDataSource().getConnection();
- connection.setAutoCommit(false);
- assertTableRowCount(connection, TransactionTestConstants.ACCOUNT, 0);
- executeWithLog(connection, "insert into account(id, BALANCE,
TRANSACTION_ID) values(1, 1, 1),(2, 2, 2),(3, 3, 3),(4, 4, 4),(5, 5, 5),(6, 6,
6);");
- assertTableRowCount(connection, TransactionTestConstants.ACCOUNT, 6);
- connection.rollback();
- assertTableRowCount(connection, TransactionTestConstants.ACCOUNT, 0);
+ try (Connection connection = getDataSource().getConnection()) {
+ connection.setAutoCommit(false);
+ assertTableRowCount(connection, TransactionTestConstants.ACCOUNT,
0);
+ executeWithLog(connection, "insert into account(id, BALANCE,
TRANSACTION_ID) values(1, 1, 1),(2, 2, 2),(3, 3, 3),(4, 4, 4),(5, 5, 5),(6, 6,
6);");
+ assertTableRowCount(connection, TransactionTestConstants.ACCOUNT,
6);
+ connection.rollback();
+ assertTableRowCount(connection, TransactionTestConstants.ACCOUNT,
0);
+ }
}
private void assertCommit() throws SQLException {
- Connection connection = getDataSource().getConnection();
- connection.setAutoCommit(false);
- assertTableRowCount(connection, TransactionTestConstants.ACCOUNT, 0);
- executeWithLog(connection, "insert into account(id, BALANCE,
TRANSACTION_ID) values(1, 1, 1),(2, 2, 2),(3, 3, 3),(4, 4, 4),(5, 5, 5),(6, 6,
6);");
- assertTableRowCount(connection, TransactionTestConstants.ACCOUNT, 6);
- connection.commit();
- assertTableRowCount(connection, TransactionTestConstants.ACCOUNT, 6);
+ try (Connection connection = getDataSource().getConnection()) {
+ connection.setAutoCommit(false);
+ assertTableRowCount(connection, TransactionTestConstants.ACCOUNT,
0);
+ executeWithLog(connection, "insert into account(id, BALANCE,
TRANSACTION_ID) values(1, 1, 1),(2, 2, 2),(3, 3, 3),(4, 4, 4),(5, 5, 5),(6, 6,
6);");
+ assertTableRowCount(connection, TransactionTestConstants.ACCOUNT,
6);
+ connection.commit();
+ assertTableRowCount(connection, TransactionTestConstants.ACCOUNT,
6);
+ }
}
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/autocommit/MySQLAutoCommitTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/autocommit/MySQLAutoCommitTestCase.java
index 5b06887e6f0..c2964a5cb58 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/autocommit/MySQLAutoCommitTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/autocommit/MySQLAutoCommitTestCase.java
@@ -50,18 +50,16 @@ public final class MySQLAutoCommitTestCase extends
BaseTransactionTestCase {
private void assertAutoCommit() throws SQLException {
// TODO Currently XA transaction does not support two transactions in
the same thread at the same time
- Connection connection1 = getDataSource().getConnection();
- Connection connection2 = getDataSource().getConnection();
- executeWithLog(connection1, "set session transaction isolation level
read committed;");
- executeWithLog(connection2, "set session transaction isolation level
read committed;");
- connection1.setAutoCommit(false);
- connection2.setAutoCommit(false);
- executeWithLog(connection1, "insert into account(id, balance,
transaction_id) values(1, 100, 1);");
- assertFalse(executeQueryWithLog(connection2, "select * from
account;").next());
- connection1.commit();
- ThreadUtil.sleep(1, TimeUnit.SECONDS);
- assertTrue(executeQueryWithLog(connection2, "select * from
account;").next());
- connection1.close();
- connection2.close();
+ try (Connection connection1 = getDataSource().getConnection();
Connection connection2 = getDataSource().getConnection()) {
+ executeWithLog(connection1, "set session transaction isolation
level read committed;");
+ executeWithLog(connection2, "set session transaction isolation
level read committed;");
+ connection1.setAutoCommit(false);
+ connection2.setAutoCommit(false);
+ executeWithLog(connection1, "insert into account(id, balance,
transaction_id) values(1, 100, 1);");
+ assertFalse(executeQueryWithLog(connection2, "select * from
account;").next());
+ connection1.commit();
+ ThreadUtil.sleep(1, TimeUnit.SECONDS);
+ assertTrue(executeQueryWithLog(connection2, "select * from
account;").next());
+ }
}
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/autocommit/PostgreSQLAutoCommitTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/autocommit/PostgreSQLAutoCommitTestCase.java
index 961a088e762..c94a8171ed4 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/autocommit/PostgreSQLAutoCommitTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/autocommit/PostgreSQLAutoCommitTestCase.java
@@ -49,18 +49,16 @@ public final class PostgreSQLAutoCommitTestCase extends
BaseTransactionTestCase
}
private void assertAutoCommit() throws SQLException {
- Connection connection1 = getDataSource().getConnection();
- Connection connection2 = getDataSource().getConnection();
- executeWithLog(connection1, "set transaction isolation level read
committed;");
- executeWithLog(connection2, "set transaction isolation level read
committed;");
- connection1.setAutoCommit(false);
- connection2.setAutoCommit(false);
- executeWithLog(connection1, "insert into account(id, balance,
transaction_id) values(1, 100, 1);");
- assertFalse(executeQueryWithLog(connection2, "select * from
account;").next());
- connection1.commit();
- ThreadUtil.sleep(1, TimeUnit.SECONDS);
- assertTrue(executeQueryWithLog(connection2, "select * from
account;").next());
- connection1.close();
- connection2.close();
+ try (Connection connection1 = getDataSource().getConnection();
Connection connection2 = getDataSource().getConnection()) {
+ executeWithLog(connection1, "set transaction isolation level read
committed;");
+ executeWithLog(connection2, "set transaction isolation level read
committed;");
+ connection1.setAutoCommit(false);
+ connection2.setAutoCommit(false);
+ executeWithLog(connection1, "insert into account(id, balance,
transaction_id) values(1, 100, 1);");
+ assertFalse(executeQueryWithLog(connection2, "select * from
account;").next());
+ connection1.commit();
+ ThreadUtil.sleep(1, TimeUnit.SECONDS);
+ assertTrue(executeQueryWithLog(connection2, "select * from
account;").next());
+ }
}
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/base/BaseTransactionTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/base/BaseTransactionTestCase.java
index b88a99a19d6..f793b701996 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/base/BaseTransactionTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/base/BaseTransactionTestCase.java
@@ -61,13 +61,13 @@ public abstract class BaseTransactionTestCase {
protected abstract void executeTest(TransactionContainerComposer
containerComposer) throws SQLException;
protected void beforeTest() throws SQLException {
- Connection connection = getDataSource().getConnection();
- connection.setAutoCommit(false);
- executeWithLog(connection, "delete from account;");
- executeWithLog(connection, "delete from t_order;");
- executeWithLog(connection, "delete from t_order_item;");
- connection.commit();
- connection.close();
+ try (Connection connection = getDataSource().getConnection()) {
+ connection.setAutoCommit(false);
+ executeWithLog(connection, "delete from account;");
+ executeWithLog(connection, "delete from t_order;");
+ executeWithLog(connection, "delete from t_order_item;");
+ connection.commit();
+ }
}
protected void afterTest() throws SQLException {
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/classictransfer/ClassicTransferTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/classictransfer/ClassicTransferTestCase.java
index 1650ca3c1e9..5a7a96702d7 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/classictransfer/ClassicTransferTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/classictransfer/ClassicTransferTestCase.java
@@ -48,8 +48,9 @@ public final class ClassicTransferTestCase extends
BaseTransactionTestCase {
@Override
public void executeTest(final TransactionContainerComposer
containerComposer) throws SQLException {
- Connection connection = getDataSource().getConnection();
- executeUpdateWithLog(connection, "insert into account(transaction_id,
balance) values (1,0), (2,100);");
+ try (Connection connection = getDataSource().getConnection()) {
+ executeUpdateWithLog(connection, "insert into
account(transaction_id, balance) values (1,0), (2,100);");
+ }
innerRun();
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/BroadcastTableTransactionTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/BroadcastTableTransactionTestCase.java
index 4e2beefb701..4f752361667 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/BroadcastTableTransactionTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/BroadcastTableTransactionTestCase.java
@@ -59,28 +59,31 @@ public final class BroadcastTableTransactionTestCase
extends BaseTransactionTest
}
private void init() throws SQLException {
- Connection connection = getDataSource().getConnection();
- executeWithLog(connection, "delete from t_address;");
- assertTableRowCount(connection, T_ADDRESS, 0);
+ try (Connection connection = getDataSource().getConnection()) {
+ executeWithLog(connection, "delete from t_address;");
+ assertTableRowCount(connection, T_ADDRESS, 0);
+ }
}
private void commit() throws SQLException {
- Connection connection = getDataSource().getConnection();
- connection.setAutoCommit(false);
- executeWithLog(connection, "delete from t_address;");
- assertTableRowCount(connection, T_ADDRESS, 0);
- executeWithLog(connection, "INSERT INTO t_address (id, code, address)
VALUES (1, '1', 'nanjing');");
- assertTableRowCount(connection, T_ADDRESS, 1);
- connection.commit();
+ try (Connection connection = getDataSource().getConnection()) {
+ connection.setAutoCommit(false);
+ executeWithLog(connection, "delete from t_address;");
+ assertTableRowCount(connection, T_ADDRESS, 0);
+ executeWithLog(connection, "INSERT INTO t_address (id, code,
address) VALUES (1, '1', 'nanjing');");
+ assertTableRowCount(connection, T_ADDRESS, 1);
+ connection.commit();
+ }
}
private void rollback() throws SQLException {
- Connection connection = getDataSource().getConnection();
- connection.setAutoCommit(false);
- executeWithLog(connection, "delete from t_address;");
- assertTableRowCount(connection, T_ADDRESS, 0);
- executeWithLog(connection, "INSERT INTO t_address (id, code, address)
VALUES (1, '1', 'nanjing');");
- assertTableRowCount(connection, T_ADDRESS, 1);
- connection.commit();
+ try (Connection connection = getDataSource().getConnection()) {
+ connection.setAutoCommit(false);
+ executeWithLog(connection, "delete from t_address;");
+ assertTableRowCount(connection, T_ADDRESS, 0);
+ executeWithLog(connection, "INSERT INTO t_address (id, code,
address) VALUES (1, '1', 'nanjing');");
+ assertTableRowCount(connection, T_ADDRESS, 1);
+ connection.commit();
+ }
}
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/ExceptionInTransactionTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/ExceptionInTransactionTestCase.java
index 96f378fbbd2..731ccf778f0 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/ExceptionInTransactionTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/ExceptionInTransactionTestCase.java
@@ -58,10 +58,13 @@ public final class ExceptionInTransactionTestCase extends
BaseTransactionTestCas
fail("It should fail here.");
} catch (final ArithmeticException ex) {
assertThat(ex.getMessage(), is("/ by zero"));
- } finally {
if (null != connection) {
connection.rollback();
}
+ } finally {
+ if (null != connection) {
+ connection.close();
+ }
}
Thread queryThread = new Thread(() -> {
try (Connection connection2 = getDataSource().getConnection()) {
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiTableCommitAndRollbackTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiTableCommitAndRollbackTestCase.java
index 170e64a42e3..df594e3e934 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiTableCommitAndRollbackTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/MultiTableCommitAndRollbackTestCase.java
@@ -47,36 +47,38 @@ public final class MultiTableCommitAndRollbackTestCase
extends BaseTransactionTe
}
private void assertRollback() throws SQLException {
- Connection connection = getDataSource().getConnection();
- connection.setAutoCommit(false);
- assertTableRowCount(connection, T_ORDER, 0);
- assertTableRowCount(connection, T_ORDER_ITEM, 0);
- executeSqlListWithLog(connection,
- "INSERT INTO t_order (order_id, user_id, status) VALUES (1, 1,
'1');",
- "INSERT INTO t_order (order_id, user_id, status) VALUES (2, 2,
'2');",
- "INSERT INTO t_order_item (item_id, order_id, user_id, status)
VALUES (1, 1, 1, '1');",
- "INSERT INTO t_order_item (item_id, order_id, user_id, status)
VALUES (2, 2, 2, '2');");
- assertTableRowCount(connection, T_ORDER, 2);
- assertTableRowCount(connection, T_ORDER_ITEM, 2);
- connection.rollback();
- assertTableRowCount(connection, T_ORDER, 0);
- assertTableRowCount(connection, T_ORDER_ITEM, 0);
+ try (Connection connection = getDataSource().getConnection()) {
+ connection.setAutoCommit(false);
+ assertTableRowCount(connection, T_ORDER, 0);
+ assertTableRowCount(connection, T_ORDER_ITEM, 0);
+ executeSqlListWithLog(connection,
+ "INSERT INTO t_order (order_id, user_id, status) VALUES
(1, 1, '1');",
+ "INSERT INTO t_order (order_id, user_id, status) VALUES
(2, 2, '2');",
+ "INSERT INTO t_order_item (item_id, order_id, user_id,
status) VALUES (1, 1, 1, '1');",
+ "INSERT INTO t_order_item (item_id, order_id, user_id,
status) VALUES (2, 2, 2, '2');");
+ assertTableRowCount(connection, T_ORDER, 2);
+ assertTableRowCount(connection, T_ORDER_ITEM, 2);
+ connection.rollback();
+ assertTableRowCount(connection, T_ORDER, 0);
+ assertTableRowCount(connection, T_ORDER_ITEM, 0);
+ }
}
private void assertCommit() throws SQLException {
- Connection connection = getDataSource().getConnection();
- connection.setAutoCommit(false);
- assertTableRowCount(connection, T_ORDER, 0);
- assertTableRowCount(connection, T_ORDER_ITEM, 0);
- executeSqlListWithLog(connection,
- "INSERT INTO t_order (order_id, user_id, status) VALUES (1, 1,
'1');",
- "INSERT INTO t_order (order_id, user_id, status) VALUES (2, 2,
'2');",
- "INSERT INTO t_order_item (item_id, order_id, user_id, status)
VALUES (1, 1, 1, '1');",
- "INSERT INTO t_order_item (item_id, order_id, user_id, status)
VALUES (2, 2, 2, '2');");
- assertTableRowCount(connection, T_ORDER, 2);
- assertTableRowCount(connection, T_ORDER_ITEM, 2);
- connection.commit();
- assertTableRowCount(connection, T_ORDER, 2);
- assertTableRowCount(connection, T_ORDER_ITEM, 2);
+ try (Connection connection = getDataSource().getConnection()) {
+ connection.setAutoCommit(false);
+ assertTableRowCount(connection, T_ORDER, 0);
+ assertTableRowCount(connection, T_ORDER_ITEM, 0);
+ executeSqlListWithLog(connection,
+ "INSERT INTO t_order (order_id, user_id, status) VALUES
(1, 1, '1');",
+ "INSERT INTO t_order (order_id, user_id, status) VALUES
(2, 2, '2');",
+ "INSERT INTO t_order_item (item_id, order_id, user_id,
status) VALUES (1, 1, 1, '1');",
+ "INSERT INTO t_order_item (item_id, order_id, user_id,
status) VALUES (2, 2, 2, '2');");
+ assertTableRowCount(connection, T_ORDER, 2);
+ assertTableRowCount(connection, T_ORDER_ITEM, 2);
+ connection.commit();
+ assertTableRowCount(connection, T_ORDER, 2);
+ assertTableRowCount(connection, T_ORDER_ITEM, 2);
+ }
}
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/SingleTableCommitAndRollbackTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/SingleTableCommitAndRollbackTestCase.java
index ba6a9d1d6a5..2d5cb408d2f 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/SingleTableCommitAndRollbackTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/commitrollback/SingleTableCommitAndRollbackTestCase.java
@@ -44,24 +44,26 @@ public final class SingleTableCommitAndRollbackTestCase
extends BaseTransactionT
}
private void assertRollback() throws SQLException {
- Connection connection = getDataSource().getConnection();
- connection.setAutoCommit(false);
- assertAccountRowCount(connection, 0);
- Statement statement = connection.createStatement();
- statement.execute("insert into account(id, balance, transaction_id)
values(1, 1, 1);");
- assertAccountRowCount(connection, 1);
- connection.rollback();
- assertAccountRowCount(connection, 0);
+ try (Connection connection = getDataSource().getConnection()) {
+ connection.setAutoCommit(false);
+ assertAccountRowCount(connection, 0);
+ Statement statement = connection.createStatement();
+ statement.execute("insert into account(id, balance,
transaction_id) values(1, 1, 1);");
+ assertAccountRowCount(connection, 1);
+ connection.rollback();
+ assertAccountRowCount(connection, 0);
+ }
}
private void assertCommit() throws SQLException {
- Connection connection = getDataSource().getConnection();
- connection.setAutoCommit(false);
- assertAccountRowCount(connection, 0);
- Statement statement = connection.createStatement();
- statement.execute("insert into account(id, balance, transaction_id)
values(1, 1, 1);");
- assertAccountRowCount(connection, 1);
- connection.commit();
- assertAccountRowCount(connection, 1);
+ try (Connection connection = getDataSource().getConnection()) {
+ connection.setAutoCommit(false);
+ assertAccountRowCount(connection, 0);
+ Statement statement = connection.createStatement();
+ statement.execute("insert into account(id, balance,
transaction_id) values(1, 1, 1);");
+ assertAccountRowCount(connection, 1);
+ connection.commit();
+ assertAccountRowCount(connection, 1);
+ }
}
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/cursor/OpenGaussCursorTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/cursor/OpenGaussCursorTestCase.java
index 659540ce4eb..9e12d9fda63 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/cursor/OpenGaussCursorTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/cursor/OpenGaussCursorTestCase.java
@@ -57,20 +57,22 @@ public final class OpenGaussCursorTestCase extends
BaseTransactionTestCase {
@Override
protected void beforeTest() throws SQLException {
- Connection connection = getDataSource().getConnection();
- assertTableRowCount(connection, "t_order", 4);
+ try (Connection connection = getDataSource().getConnection()) {
+ assertTableRowCount(connection, "t_order", 4);
+ }
}
@Override
public void executeTest(final TransactionContainerComposer
containerComposer) throws SQLException {
- Connection connection = getDataSource().getConnection();
- singleTableCursorTest(connection);
- singleTableCursorOrderByTest(connection);
- broadcastTableCursorTest(connection);
- broadcastTableCursorTest2(connection);
- broadcastAndSingleTablesCursorTest(connection);
- broadcastAndSingleTablesCursorTest2(connection);
- viewCursorTest(connection);
+ try (Connection connection = getDataSource().getConnection()) {
+ singleTableCursorTest(connection);
+ singleTableCursorOrderByTest(connection);
+ broadcastTableCursorTest(connection);
+ broadcastTableCursorTest2(connection);
+ broadcastAndSingleTablesCursorTest(connection);
+ broadcastAndSingleTablesCursorTest2(connection);
+ viewCursorTest(connection);
+ }
}
private void singleTableCursorTest(final Connection connection) throws
SQLException {
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/nested/NestedTransactionTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/nested/NestedTransactionTestCase.java
index b0afdc06402..768a5f0d99e 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/nested/NestedTransactionTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/nested/NestedTransactionTestCase.java
@@ -43,20 +43,22 @@ public class NestedTransactionTestCase extends
BaseTransactionTestCase {
@Override
protected void executeTest(final TransactionContainerComposer
containerComposer) throws SQLException {
- ShardingSphereConnection connection = (ShardingSphereConnection)
getDataSource().getConnection();
- assertFalse(connection.isHoldTransaction());
- connection.setAutoCommit(false);
- assertTrue(connection.isHoldTransaction());
- requiresNewTransaction();
- assertTrue(connection.isHoldTransaction());
- connection.commit();
+ try (ShardingSphereConnection connection = (ShardingSphereConnection)
getDataSource().getConnection()) {
+ assertFalse(connection.isHoldTransaction());
+ connection.setAutoCommit(false);
+ assertTrue(connection.isHoldTransaction());
+ requiresNewTransaction();
+ assertTrue(connection.isHoldTransaction());
+ connection.commit();
+ }
}
private void requiresNewTransaction() throws SQLException {
- ShardingSphereConnection connection = (ShardingSphereConnection)
getDataSource().getConnection();
- assertFalse(connection.isHoldTransaction());
- connection.setAutoCommit(false);
- assertTrue(connection.isHoldTransaction());
- connection.commit();
+ try (ShardingSphereConnection connection = (ShardingSphereConnection)
getDataSource().getConnection()) {
+ assertFalse(connection.isHoldTransaction());
+ connection.setAutoCommit(false);
+ assertTrue(connection.isHoldTransaction());
+ connection.commit();
+ }
}
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/MySQLSetReadOnlyTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/MySQLSetReadOnlyTestCase.java
index 1043ef62930..66708cea375 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/MySQLSetReadOnlyTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/MySQLSetReadOnlyTestCase.java
@@ -47,12 +47,12 @@ public final class MySQLSetReadOnlyTestCase extends
SetReadOnlyTestCase {
}
private void assertSetReadOnly() throws SQLException {
- Connection connection1 = getDataSource().getConnection();
- executeUpdateWithLog(connection1, "insert into account(id, balance)
values (1, 0), (2, 100);");
- Connection connection2 = getDataSource().getConnection();
- connection2.setReadOnly(true);
- assertQueryBalance(connection2);
- try {
+ try (Connection connection1 = getDataSource().getConnection()) {
+ executeUpdateWithLog(connection1, "insert into account(id,
balance) values (1, 0), (2, 100);");
+ }
+ try (Connection connection2 = getDataSource().getConnection()) {
+ connection2.setReadOnly(true);
+ assertQueryBalance(connection2);
executeWithLog(connection2, "update account set balance = 100
where id = 2;");
fail("Update ran successfully, should failed.");
} catch (final SQLException ex) {
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/PostgreSQLSetReadOnlyTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/PostgreSQLSetReadOnlyTestCase.java
index d1b550798cd..cb425907c93 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/PostgreSQLSetReadOnlyTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/PostgreSQLSetReadOnlyTestCase.java
@@ -46,12 +46,12 @@ public final class PostgreSQLSetReadOnlyTestCase extends
SetReadOnlyTestCase {
}
private void assertSetReadOnly() throws SQLException {
- Connection connection1 = getDataSource().getConnection();
- executeUpdateWithLog(connection1, "insert into account(id, balance)
values (1, 0), (2, 100);");
- Connection connection2 = getDataSource().getConnection();
- connection2.setReadOnly(true);
- assertQueryBalance(connection2);
- try {
+ try (Connection connection1 = getDataSource().getConnection()) {
+ executeUpdateWithLog(connection1, "insert into account(id,
balance) values (1, 0), (2, 100);");
+ }
+ try (Connection connection2 = getDataSource().getConnection()) {
+ connection2.setReadOnly(true);
+ assertQueryBalance(connection2);
executeWithLog(connection2, "update account set balance = 100
where id = 2;");
log.info("Using the driver of postgresql:42.4.1 expect to update
successfully.");
} catch (final SQLException ex) {
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/SetReadOnlyTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/SetReadOnlyTestCase.java
index 13ee628c0c0..2e8896a9b27 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/SetReadOnlyTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/readonly/SetReadOnlyTestCase.java
@@ -39,13 +39,14 @@ public abstract class SetReadOnlyTestCase extends
BaseTransactionTestCase {
}
void assertNotSetReadOnly() throws SQLException {
- Connection connection = getDataSource().getConnection();
- assertQueryBalance(connection);
- executeUpdateWithLog(connection, "update account set balance = 101
where id = 2;");
- ResultSet resultSet = executeQueryWithLog(connection, "select * from
account where id = 2");
- assertTrue(resultSet.next());
- int balanceResult = resultSet.getInt("balance");
- assertThat(String.format("Balance is %s, should be 101.",
balanceResult), balanceResult, is(101));
+ try (Connection connection = getDataSource().getConnection()) {
+ assertQueryBalance(connection);
+ executeUpdateWithLog(connection, "update account set balance = 101
where id = 2;");
+ ResultSet resultSet = executeQueryWithLog(connection, "select *
from account where id = 2");
+ assertTrue(resultSet.next());
+ int balanceResult = resultSet.getInt("balance");
+ assertThat(String.format("Balance is %s, should be 101.",
balanceResult), balanceResult, is(101));
+ }
}
void assertQueryBalance(final Connection connection) throws SQLException {
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/BaseSavePointTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/BaseSavePointTestCase.java
index 3e6eaa181aa..4bc354cb510 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/BaseSavePointTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/BaseSavePointTestCase.java
@@ -35,32 +35,34 @@ public abstract class BaseSavePointTestCase extends
BaseTransactionTestCase {
}
void assertRollback2Savepoint() throws SQLException {
- Connection connection = getDataSource().getConnection();
- connection.setAutoCommit(false);
- assertAccountRowCount(connection, 0);
- executeWithLog(connection, "insert into account(id, balance,
transaction_id) values(1, 1, 1);");
- final Savepoint savepoint = connection.setSavepoint("point1");
- assertAccountRowCount(connection, 1);
- executeWithLog(connection, "insert into account(id, balance,
transaction_id) values(2, 2, 2);");
- assertAccountRowCount(connection, 2);
- connection.rollback(savepoint);
- assertAccountRowCount(connection, 1);
- connection.commit();
- assertAccountRowCount(connection, 1);
+ try (Connection connection = getDataSource().getConnection()) {
+ connection.setAutoCommit(false);
+ assertAccountRowCount(connection, 0);
+ executeWithLog(connection, "insert into account(id, balance,
transaction_id) values(1, 1, 1);");
+ final Savepoint savepoint = connection.setSavepoint("point1");
+ assertAccountRowCount(connection, 1);
+ executeWithLog(connection, "insert into account(id, balance,
transaction_id) values(2, 2, 2);");
+ assertAccountRowCount(connection, 2);
+ connection.rollback(savepoint);
+ assertAccountRowCount(connection, 1);
+ connection.commit();
+ assertAccountRowCount(connection, 1);
+ }
}
void assertReleaseSavepoint() throws SQLException {
- Connection connection = getDataSource().getConnection();
- connection.setAutoCommit(false);
- assertAccountRowCount(connection, 1);
- executeWithLog(connection, "insert into account(id, balance,
transaction_id) values(2, 2, 2);");
- final Savepoint savepoint = connection.setSavepoint("point2");
- assertAccountRowCount(connection, 2);
- executeWithLog(connection, "insert into account(id, balance,
transaction_id) values(3, 3, 3);");
- assertAccountRowCount(connection, 3);
- connection.releaseSavepoint(savepoint);
- assertAccountRowCount(connection, 3);
- connection.commit();
- assertAccountRowCount(connection, 3);
+ try (Connection connection = getDataSource().getConnection()) {
+ connection.setAutoCommit(false);
+ assertAccountRowCount(connection, 1);
+ executeWithLog(connection, "insert into account(id, balance,
transaction_id) values(2, 2, 2);");
+ final Savepoint savepoint = connection.setSavepoint("point2");
+ assertAccountRowCount(connection, 2);
+ executeWithLog(connection, "insert into account(id, balance,
transaction_id) values(3, 3, 3);");
+ assertAccountRowCount(connection, 3);
+ connection.releaseSavepoint(savepoint);
+ assertAccountRowCount(connection, 3);
+ connection.commit();
+ assertAccountRowCount(connection, 3);
+ }
}
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/OpenGaussSavePointTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/OpenGaussSavePointTestCase.java
index 55ab0ff036a..cddd2fda1a1 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/OpenGaussSavePointTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/OpenGaussSavePointTestCase.java
@@ -50,24 +50,25 @@ public final class OpenGaussSavePointTestCase extends
BaseSavePointTestCase {
}
private void assertErrors() throws SQLException {
- Connection connection = getDataSource().getConnection();
- try {
- connection.setSavepoint("point");
- fail("Expect exception, but no exception report.");
- } catch (final SQLException ex) {
- assertThat(ex.getMessage(), is("Cannot establish a savepoint in
auto-commit mode."));
- }
- try {
- connection.rollback(new PSQLSavepoint("point1"));
- fail("Expect exception, but no exception report.");
- } catch (final SQLException ex) {
- assertTrue(ex.getMessage().endsWith("ERROR: ROLLBACK TO SAVEPOINT
can only be used in transaction blocks"));
- }
- try {
- connection.releaseSavepoint(new PSQLSavepoint("point1"));
- fail("Expect exception, but no exception report.");
- } catch (final SQLException ex) {
- assertTrue(ex.getMessage().endsWith("ERROR: RELEASE SAVEPOINT can
only be used in transaction blocks"));
+ try (Connection connection = getDataSource().getConnection()) {
+ try {
+ connection.setSavepoint("point");
+ fail("Expect exception, but no exception report.");
+ } catch (final SQLException ex) {
+ assertThat(ex.getMessage(), is("Cannot establish a savepoint
in auto-commit mode."));
+ }
+ try {
+ connection.rollback(new PSQLSavepoint("point1"));
+ fail("Expect exception, but no exception report.");
+ } catch (final SQLException ex) {
+ assertTrue(ex.getMessage().endsWith("ERROR: ROLLBACK TO
SAVEPOINT can only be used in transaction blocks"));
+ }
+ try {
+ connection.releaseSavepoint(new PSQLSavepoint("point1"));
+ fail("Expect exception, but no exception report.");
+ } catch (final SQLException ex) {
+ assertTrue(ex.getMessage().endsWith("ERROR: RELEASE SAVEPOINT
can only be used in transaction blocks"));
+ }
}
}
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/PostgreSQLSavePointTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/PostgreSQLSavePointTestCase.java
index 86f2f54e87a..2013c8c9062 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/PostgreSQLSavePointTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/savepoint/PostgreSQLSavePointTestCase.java
@@ -52,26 +52,27 @@ public final class PostgreSQLSavePointTestCase extends
BaseSavePointTestCase {
@SneakyThrows(SQLException.class)
private void assertErrors() {
- Connection connection = getDataSource().getConnection();
- try {
- connection.setSavepoint("point");
- fail("Expect exception, but no exception report.");
- } catch (final SQLException ex) {
- assertThat(ex.getMessage(), is("Savepoint can only be used in
transaction blocks."));
- }
- try {
- connection.rollback(new PSQLSavepoint("point1"));
- fail("Expect exception, but no exception report.");
- } catch (final SQLException ex) {
- // TODO can not run to get the correct result in JDBC mode.
- assertTrue(ex.getMessage().endsWith("ERROR: ROLLBACK TO SAVEPOINT
can only be used in transaction blocks"));
- }
- try {
- connection.releaseSavepoint(new PSQLSavepoint("point1"));
- fail("Expect exception, but no exception report.");
- } catch (final SQLException ex) {
- // TODO can not run to get the correct result in JDBC mode.
- assertTrue(ex.getMessage().endsWith("ERROR: RELEASE SAVEPOINT can
only be used in transaction blocks"));
+ try (Connection connection = getDataSource().getConnection()) {
+ try {
+ connection.setSavepoint("point");
+ fail("Expect exception, but no exception report.");
+ } catch (final SQLException ex) {
+ assertThat(ex.getMessage(), is("Savepoint can only be used in
transaction blocks."));
+ }
+ try {
+ connection.rollback(new PSQLSavepoint("point1"));
+ fail("Expect exception, but no exception report.");
+ } catch (final SQLException ex) {
+ // TODO can not run to get the correct result in JDBC mode.
+ assertTrue(ex.getMessage().endsWith("ERROR: ROLLBACK TO
SAVEPOINT can only be used in transaction blocks"));
+ }
+ try {
+ connection.releaseSavepoint(new PSQLSavepoint("point1"));
+ fail("Expect exception, but no exception report.");
+ } catch (final SQLException ex) {
+ // TODO can not run to get the correct result in JDBC mode.
+ assertTrue(ex.getMessage().endsWith("ERROR: RELEASE SAVEPOINT
can only be used in transaction blocks"));
+ }
}
}
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/MySQLLocalTruncateTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/MySQLLocalTruncateTestCase.java
index 81d657cb1c7..ec52db3d729 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/MySQLLocalTruncateTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/MySQLLocalTruncateTestCase.java
@@ -46,33 +46,33 @@ public final class MySQLLocalTruncateTestCase extends
BaseTransactionTestCase {
private void assertTruncateRollback() throws SQLException {
prepare();
- Connection connection = getDataSource().getConnection();
- connection.setAutoCommit(false);
- assertAccountRowCount(connection, 8);
- executeWithLog(connection, "truncate account;");
- assertAccountRowCount(connection, 0);
- connection.rollback();
- // Expected truncate operation cannot be rolled back in MySQL local
transaction
- assertAccountRowCount(connection, 0);
- connection.close();
+ try (Connection connection = getDataSource().getConnection()) {
+ connection.setAutoCommit(false);
+ assertAccountRowCount(connection, 8);
+ executeWithLog(connection, "truncate account;");
+ assertAccountRowCount(connection, 0);
+ connection.rollback();
+ // Expected truncate operation cannot be rolled back in MySQL
local transaction
+ assertAccountRowCount(connection, 0);
+ }
}
private void assertTruncateCommit() throws SQLException {
prepare();
- Connection connection = getDataSource().getConnection();
- connection.setAutoCommit(false);
- assertAccountRowCount(connection, 8);
- executeWithLog(connection, "truncate account;");
- assertAccountRowCount(connection, 0);
- connection.commit();
- assertAccountRowCount(connection, 0);
- connection.close();
+ try (Connection connection = getDataSource().getConnection()) {
+ connection.setAutoCommit(false);
+ assertAccountRowCount(connection, 8);
+ executeWithLog(connection, "truncate account;");
+ assertAccountRowCount(connection, 0);
+ connection.commit();
+ assertAccountRowCount(connection, 0);
+ }
}
private void prepare() throws SQLException {
- Connection connection = getDataSource().getConnection();
- executeWithLog(connection, "delete from account;");
- executeWithLog(connection, "insert into account(id, balance,
transaction_id) values(1, 1, 1),(2, 2, 2),(3, 3, 3),(4, 4, 4),(5, 5, 5),(6, 6,
6),(7, 7, 7),(8, 8, 8);");
- connection.close();
+ try (Connection connection = getDataSource().getConnection()) {
+ executeWithLog(connection, "delete from account;");
+ executeWithLog(connection, "insert into account(id, balance,
transaction_id) values(1, 1, 1),(2, 2, 2),(3, 3, 3),(4, 4, 4),(5, 5, 5),(6, 6,
6),(7, 7, 7),(8, 8, 8);");
+ }
}
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/MySQLXATruncateTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/MySQLXATruncateTestCase.java
index bb889e59b6c..5ad018bc7c3 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/MySQLXATruncateTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/MySQLXATruncateTestCase.java
@@ -50,10 +50,10 @@ public final class MySQLXATruncateTestCase extends
BaseTransactionTestCase {
}
private void prepare() throws SQLException {
- Connection connection = getDataSource().getConnection();
- executeWithLog(connection, "delete from account;");
- executeWithLog(connection, "insert into account(id, balance,
transaction_id) values(1, 1, 1),(2, 2, 2),(3, 3, 3),(4, 4, 4),(5, 5, 5),(6, 6,
6),(7, 7, 7),(8, 8, 8);");
- connection.close();
+ try (Connection connection = getDataSource().getConnection()) {
+ executeWithLog(connection, "delete from account;");
+ executeWithLog(connection, "insert into account(id, balance,
transaction_id) values(1, 1, 1),(2, 2, 2),(3, 3, 3),(4, 4, 4),(5, 5, 5),(6, 6,
6),(7, 7, 7),(8, 8, 8);");
+ }
}
@Override
@@ -63,19 +63,19 @@ public final class MySQLXATruncateTestCase extends
BaseTransactionTestCase {
private void assertTruncateInMySQLXATransaction() throws SQLException {
// TODO This test case may cause bad effects to other test cases in
JDBC adapter
- Connection connection = getDataSource().getConnection();
- connection.setAutoCommit(false);
- assertAccountRowCount(connection, 8);
- try {
- connection.createStatement().execute("truncate account;");
- fail("Expect exception, but no exception report.");
- } catch (final TableModifyInTransactionException ex) {
- log.info("Exception for expected in Proxy: {}", ex.getMessage());
- } catch (final SQLException ex) {
- log.info("Exception for expected in JDBC: {}", ex.getMessage());
- } finally {
- connection.rollback();
- connection.close();
+ try (Connection connection = getDataSource().getConnection()) {
+ connection.setAutoCommit(false);
+ assertAccountRowCount(connection, 8);
+ try {
+ connection.createStatement().execute("truncate account;");
+ fail("Expect exception, but no exception report.");
+ } catch (final TableModifyInTransactionException ex) {
+ log.info("Exception for expected in Proxy: {}",
ex.getMessage());
+ } catch (final SQLException ex) {
+ log.info("Exception for expected in JDBC: {}",
ex.getMessage());
+ } finally {
+ connection.rollback();
+ }
}
}
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/PostgreSQLAndOpenGaussTruncateTestCase.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/PostgreSQLAndOpenGaussTruncateTestCase.java
index 007c842ecb4..f855c0c2b4f 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/PostgreSQLAndOpenGaussTruncateTestCase.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/truncate/PostgreSQLAndOpenGaussTruncateTestCase.java
@@ -45,35 +45,35 @@ public final class PostgreSQLAndOpenGaussTruncateTestCase
extends BaseTransactio
private void assertTruncateRollback() throws SQLException {
prepare();
- Connection connection = getDataSource().getConnection();
- connection.setAutoCommit(false);
- assertAccountRowCount(connection, 8);
- executeWithLog(connection, "truncate account;");
- assertAccountRowCount(connection, 0);
- connection.rollback();
- // Expected truncate operation can be rolled back in PostgreSQL &
OpenGauss
- assertAccountRowCount(connection, 8);
- connection.close();
+ try (Connection connection = getDataSource().getConnection()) {
+ connection.setAutoCommit(false);
+ assertAccountRowCount(connection, 8);
+ executeWithLog(connection, "truncate account;");
+ assertAccountRowCount(connection, 0);
+ connection.rollback();
+ // Expected truncate operation can be rolled back in PostgreSQL &
OpenGauss
+ assertAccountRowCount(connection, 8);
+ }
}
private void assertTruncateCommit() throws SQLException {
prepare();
- Connection connection = getDataSource().getConnection();
- connection.setAutoCommit(false);
- assertAccountRowCount(connection, 8);
- executeWithLog(connection, "truncate account;");
- assertAccountRowCount(connection, 0);
- connection.commit();
- assertAccountRowCount(connection, 0);
- connection.close();
+ try (Connection connection = getDataSource().getConnection()) {
+ connection.setAutoCommit(false);
+ assertAccountRowCount(connection, 8);
+ executeWithLog(connection, "truncate account;");
+ assertAccountRowCount(connection, 0);
+ connection.commit();
+ assertAccountRowCount(connection, 0);
+ }
}
private void prepare() throws SQLException {
- Connection connection = getDataSource().getConnection();
- connection.setAutoCommit(false);
- executeWithLog(connection, "delete from account;");
- executeWithLog(connection, "insert into account(id, balance,
transaction_id) values(1, 1, 1),(2, 2, 2),(3, 3, 3),(4, 4, 4),(5, 5, 5),(6, 6,
6),(7, 7, 7),(8, 8, 8);");
- connection.commit();
- connection.close();
+ try (Connection connection = getDataSource().getConnection()) {
+ connection.setAutoCommit(false);
+ executeWithLog(connection, "delete from account;");
+ executeWithLog(connection, "insert into account(id, balance,
transaction_id) values(1, 1, 1),(2, 2, 2),(3, 3, 3),(4, 4, 4),(5, 5, 5),(6, 6,
6),(7, 7, 7),(8, 8, 8);");
+ connection.commit();
+ }
}
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/base/TransactionBaseE2EIT.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/base/TransactionBaseE2EIT.java
index 0ca02237d75..c13bf821c4b 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/base/TransactionBaseE2EIT.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/base/TransactionBaseE2EIT.java
@@ -194,22 +194,24 @@ public abstract class TransactionBaseE2EIT {
}
private void alterLocalTransactionRule(final TransactionContainerComposer
containerComposer) throws SQLException {
- Connection connection =
containerComposer.getDataSource().getConnection();
- if (isExpectedTransactionRule(connection, TransactionType.LOCAL, "")) {
- return;
+ try (Connection connection =
containerComposer.getDataSource().getConnection()) {
+ if (isExpectedTransactionRule(connection, TransactionType.LOCAL,
"")) {
+ return;
+ }
+ String alterLocalTransactionRule =
commonSQL.getAlterLocalTransactionRule();
+ executeWithLog(connection, alterLocalTransactionRule);
}
- String alterLocalTransactionRule =
commonSQL.getAlterLocalTransactionRule();
- executeWithLog(connection, alterLocalTransactionRule);
assertTrue(waitExpectedTransactionRule(TransactionType.LOCAL, "",
containerComposer));
}
private void alterXaTransactionRule(final String providerType, final
TransactionContainerComposer containerComposer) throws SQLException {
- Connection connection =
containerComposer.getDataSource().getConnection();
- if (isExpectedTransactionRule(connection, TransactionType.XA,
providerType)) {
- return;
+ try (Connection connection =
containerComposer.getDataSource().getConnection()) {
+ if (isExpectedTransactionRule(connection, TransactionType.XA,
providerType)) {
+ return;
+ }
+ String alterXaTransactionRule =
commonSQL.getAlterXATransactionRule().replace("${providerType}", providerType);
+ executeWithLog(connection, alterXaTransactionRule);
}
- String alterXaTransactionRule =
commonSQL.getAlterXATransactionRule().replace("${providerType}", providerType);
- executeWithLog(connection, alterXaTransactionRule);
assertTrue(waitExpectedTransactionRule(TransactionType.XA,
providerType, containerComposer));
}
@@ -221,16 +223,17 @@ public abstract class TransactionBaseE2EIT {
private boolean waitExpectedTransactionRule(final TransactionType
expectedTransType, final String expectedProviderType, final
TransactionContainerComposer containerComposer) throws SQLException {
ThreadUtil.sleep(5, TimeUnit.SECONDS);
- Connection connection =
containerComposer.getDataSource().getConnection();
- int waitTimes = 0;
- do {
- if (isExpectedTransactionRule(connection, expectedTransType,
expectedProviderType)) {
- return true;
- }
- ThreadUtil.sleep(2, TimeUnit.SECONDS);
- waitTimes++;
- } while (waitTimes <= 3);
- return false;
+ try (Connection connection =
containerComposer.getDataSource().getConnection()) {
+ int waitTimes = 0;
+ do {
+ if (isExpectedTransactionRule(connection, expectedTransType,
expectedProviderType)) {
+ return true;
+ }
+ ThreadUtil.sleep(2, TimeUnit.SECONDS);
+ waitTimes++;
+ } while (waitTimes <= 3);
+ return false;
+ }
}
private Map<String, String> executeShowTransactionRule(final Connection
connection) throws SQLException {
@@ -296,22 +299,23 @@ public abstract class TransactionBaseE2EIT {
}
private int countWithLog(final String sql, final
TransactionContainerComposer containerComposer) throws SQLException {
- Connection connection =
containerComposer.getDataSource().getConnection();
- int retryNumber = 0;
- while (retryNumber <= 3) {
- try {
- Statement statement = connection.createStatement();
- ResultSet resultSet = statement.executeQuery(sql);
- int result = 0;
- while (resultSet.next()) {
- result++;
+ try (Connection connection =
containerComposer.getDataSource().getConnection()) {
+ int retryNumber = 0;
+ while (retryNumber <= 3) {
+ try {
+ Statement statement = connection.createStatement();
+ ResultSet resultSet = statement.executeQuery(sql);
+ int result = 0;
+ while (resultSet.next()) {
+ result++;
+ }
+ return result;
+ } catch (final SQLException ex) {
+ log.error("Data access error.", ex);
}
- return result;
- } catch (final SQLException ex) {
- log.error("Data access error.", ex);
+ ThreadUtil.sleep(2, TimeUnit.SECONDS);
+ retryNumber++;
}
- ThreadUtil.sleep(2, TimeUnit.SECONDS);
- retryNumber++;
}
throw new RuntimeException("Can't get result from proxy.");
}
diff --git
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/base/TransactionContainerComposer.java
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/base/TransactionContainerComposer.java
index d1381bc60fd..500c98a8684 100644
---
a/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/base/TransactionContainerComposer.java
+++
b/test/e2e/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/engine/base/TransactionContainerComposer.java
@@ -59,7 +59,7 @@ public final class TransactionContainerComposer implements
AutoCloseable {
return result;
}
- boolean isProxyAdapter(final TransactionTestParameter testParam) {
+ private boolean isProxyAdapter(final TransactionTestParameter testParam) {
return
AdapterType.PROXY.getValue().equalsIgnoreCase(testParam.getAdapter());
}