From 0336ac42e032df482f0643be0a9587d421386274 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B8=A9=E5=B0=91?= Date: Sun, 20 May 2012 16:36:36 +0800 Subject: [PATCH] test fixed --- .../pool/DruidPooledPreparedStatement.java | 4 +++ .../druid/pool/PreparedStatementPool.java | 1 + .../druid/bvt/pool/TestOraclePrefetch.java | 35 +++++++++++++------ .../bvt/sql/mysql/START_TRANSACTION_Test.java | 2 +- 4 files changed, 30 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/alibaba/druid/pool/DruidPooledPreparedStatement.java b/src/main/java/com/alibaba/druid/pool/DruidPooledPreparedStatement.java index 7fb67bbf46..25be6d6dbb 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidPooledPreparedStatement.java +++ b/src/main/java/com/alibaba/druid/pool/DruidPooledPreparedStatement.java @@ -998,6 +998,10 @@ public class DruidPooledPreparedStatement extends DruidPooledStatement implement return (T) stmt; } + if (iface == PreparedStatementHolder.class) { + return (T) this.holder; + } + return super.unwrap(iface); } } diff --git a/src/main/java/com/alibaba/druid/pool/PreparedStatementPool.java b/src/main/java/com/alibaba/druid/pool/PreparedStatementPool.java index e826aecaf3..655e1c793f 100644 --- a/src/main/java/com/alibaba/druid/pool/PreparedStatementPool.java +++ b/src/main/java/com/alibaba/druid/pool/PreparedStatementPool.java @@ -58,6 +58,7 @@ public class PreparedStatementPool { return null; } + holder.incrementHitCount(); dataSource.incrementCachedPreparedStatementHitCount(); if (holder.isEnterOracleImplicitCache()) { OracleUtils.exitImplicitCacheToActive(holder.getStatement()); diff --git a/src/test/java/com/alibaba/druid/bvt/pool/TestOraclePrefetch.java b/src/test/java/com/alibaba/druid/bvt/pool/TestOraclePrefetch.java index 43c8b7e3d1..f3a1715e0d 100644 --- a/src/test/java/com/alibaba/druid/bvt/pool/TestOraclePrefetch.java +++ b/src/test/java/com/alibaba/druid/bvt/pool/TestOraclePrefetch.java @@ -10,6 +10,7 @@ import oracle.jdbc.OracleConnection; import oracle.jdbc.internal.OraclePreparedStatement; import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.pool.PreparedStatementHolder; import com.alibaba.druid.test.util.OracleMockDriver; import com.alibaba.druid.util.JdbcUtils; @@ -34,20 +35,25 @@ public class TestOraclePrefetch extends TestCase { String sql = "SELECT 1"; + OracleConnection oracleConn; + OraclePreparedStatement oracleStmt; + PreparedStatementHolder stmtHolder; { Connection conn = dataSource.getConnection(); { - OracleConnection oracleConn = conn.unwrap(OracleConnection.class); + oracleConn = conn.unwrap(OracleConnection.class); Assert.assertEquals(50, oracleConn.getDefaultRowPrefetch()); } PreparedStatement stmt = conn.prepareStatement(sql); - { - OraclePreparedStatement oracleStmt = stmt.unwrap(OraclePreparedStatement.class); - Assert.assertEquals(50, oracleStmt.getRowPrefetch()); - } + oracleStmt = stmt.unwrap(OraclePreparedStatement.class); + Assert.assertEquals(50, oracleStmt.getRowPrefetch()); + + stmtHolder = stmt.unwrap(PreparedStatementHolder.class); + Assert.assertNotNull(stmtHolder); + Assert.assertEquals(0, stmtHolder.getHitCount()); ResultSet rs = stmt.executeQuery(); rs.next(); @@ -61,22 +67,29 @@ public class TestOraclePrefetch extends TestCase { Connection conn = dataSource.getConnection(); { - OracleConnection oracleConn = conn.unwrap(OracleConnection.class); - Assert.assertEquals(50, oracleConn.getDefaultRowPrefetch()); + OracleConnection oracleConn2 = conn.unwrap(OracleConnection.class); + Assert.assertEquals(50, oracleConn2.getDefaultRowPrefetch()); + Assert.assertSame(oracleConn, oracleConn2); } PreparedStatement stmt = conn.prepareStatement(sql); + + { + PreparedStatementHolder stmtHolder2 = stmt.unwrap(PreparedStatementHolder.class); + Assert.assertSame(stmtHolder2, stmtHolder); + Assert.assertEquals(1, stmtHolder.getHitCount()); + } ResultSet rs = stmt.executeQuery(); rs.next(); - + rs.close(); + stmt.close(); { - OraclePreparedStatement oracleStmt = stmt.unwrap(OraclePreparedStatement.class); + OraclePreparedStatement oracleStmt2 = stmt.unwrap(OraclePreparedStatement.class); + Assert.assertSame(oracleStmt, oracleStmt2); Assert.assertEquals(2, oracleStmt.getRowPrefetch()); } - rs.close(); - stmt.close(); conn.close(); } diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/START_TRANSACTION_Test.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/START_TRANSACTION_Test.java index d881690e56..bcd1102ec9 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/mysql/START_TRANSACTION_Test.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/START_TRANSACTION_Test.java @@ -112,7 +112,7 @@ public class START_TRANSACTION_Test extends TestCase { String text = output(stmtList); - Assert.assertEquals("SET autocommit = 0;", text); + Assert.assertEquals("SET @@autocommit = 0;", text); } private String output(List stmtList) {