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.

Reply via email to