Search in sources :

Example 1 with OraclePreparedStatement

use of oracle.jdbc.internal.OraclePreparedStatement in project druid by alibaba.

the class TestOraclePrefetch method test_oracle.

public void test_oracle() throws Exception {
    String sql = "SELECT 1";
    OracleConnection oracleConn;
    OraclePreparedStatement oracleStmt;
    PreparedStatementHolder stmtHolder;
    {
        Connection conn = dataSource.getConnection();
        {
            oracleConn = conn.unwrap(OracleConnection.class);
            Assert.assertEquals(50, oracleConn.getDefaultRowPrefetch());
        }
        PreparedStatement stmt = conn.prepareStatement(sql);
        oracleStmt = stmt.unwrap(OraclePreparedStatement.class);
        Assert.assertEquals(50, oracleStmt.getRowPrefetch());
        Assert.assertTrue(stmt.isWrapperFor(PreparedStatementHolder.class));
        stmtHolder = stmt.unwrap(PreparedStatementHolder.class);
        Assert.assertNotNull(stmtHolder);
        Assert.assertEquals(0, stmtHolder.getHitCount());
        ResultSet rs = stmt.executeQuery();
        rs.next();
        rs.close();
        stmt.close();
        conn.close();
    }
    {
        Connection conn = dataSource.getConnection();
        {
            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 oracleStmt2 = stmt.unwrap(OraclePreparedStatement.class);
            Assert.assertSame(oracleStmt, oracleStmt2);
            Assert.assertEquals(2, oracleStmt.getRowPrefetch());
        }
        conn.close();
    }
    Assert.assertEquals(1, dataSource.getCachedPreparedStatementCount());
}
Also used : PreparedStatementHolder(com.alibaba.druid.pool.PreparedStatementHolder) Connection(java.sql.Connection) OracleConnection(oracle.jdbc.OracleConnection) ResultSet(java.sql.ResultSet) OraclePreparedStatement(oracle.jdbc.internal.OraclePreparedStatement) OraclePreparedStatement(oracle.jdbc.internal.OraclePreparedStatement) PreparedStatement(java.sql.PreparedStatement) OracleConnection(oracle.jdbc.OracleConnection)

Aggregations

PreparedStatementHolder (com.alibaba.druid.pool.PreparedStatementHolder)1 Connection (java.sql.Connection)1 PreparedStatement (java.sql.PreparedStatement)1 ResultSet (java.sql.ResultSet)1 OracleConnection (oracle.jdbc.OracleConnection)1 OraclePreparedStatement (oracle.jdbc.internal.OraclePreparedStatement)1