ignite-db-x - wip2
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/94174121 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/94174121 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/94174121 Branch: refs/heads/ignite-4652 Commit: 94174121522f318b2df0564729b9a81cbd1a3a42 Parents: 4f1088f Author: Sergi Vladykin <[email protected]> Authored: Tue Feb 14 15:59:18 2017 +0300 Committer: Sergi Vladykin <[email protected]> Committed: Tue Feb 14 15:59:18 2017 +0300 ---------------------------------------------------------------------- .../processors/cache/database/tree/BPlusTree.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/94174121/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java index 51d2c83..c21032f 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java @@ -358,7 +358,15 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements // Inner replace state must be consistent by the end of the operation. assert p.needReplaceInner == FALSE || p.needReplaceInner == DONE : p.needReplaceInner; - p.finish(); + // Need to replace inner key if now we are replacing the rightmost row and have a forward page. + if (canGetRowFromInner && idx + 1 == cnt && p.fwdId != 0L && p.needReplaceInner == FALSE) { + // Can happen only for invoke, otherwise inner key must be replaced on the way down. + assert p.invoke; + + p.needReplaceInner = TRUE; + } + else + p.finish(); } io.store(pageAddr, idx, newRow, null);
