diff --git a/src/main/java/com/alibaba/druid/pool/PoolableConnection.java b/src/main/java/com/alibaba/druid/pool/PoolableConnection.java index f6e2a076e3..346274c57a 100644 --- a/src/main/java/com/alibaba/druid/pool/PoolableConnection.java +++ b/src/main/java/com/alibaba/druid/pool/PoolableConnection.java @@ -88,7 +88,6 @@ public class PoolableConnection implements PooledConnection, Connection { } if (holder.isPoolPreparedStatements()) { - this.holder.getStatementPool().put(stmt.getPreparedStatementHolder()); stmt.clearResultSet(); holder.removeTrace(stmt); stmt.setClosed(true); // soft set close @@ -156,6 +155,7 @@ public class PoolableConnection implements PooledConnection, Connection { try { stmtHolder = new PreparedStatementHolder(key, conn.prepareStatement(sql)); holder.getDataSource().incrementPreparedStatementCount(); + holder.getStatementPool().put(stmtHolder); } catch (SQLException ex) { handleException(ex); } @@ -190,6 +190,7 @@ public class PoolableConnection implements PooledConnection, Connection { stmtHolder = new PreparedStatementHolder(key, conn.prepareStatement(sql, resultSetType, resultSetConcurrency)); holder.getDataSource().incrementPreparedStatementCount(); + holder.getStatementPool().put(stmtHolder); } catch (SQLException ex) { handleException(ex); } @@ -225,6 +226,7 @@ public class PoolableConnection implements PooledConnection, Connection { resultSetConcurrency, resultSetHoldability)); holder.getDataSource().incrementPreparedStatementCount(); + holder.getStatementPool().put(stmtHolder); } catch (SQLException ex) { handleException(ex); } @@ -256,6 +258,7 @@ public class PoolableConnection implements PooledConnection, Connection { try { stmtHolder = new PreparedStatementHolder(key, conn.prepareStatement(sql, columnIndexes)); holder.getDataSource().incrementPreparedStatementCount(); + holder.getStatementPool().put(stmtHolder); } catch (SQLException ex) { handleException(ex); } @@ -287,6 +290,7 @@ public class PoolableConnection implements PooledConnection, Connection { try { stmtHolder = new PreparedStatementHolder(key, conn.prepareStatement(sql, columnNames)); holder.getDataSource().incrementPreparedStatementCount(); + holder.getStatementPool().put(stmtHolder); } catch (SQLException ex) { handleException(ex); } @@ -318,6 +322,7 @@ public class PoolableConnection implements PooledConnection, Connection { try { stmtHolder = new PreparedStatementHolder(key, conn.prepareStatement(sql, autoGeneratedKeys)); holder.getDataSource().incrementPreparedStatementCount(); + holder.getStatementPool().put(stmtHolder); } catch (SQLException ex) { handleException(ex); } @@ -352,6 +357,7 @@ public class PoolableConnection implements PooledConnection, Connection { try { stmtHolder = new PreparedStatementHolder(key, conn.prepareCall(sql)); holder.getDataSource().incrementPreparedStatementCount(); + holder.getStatementPool().put(stmtHolder); } catch (SQLException ex) { handleException(ex); } @@ -386,6 +392,7 @@ public class PoolableConnection implements PooledConnection, Connection { resultSetConcurrency, resultSetHoldability)); holder.getDataSource().incrementPreparedStatementCount(); + holder.getStatementPool().put(stmtHolder); } catch (SQLException ex) { handleException(ex); } @@ -418,6 +425,7 @@ public class PoolableConnection implements PooledConnection, Connection { stmtHolder = new PreparedStatementHolder(key, conn.prepareCall(sql, resultSetType, resultSetConcurrency)); holder.getDataSource().incrementPreparedStatementCount(); + holder.getStatementPool().put(stmtHolder); } catch (SQLException ex) { handleException(ex); } diff --git a/src/test/java/com/alibaba/druid/TestLRU.java b/src/test/java/com/alibaba/druid/TestLRU.java index b5d434dab4..c1773d8264 100644 --- a/src/test/java/com/alibaba/druid/TestLRU.java +++ b/src/test/java/com/alibaba/druid/TestLRU.java @@ -17,6 +17,8 @@ public class TestLRU extends TestCase { cache.put(2, "22"); System.out.println(cache); + cache.get(3); + System.out.println(cache); } }