ignite-db - more fixes
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/c6aaf4ac Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/c6aaf4ac Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/c6aaf4ac Branch: refs/heads/ignite-db-x-10884 Commit: c6aaf4ac79430b287c14300066eae2978aab3c52 Parents: 20b0638 Author: S.Vladykin <[email protected]> Authored: Wed Apr 13 03:19:31 2016 +0300 Committer: S.Vladykin <[email protected]> Committed: Wed Apr 13 03:19:31 2016 +0300 ---------------------------------------------------------------------- .../processors/cache/database/tree/BPlusTree.java | 10 ++++++---- .../processors/cache/database/tree/io/BPlusIO.java | 11 ----------- .../processors/cache/database/tree/io/BPlusInnerIO.java | 11 +++++++++++ 3 files changed, 17 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/c6aaf4ac/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 2d54a0a..6319621 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 @@ -1060,7 +1060,7 @@ public abstract class BPlusTree<L, T extends L> { if (prntIdx == prntCnt) // It was a right turn. prntIdx--; - cur.io.store(cur.buf, cnt, prnt.io, prnt.buf, prntIdx); + inner(cur.io).store(cur.buf, cnt, prnt.io, prnt.buf, prntIdx); cnt++; } @@ -1890,7 +1890,7 @@ public abstract class BPlusTree<L, T extends L> { // If after leaf merge parent have lost inner key, we don't need to update it anymore. if (innerIdx < inner.io.getCount(inner.buf)) { - inner.io.store(inner.buf, innerIdx, leaf.io, leaf.buf, cnt - 1); + inner(inner.io).store(inner.buf, innerIdx, leaf.io, leaf.buf, cnt - 1); leaf.io.setRemoveId(leaf.buf, globalRmvId.get()); } else { @@ -2191,8 +2191,10 @@ public abstract class BPlusTree<L, T extends L> { * @param io IO. * @return Inner page IO. */ - private static BPlusInnerIO inner(BPlusIO io) { - return (BPlusInnerIO)io; + private static <L> BPlusInnerIO<L> inner(BPlusIO<L> io) { + assert !io.isLeaf(); + + return (BPlusInnerIO<L>)io; } /** http://git-wip-us.apache.org/repos/asf/ignite/blob/c6aaf4ac/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/io/BPlusIO.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/io/BPlusIO.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/io/BPlusIO.java index 90d24ba..65dc2c2 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/io/BPlusIO.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/io/BPlusIO.java @@ -164,17 +164,6 @@ public abstract class BPlusIO<L> extends PageIO { public abstract void store(ByteBuffer buf, int idx, L row); /** - * Store row info from the given source. - * - * @param dst Destination buffer - * @param dstIdx Destination index. - * @param srcIo Source IO. - * @param src Source buffer. - * @param srcIdx Source index. - */ - public abstract void store(ByteBuffer dst, int dstIdx, BPlusIO<L> srcIo, ByteBuffer src, int srcIdx); - - /** * Copy items from source buffer to destination buffer. Both pages must be of the same type. * * @param src Source buffer. http://git-wip-us.apache.org/repos/asf/ignite/blob/c6aaf4ac/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/io/BPlusInnerIO.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/io/BPlusInnerIO.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/io/BPlusInnerIO.java index 945f3a9..b84c19b 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/io/BPlusInnerIO.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/io/BPlusInnerIO.java @@ -116,6 +116,17 @@ public abstract class BPlusInnerIO<L> extends BPlusIO<L> { } /** + * Store row info from the given source. + * + * @param dst Destination buffer + * @param dstIdx Destination index. + * @param srcIo Source IO. + * @param src Source buffer. + * @param srcIdx Source index. + */ + public abstract void store(ByteBuffer dst, int dstIdx, BPlusIO<L> srcIo, ByteBuffer src, int srcIdx); + + /** * @param idx Index of element. * @param shift It can be either link itself or left or right page ID. * @return Offset from byte buffer begin in bytes.
