提交 6527d088 authored 作者: Andrei Tokar's avatar Andrei Tokar

fix corner case when leaf with two keys split

上级 8c1c6835
......@@ -1265,11 +1265,12 @@ public class MVMap<K, V> extends AbstractMap<K, V>
p = p.copy();
p.setChild(index, page);
p.insertNode(index, key, c);
if ((keyCount = p.getKeyCount()) <= store.getKeysPerPage() &&
(p.getMemory() < store.getMaxPageSize() || keyCount <= (p.isLeaf() ? 1 : 2))) {
keyCount = p.getKeyCount();
int at = keyCount - (p.isLeaf() ? 1 : 2);
if (keyCount <= store.getKeysPerPage() &&
(p.getMemory() < store.getMaxPageSize() || at <= 0)) {
break;
}
int at = keyCount - 2;
key = p.getKey(at);
page = p.split(at);
unsavedMemoryHolder.value += p.getMemory() + page.getMemory();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论