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