diff --git a/src/main/java/com/alibaba/druid/pool/PoolableConnection.java b/src/main/java/com/alibaba/druid/pool/PoolableConnection.java index a47052371b..52045044cd 100644 --- a/src/main/java/com/alibaba/druid/pool/PoolableConnection.java +++ b/src/main/java/com/alibaba/druid/pool/PoolableConnection.java @@ -546,17 +546,23 @@ public class PoolableConnection implements PooledConnection, Connection { checkOpen(); try { - if ((!autoCommit) && conn.getAutoCommit()) { - DruidAbstractDataSource dataSource = holder.getDataSource(); - dataSource.incrementStartTransactionCount(); - transactionInfo = new TransactionInfo(dataSource.createTransactionId()); - } - conn.setAutoCommit(autoCommit); } catch (SQLException ex) { handleException(ex); } } + + protected void transactionRecord(String sql) throws SQLException { + if (transactionInfo == null && (!conn.getAutoCommit())) { + DruidAbstractDataSource dataSource = holder.getDataSource(); + dataSource.incrementStartTransactionCount(); + transactionInfo = new TransactionInfo(dataSource.createTransactionId()); + } + + if (transactionInfo != null) { + transactionInfo.getSqlList().add(sql); + } + } @Override public boolean getAutoCommit() throws SQLException { diff --git a/src/main/java/com/alibaba/druid/pool/PoolableStatement.java b/src/main/java/com/alibaba/druid/pool/PoolableStatement.java index 9f7be3f324..c8a0baef55 100644 --- a/src/main/java/com/alibaba/druid/pool/PoolableStatement.java +++ b/src/main/java/com/alibaba/druid/pool/PoolableStatement.java @@ -98,10 +98,8 @@ public class PoolableStatement extends PoolableWrapper implements Statement { } } - protected void transactionRecord(String sql) { - if (conn.getTransactionInfo() != null) { - conn.getTransactionInfo().getSqlList().add(sql); - } + protected void transactionRecord(String sql) throws SQLException { + conn.transactionRecord(sql); } @Override