For some reason I interpreted Mike's comments to mean that Derby would not obtain any latches until AFTER it had recursed up the tree to find the highest node that needed to be split.
Then it would:
1. obtain latches on that highest-most parent and child node 2. perform the split as an internal transaction 3. release the latches on the parent and child (why not keep the child latch if it is needed) 4. then move back down the tree to the child, which now becomes the parent and repeats the process at step 1 above until completed.
This approach only obtains latches immediately before they are used to perform a split.
I am not sure whether it starts from the root or recurses up the tree one level at a time. Mike, please help!
Regards
