[ 
https://issues.apache.org/jira/browse/DERBY-1201?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12505735
 ] 

Thomas Nielsen commented on DERBY-1201:
---------------------------------------

The finalized JDBC 4.0 spec explicitly states that updateRow() called on a 
ResultSet whos concurrency level is ResultSet.CONCUR_UPDATABLE, and without 
changes to any row, will be treated as a no-op.

A no-op should not result in throwing an exception - so both embedded and 
client drivers needs to change IMHO.

For the embedded driver:
A check for any updated rows before calling checksBeforeUpdateOrDelete() in 
updateRow() is probably in order, as checksBeforeUpdateOrDelete() is also used 
for deleteRow() and cancelRowUpdates().

For client driver:
Same as embedded, but check before calling checkForClosedResultSet() in 
updateRowX().

> ResultSet.updateRow() in network client should not throw an exception if no 
> fields in the row have been modified.
> -----------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-1201
>                 URL: https://issues.apache.org/jira/browse/DERBY-1201
>             Project: Derby
>          Issue Type: Bug
>          Components: Network Client, Newcomer
>    Affects Versions: 10.1.1.0, 10.1.2.1, 10.1.3.1, 10.2.1.6
>            Reporter: David Van Couvering
>            Priority: Minor
>         Attachments: TestUpdateRow.java
>
>
> ResultSet.updateRow() in the network client throws an exception if no fields 
> in the current row have been modified.  In the embedded client, the method 
> silently does nothing in the same circumstances.  Although the spec is yet to 
> go final, our understanding is that JDBC 4 spec indicates that the behavior 
> of the embedded client is correct, so we should correct this in the network 
> client.

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

Reply via email to