From 95d0e2494f8b1b834c90fcb549bb97f3cefe5cd3 Mon Sep 17 00:00:00 2001 From: Brett Wooldridge Date: Thu, 6 Nov 2014 18:51:32 +0900 Subject: [PATCH] Auto-commit init SQL (was broken after previous code re-ordering) --- .../src/main/java/com/zaxxer/hikari/pool/HikariPool.java | 4 ++-- .../src/main/java/com/zaxxer/hikari/util/PoolUtilities.java | 6 ++++-- .../src/main/java/com/zaxxer/hikari/pool/HikariPool.java | 4 ++-- .../src/main/java/com/zaxxer/hikari/util/PoolUtilities.java | 6 ++++-- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/hikaricp-java6/src/main/java/com/zaxxer/hikari/pool/HikariPool.java b/hikaricp-java6/src/main/java/com/zaxxer/hikari/pool/HikariPool.java index 364b6243..984adb3f 100644 --- a/hikaricp-java6/src/main/java/com/zaxxer/hikari/pool/HikariPool.java +++ b/hikaricp-java6/src/main/java/com/zaxxer/hikari/pool/HikariPool.java @@ -25,7 +25,7 @@ import static com.zaxxer.hikari.util.PoolUtilities.IS_JAVA7; import static com.zaxxer.hikari.util.PoolUtilities.createInstance; import static com.zaxxer.hikari.util.PoolUtilities.createThreadPoolExecutor; import static com.zaxxer.hikari.util.PoolUtilities.elapsedTimeMs; -import static com.zaxxer.hikari.util.PoolUtilities.executeSqlAutoCommit; +import static com.zaxxer.hikari.util.PoolUtilities.executeSql; import static com.zaxxer.hikari.util.PoolUtilities.getTransactionIsolation; import static com.zaxxer.hikari.util.PoolUtilities.initializeDataSource; import static com.zaxxer.hikari.util.PoolUtilities.isJdbc40Compliant; @@ -429,7 +429,7 @@ public final class HikariPool implements HikariPoolMBean, IBagStateListener setupConnection(connection, isAutoCommit, isReadOnly, transactionIsolation, catalog); connectionCustomizer.customize(connection); - executeSqlAutoCommit(connection, configuration.getConnectionInitSql()); + executeSql(connection, configuration.getConnectionInitSql(), isAutoCommit); setNetworkTimeout(houseKeepingExecutorService, connection, originalTimeout, isUseNetworkTimeout); connectionBag.add(new PoolBagEntry(connection, configuration.getMaxLifetime())); diff --git a/hikaricp-java6/src/main/java/com/zaxxer/hikari/util/PoolUtilities.java b/hikaricp-java6/src/main/java/com/zaxxer/hikari/util/PoolUtilities.java index 56cf3d6d..597feeb8 100644 --- a/hikaricp-java6/src/main/java/com/zaxxer/hikari/util/PoolUtilities.java +++ b/hikaricp-java6/src/main/java/com/zaxxer/hikari/util/PoolUtilities.java @@ -75,13 +75,15 @@ public final class PoolUtilities * @param sql the SQL to execute * @throws SQLException throws if the init SQL execution fails */ - public static void executeSqlAutoCommit(final Connection connection, final String sql) throws SQLException + public static void executeSql(final Connection connection, final String sql, final boolean isAutoCommit) throws SQLException { if (sql != null) { - connection.setAutoCommit(true); Statement statement = connection.createStatement(); try { statement.execute(sql); + if (!isAutoCommit) { + connection.commit(); + } } finally { statement.close(); diff --git a/hikaricp/src/main/java/com/zaxxer/hikari/pool/HikariPool.java b/hikaricp/src/main/java/com/zaxxer/hikari/pool/HikariPool.java index 4982fb46..1087ad40 100644 --- a/hikaricp/src/main/java/com/zaxxer/hikari/pool/HikariPool.java +++ b/hikaricp/src/main/java/com/zaxxer/hikari/pool/HikariPool.java @@ -24,7 +24,7 @@ import static com.zaxxer.hikari.util.ConcurrentBag.STATE_REMOVED; import static com.zaxxer.hikari.util.PoolUtilities.createInstance; import static com.zaxxer.hikari.util.PoolUtilities.createThreadPoolExecutor; import static com.zaxxer.hikari.util.PoolUtilities.elapsedTimeMs; -import static com.zaxxer.hikari.util.PoolUtilities.executeSqlAutoCommit; +import static com.zaxxer.hikari.util.PoolUtilities.executeSql; import static com.zaxxer.hikari.util.PoolUtilities.getTransactionIsolation; import static com.zaxxer.hikari.util.PoolUtilities.initializeDataSource; import static com.zaxxer.hikari.util.PoolUtilities.isJdbc40Compliant; @@ -412,7 +412,7 @@ public final class HikariPool implements HikariPoolMBean, IBagStateListener setupConnection(connection, isAutoCommit, isReadOnly, transactionIsolation, catalog); connectionCustomizer.customize(connection); - executeSqlAutoCommit(connection, configuration.getConnectionInitSql()); + executeSql(connection, configuration.getConnectionInitSql(), isAutoCommit); setNetworkTimeout(houseKeepingExecutorService, connection, originalTimeout, isUseNetworkTimeout); connectionBag.add(new PoolBagEntry(connection, configuration.getMaxLifetime())); diff --git a/hikaricp/src/main/java/com/zaxxer/hikari/util/PoolUtilities.java b/hikaricp/src/main/java/com/zaxxer/hikari/util/PoolUtilities.java index bf15a428..b10058c6 100644 --- a/hikaricp/src/main/java/com/zaxxer/hikari/util/PoolUtilities.java +++ b/hikaricp/src/main/java/com/zaxxer/hikari/util/PoolUtilities.java @@ -61,12 +61,14 @@ public final class PoolUtilities * @param sql the SQL to execute * @throws SQLException throws if the init SQL execution fails */ - public static void executeSqlAutoCommit(final Connection connection, final String sql) throws SQLException + public static void executeSql(final Connection connection, final String sql, final boolean isAutoCommit) throws SQLException { if (sql != null) { - connection.setAutoCommit(true); try (Statement statement = connection.createStatement()) { statement.execute(sql); + if (!isAutoCommit) { + connection.commit(); + } } } }