bptree does not work well for auto-increasing keys

This commit is contained in:
Chris Lu
2021-08-22 18:19:26 -07:00
parent 51c8f2518f
commit df1d6133a8
6 changed files with 193 additions and 28 deletions

View File

@@ -54,9 +54,13 @@ func (self *BpTree) Replace(key ItemKey, where WhereFunc, value ItemValue) (err
for i, leaf, next := li(); next != nil; i, leaf, next = next() {
if where(leaf.values[i]) {
leaf.values[i] = value
if persistErr := leaf.persist(); persistErr != nil && err == nil {
err = persistErr
break
}
}
}
return nil
return err
}
func (self *BpTree) Find(key ItemKey) (kvi KVIterator) {
@@ -89,11 +93,13 @@ func (self *BpTree) RemoveWhere(key ItemKey, where WhereFunc) (err error) {
return err
}
if new_root == nil {
self.setRoot(NewLeaf(ns, false))
new_root = NewLeaf(ns, false)
err = new_root.persist()
self.setRoot(new_root)
} else {
self.setRoot(new_root)
}
return nil
return err
}
func (self *BpTree) Keys() (ki KIterator) {