[
https://issues.apache.org/jira/browse/DERBY-4083?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Rick Hillegas updated DERBY-4083:
---------------------------------
Urgency: Normal
Triaged July 2, 2009: Assigned normal urgency.
> BTreeScan.delete() throws AM_RECORD_NOT_FOUND if record is found
> ----------------------------------------------------------------
>
> Key: DERBY-4083
> URL: https://issues.apache.org/jira/browse/DERBY-4083
> Project: Derby
> Issue Type: Bug
> Components: Store
> Affects Versions: 10.4.2.0
> Reporter: Knut Anders Hatlen
> Priority: Minor
>
> The code below is from BTreeScan.delete(). If the call to reposition()
> manages to position on the row, an exception is raised indicating that the
> row could not be found. If the row is not found, no exception is raised, but
> code later in the method will probably throw a NullPointerException because
> scan_position.current_leaf is set to null by reposition(). I believe that "if
> (reposition(...))" should be changed to "if (!reposition(...))". According to
> the test coverage reports, this code is not exercised by any of the existing
> tests.
> if (latch_released)
> {
> // lost latch on page in order to wait for row lock.
> // Because we have scan lock on page, we need only
> // call reposition() which will use the saved record
> // handle to reposition to the same spot on the page.
> // We don't have to search the
> // tree again, as we have the a scan lock on the page
> // which means the current_rh is valid to reposition on.
> if (reposition(scan_position, false))
> {
> throw StandardException.newException(
> SQLState.AM_RECORD_NOT_FOUND,
> new Long(err_containerid),
> new Long(scan_position.current_rh.getId()));
> }
> }
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.