[
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.