Actually, it's in BTree$BTreeNode class. The problem how I see it with the values which are *exactly* matching branch separators, i.e. binarySearch() > 0. In this case, instead of going to the next branch (idx++), it currently goes to the previous branch (idx), which does not have this element (see getSeparator(): parts of value2 are used as separator, and value2 is the first element of next leaf, not first one).
Thanks for the diff. It will probably be a few days before I apply it because I want to root around for more potential problems in the BTree implementation.
I also want to revisit multiple file descriptors and page locking at some point. That may wait until after 1.0, but I'm sure people consider this very important (as I do). I took it out because we were having a lot of concurrent access problems, so it seemed easier to get the actual functional implementation working for before the concurrent implementation.
I hope that fix I made works correctly (not sure about rightIdx though), but you as an author/one of the authors of this class should know this better (btw, where is @author? :).
Yeah, we should start adding that since there are more than two cooks in the kitchen now.
-- Tom Bradford - http://www.tbradford.org Developer - Apache Xindice (Native XML Database) - http://xml.apache.org Creator - Project Labrador (Web Services) - http://xml-labrador.sf.net
