db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tiago R. Espinha (JIRA)" <j...@apache.org>
Subject [jira] Created: (DERBY-4184) Calling deleteRow() on a ResultSet that has been commited throws no error
Date Thu, 23 Apr 2009 20:02:30 GMT
Calling deleteRow() on a ResultSet that has been commited throws no error
-------------------------------------------------------------------------

                 Key: DERBY-4184
                 URL: https://issues.apache.org/jira/browse/DERBY-4184
             Project: Derby
          Issue Type: Bug
          Components: Network Server
    Affects Versions: 10.6.0.0
         Environment: Not relevant.
            Reporter: Tiago R. Espinha
            Priority: Minor


This issue was originally found on DERBY-3839.

The steps to get this error happening are as follows:
1) Set auto commit to false

2) Create a Statement with the following parameters:
ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE and ResultSet.HOLD_CURSORS_OVER_COMMIT

3) Create a ResultSet by having a SELECT on an executeQuery() on a table with at least one
row.

4) Do a next(); on the ResultSet. Then commit() and try to deleteRow() on the ResultSet.

According to holdCursorJDBC30.out, the deleteRow() should throw an 'Invalid cursor state -
no current row' but it doesn't, not when using Java code.

The problem here is the ResultSet.CONCUR_UPDATABLE. By setting this property, the ResultSet
checks that the property is different from CONCUR_READ_ONLY and doesn't do a proper check
on checkForUpdatableResultSet(). Without this check, the deleteRow() executes successfully
BUT, the row does NOT get deleted.

After talking about this with Kathey, we agreed that the exception should always happen. If
an exception isn't thrown and the row isn't deleted, then this is certainly misleading

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message