From 004671d826d7d682849dec07aafb427578792b01 Mon Sep 17 00:00:00 2001 From: Taeho Kim <dittos@gmail.com> Date: Mon, 4 Nov 2024 04:18:04 +0900 Subject: [PATCH] Don't clear isCommitStateDirty flag in setReadOnly (#1842) When autoCommit is false, if setReadOnly is called after some queries, then closing the connection leads to dirty (transaction opened) connection being reused. --- src/main/java/com/zaxxer/hikari/pool/ProxyConnection.java | 1 - src/test/java/com/zaxxer/hikari/pool/ConnectionStateTest.java | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/zaxxer/hikari/pool/ProxyConnection.java b/src/main/java/com/zaxxer/hikari/pool/ProxyConnection.java index 81ae4fd3..f064f9c7 100644 --- a/src/main/java/com/zaxxer/hikari/pool/ProxyConnection.java +++ b/src/main/java/com/zaxxer/hikari/pool/ProxyConnection.java @@ -430,7 +430,6 @@ public abstract class ProxyConnection implements Connection { delegate.setReadOnly(readOnly); isReadOnly = readOnly; - isCommitStateDirty = false; dirtyBits |= DIRTY_BIT_READONLY; } diff --git a/src/test/java/com/zaxxer/hikari/pool/ConnectionStateTest.java b/src/test/java/com/zaxxer/hikari/pool/ConnectionStateTest.java index 5599bee4..b2da043b 100644 --- a/src/test/java/com/zaxxer/hikari/pool/ConnectionStateTest.java +++ b/src/test/java/com/zaxxer/hikari/pool/ConnectionStateTest.java @@ -164,6 +164,9 @@ public class ConnectionStateTest resultSet.updateRow(); assertTrue(TestElf.getConnectionCommitDirtyState(connection)); + + connection.setReadOnly(!connection.isReadOnly()); + assertTrue(TestElf.getConnectionCommitDirtyState(connection)); } } }