package org.apache.derbyTesting.functionTests.tests.lang; import java.sql.*; /** * Test case for DERBY3037_patch_not_ready_for_commit_v2_diff.txt * which will show a resultset closure by Derby when in fact the * resultset should remain open */ public class DERBY_3304_Repro { Connection con = null; public DERBY_3304_Repro() { } private void dropFunction() { try { Statement st = con.createStatement(); st.execute("drop function doConnCommitInt"); st.close(); } catch (SQLException sqlE) { // expected } catch (Exception e) { System.out.println("Error dropping procedure: " + e.toString()); } } private void doSingleDriver(){ try { String driver = "org.apache.derby.jdbc.EmbeddedDriver"; System.out.println("* Testing with " + driver); Class.forName(driver); con = DriverManager.getConnection ("jdbc:derby:c:/dellater/test1;create=true"); dropFunction(); con.setAutoCommit(false); con.setHoldability(ResultSet.CLOSE_CURSORS_AT_COMMIT); Statement st = con.createStatement(); st.execute("create FUNCTION doConnCommitInt()" + " RETURNS INT " + " external name 'org.apache.derbyTesting.functionTests.tests.lang.DERBY_3304_Repro.doConnCommitInt'" + " language java parameter style java "); ResultSet rs = st.executeQuery("values doConnCommitInt()"); rs.next(); rs.getInt(1); con.rollback(); con.close(); } catch (Exception e) { e.printStackTrace(); } } /** * @param args the command line arguments */ public static void main(String[] args) { DERBY_3304_Repro m = new DERBY_3304_Repro(); m.doSingleDriver(); } public static int doConnCommitInt() throws Throwable { Connection conn = DriverManager.getConnection("jdbc:default:connection"); conn.commit(); return 1; } }