[ 
https://issues.apache.org/jira/browse/DERBY-4083?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Knut Anders Hatlen closed DERBY-4083.
-------------------------------------

    Issue & fix info: [Repro attached]  (was: [Patch Available, Repro attached])
       Fix Version/s: 10.7.0.0
          Resolution: Fixed

Committed revision 952131.

I don't think this code path can be reached without using the store API 
directly, so I'm not planning to back-port the fix for now. Closing the issue.

> 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
>            Assignee: Knut Anders Hatlen
>            Priority: Minor
>             Fix For: 10.7.0.0
>
>         Attachments: derby-4083-1a.diff, test.diff
>
>
> 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.

Reply via email to