import testsuite.BaseTestCase; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.PreparedStatement; import java.sql.SQLException; public class bug66947 extends BaseTestCase { public bug66947(String name) { super(name); } public static void main(String[] args) { junit.textui.TestRunner.run(bug66947.class); } public void testBug66947() throws Exception { try { executeBug66947Stmt(); executeBug66947Stmt(); } finally { //closeMemberJDBCResources(); } } private void executeBug66947Stmt() throws SQLException { final PreparedStatement stmt = this.conn.prepareStatement("select 1"); try { final ResultSet rs = stmt.executeQuery(); try { while (rs.next()) { assertEquals("Result set is corrupted", 1, rs.getInt(1)); } } finally { rs.close(); } } finally { stmt.close(); stmt.close(); // <--- should have no effect, but corrupts cached stmt } } } /* javac -classpath /home/sveta/java/mysql-connector-java-5.1.22/mysql-connector-java-5.1.22-bin.jar:/home/sveta/java/mysql-connector-java-5.1.22/src:/home/sveta/java/junit-4.10.jar bug66947.java java -classpath /home/sveta/java/mysql-connector-java-5.1.22/mysql-connector-java-5.1.22-bin.jar:/home/sveta/java/mysql-connector-java-5.1.22/src:/home/sveta/java/junit-4.10.jar:$CLASSPATH:. -Dcom.mysql.jdbc.testsuite.url="jdbc:mysql://127.0.0.1:33055/test?user=root&password=&useServerPrepStmts=true&cachePrepStmts=true" bug66947 */