[ http://issues.apache.org/jira/browse/DERBY-1295?page=all ]
Fernanda Pizzorno updated DERBY-1295: ------------------------------------- Attachment: derby-1295.diff derby-1295.stat The attached file derby-1295.diff adds a check in EmbedResultSet.java so that only forward only result sets will close due to positioning, and a new test (jdbcapi/ScrollResultSetTest.junit). I have successfully run derbyall with this patch. Can someone please review it? Thank you in advance! > Result sets of type TYPE_SCROLL_INSENSITIVE should not implicitly close due > to positioning in autocommit mode > ------------------------------------------------------------------------------------------------------------- > > Key: DERBY-1295 > URL: http://issues.apache.org/jira/browse/DERBY-1295 > Project: Derby > Type: Bug > Components: JDBC > Versions: 10.2.0.0 > Reporter: Dag H. Wanvik > Assignee: Fernanda Pizzorno > Priority: Minor > Fix For: 10.2.0.0 > Attachments: Main.java, derby-1295.diff, derby-1295.stat > > The new JDBC 4 specification allows implementations to automatically > close result sets of type FORWARD_ONLY when ResultSet#next returns > false: > (quote from JDBC preliminary spec): > > 16.2.5 Closing a ResultSet Object > > : > > NOTE: Some JDBC driver implementations may also implicitly close the > > ResultSet when the ResultSet type is TYPE_FORWARD_ONLY and the next > > method of ResultSet returns false. > This implies that other result set type are not free to do this. > Currently, Derby will also implicitly close result sets of type > TYPE_SCROLL_INSENSITIVE, if autocommit is enabled. > Quote from Derby Developer's Guide, subsection "Using autocommit": > > > Using auto-commit > > > > A new connection to a Derby database is in auto-commit mode by > > default, as specified by the JDBC standard. Auto-commit mode means > > that when a statement is completed, the method commit is called on > > that statement automatically. Auto-commit in effect makes every SQL > > statement a transaction. The commit occurs when the statement > > completes or the next statement is executed, whichever comes > > first. In the case of a statement returning a ResultSet , the > > statement completes when the last row of the ResultSet has been > **************************************** > > retrieved or the ResultSet has been closed explicitly. > This seems to indicate that result set always closes when the last row > has been seen, however, it seems the implementation only does this > when autocommit is enabled. I will attach a repro. > Anyway, this should be corrected for JDBC4 compliancy. Scrollable > result sets should never close implicitly due to positioning, > autocommit or not. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira