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.