List:Commits« Previous MessageNext Message »
From:mmatthews Date:February 13 2008 3:06pm
Subject:Connector/J commit: r6732 - in branches/branch_5_1/src: com/mysql/jdbc testsuite/regression
View as plain text  
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/regressionmmatthews13 Feb