Modified:
branches/branch_5_1/src/com/mysql/jdbc/ResultSetImpl.java
branches/branch_5_1/src/com/mysql/jdbc/StatementImpl.java
branches/branch_5_1/src/testsuite/regression/StatementRegressionTest.java
Log:
Fixed BUG#34518 - Statements using cursor fetch leaked internal prepared statements
until connection was closed. The internal prepared statement is now held open while
the result set is open, and closed by the result set itself being closed.
Modified: branches/branch_5_1/src/com/mysql/jdbc/ResultSetImpl.java
===================================================================
--- branches/branch_5_1/src/com/mysql/jdbc/ResultSetImpl.java 2008-02-07 16:03:02 UTC (rev
6731)
+++ branches/branch_5_1/src/com/mysql/jdbc/ResultSetImpl.java 2008-02-13 14:06:48 UTC (rev
6732)
@@ -7489,6 +7489,18 @@
}
}
+ if (this.statementUsedForFetchingRows != null) {
+ try {
+ this.statementUsedForFetchingRows.realClose(true, false);
+ } catch (SQLException sqlEx) {
+ if (exceptionDuringClose != null) {
+ exceptionDuringClose.setNextException(sqlEx);
+ } else {
+ exceptionDuringClose = sqlEx;
+ }
+ }
+ }
+
this.rowData = null;
this.defaultTimeZone = null;
this.fields = null;
Modified: branches/branch_5_1/src/com/mysql/jdbc/StatementImpl.java
===================================================================
--- branches/branch_5_1/src/com/mysql/jdbc/StatementImpl.java 2008-02-07 16:03:02 UTC (rev
6731)
+++ branches/branch_5_1/src/com/mysql/jdbc/StatementImpl.java 2008-02-13 14:06:48 UTC (rev
6732)
@@ -2270,7 +2270,6 @@
this.warningChain = null;
this.openResults = null;
this.batchedGeneratedKeys = null;
- this.cancelTimeoutMutex = null;
this.localInfileInputStream = null;
this.pingTarget = null;
}
Modified: branches/branch_5_1/src/testsuite/regression/StatementRegressionTest.java
===================================================================
--- branches/branch_5_1/src/testsuite/regression/StatementRegressionTest.java 2008-02-07
16:03:02 UTC (rev 6731)
+++ branches/branch_5_1/src/testsuite/regression/StatementRegressionTest.java 2008-02-13
14:06:48 UTC (rev 6732)
@@ -5387,4 +5387,22 @@
}
}
}
+
+ public void testBug34518() throws Exception {
+ if (!versionMeetsMinimum(5, 0)) {
+ return;
+ }
+
+ Connection fetchConn = getConnectionWithProps("useCursorFetch=true");
+ Statement fetchStmt = fetchConn.createStatement();
+
+ int stmtCount = ((com.mysql.jdbc.Connection)fetchConn).getActiveStatementCount();
+
+ fetchStmt.setFetchSize(100);
+ this.rs = fetchStmt.executeQuery("SELECT 1");
+
+ assertEquals(((com.mysql.jdbc.Connection)fetchConn).getActiveStatementCount(),
stmtCount + 1);
+ this.rs.close();
+ assertEquals(((com.mysql.jdbc.Connection)fetchConn).getActiveStatementCount(),
stmtCount);
+ }
}
\ No newline at end of file
| Thread |
|---|
| • Connector/J commit: r6732 - in branches/branch_5_1/src: com/mysql/jdbc testsuite/regression | mmatthews | 13 Feb |