[ http://issues.apache.org/jira/browse/DERBY-787?page=comments#action_12362001 ]
Mamta A. Satoor commented on DERBY-787: --------------------------------------- I think Andreas (as part of derby-231 "FOR UPDATE" required for updatable result set to work) enhanced the information used during cache lookup to differentiate between readonly select statement against updatable select statement. Something like that might need to be done to associate a statement with cursor to the right connection. > cursor closed as a sideeffect of closing another cursor with the same name on > another connection > ------------------------------------------------------------------------------------------------ > > Key: DERBY-787 > URL: http://issues.apache.org/jira/browse/DERBY-787 > Project: Derby > Type: Bug > Components: SQL > Versions: 10.1.2.1 > Environment: Java 1.4 > Reporter: Andreas Korneliussen > Attachments: CursorIsClosedIssue.java > > I was writing some tests for the Scrollable updatable ResultSet feature, and > found some tests failing with > ERROR XCL07: Cursor 'SQLCUR0' is closed. Verify that autocommit is OFF. > in ResultSet.updateRow(). > The test does the following: > 1. set up a connection, and run a query which selects one tuple > 2. update the tuple using updateXXX and updateRow > 3. rollback the transaction and close the connection > Then, repeat the process, however this time use a different string in the > query. This time updateRow() may fail with the error above. > The problem has been reproduced on forward only, updatable resultsets. > Workaround: > It does not seem to fail if I > a, set another cursorname on the statement object, > b, use the same query string. > I will attach the program to reproduce the problem. Below is the output: > ~:/<3>db-derby-10.1.2.1-bin/lib> java -cp > /home/ak136785/devel/derbytesting/derbytest/build/classes/:derby.jar > derbytest.CursorIsClosedIssue > 1,1,19,Tuple 1 > 2,2,21,Tuple 2 > ERROR XCL07: Cursor 'SQLCUR0' is closed. Verify that autocommit is OFF. > at org.apache.derby.iapi.error.StandardException.newException(Unknown > Source) > at > org.apache.derby.impl.sql.execute.CurrentOfResultSet.getCursor(Unknown Source) > at > org.apache.derby.impl.sql.execute.CurrentOfResultSet.openCore(Unknown Source) > at > org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.openCore(Unknown > Source) > at > org.apache.derby.impl.sql.execute.NormalizeResultSet.openCore(Unknown Source) > at org.apache.derby.impl.sql.execute.UpdateResultSet.setup(Unknown > Source) > at org.apache.derby.impl.sql.execute.UpdateResultSet.open(Unknown > Source) > at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown > Source) > at org.apache.derby.impl.jdbc.EmbedResultSet.updateRow(Unknown Source) > at derbytest.CursorIsClosedIssue.runTest(CursorIsClosedIssue.java:80) > at derbytest.CursorIsClosedIssue.main(CursorIsClosedIssue.java:103) -- 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
