private PageBlockMgr<? extends BPTreePage> getPageBlockMgr() { if ( isLeaf ) return bpTree.getRecordsMgr() ; else return bpTree.getNodeManager() ; }
private static BPTreeNode create(BPlusTree bpTree, int parent, boolean isLeaf) { BPTreeNode n = bpTree.getNodeManager().createNode(parent) ; n.isLeaf = isLeaf ; return n ; }
private static BPTreeNode create(BPlusTree bpTree, int parent, boolean isLeaf) { BPTreeNode n = bpTree.getNodeManager().createNode(parent) ; n.isLeaf = isLeaf ; return n ; }
private PageBlockMgr<? extends BPTreePage> getPageBlockMgr() { if ( isLeaf ) return bpTree.getRecordsMgr() ; else return bpTree.getNodeManager() ; }
@Override public BlockMgr getBlockMgr() { return bpTree.getNodeManager().getBlockMgr() ; }
@Override final void release() { bpTree.getNodeManager().release(this) ; }
@Override final void release() { bpTree.getNodeManager().release(this) ; }
@Override final void write() { bpTree.getNodeManager().write(this) ; }
@Override final void free() { bpTree.getNodeManager().free(this) ; }
@Override final void write() { bpTree.getNodeManager().write(this) ; }
private static void fixupRoot(BPTreeNode root, Pair<Integer, Record> pair, BPlusTree bpt2) { root.getPtrBuffer().clear() ; root.getRecordBuffer().clear() ; if ( BPlusTreeRewriter.debug ) { divider() ; System.out.printf("** Process root: %s\n", pair) ; } // Node or records? // BPTreeNode => BPTree copy. BPTreeNode node = bpt2.getNodeManager().getRead(pair.car(), BPlusTreeParams.RootParent) ; copyBPTreeNode(node, root, bpt2) ; bpt2.getNodeManager().release(node) ; bpt2.getNodeManager().write(root); }
private static void fixupRoot(BPTreeNode root, Pair<Integer, Record> pair, BPlusTree bpt2) { root.getPtrBuffer().clear() ; root.getRecordBuffer().clear() ; if ( BPlusTreeRewriter.debug ) { divider() ; System.out.printf("** Process root: %s\n", pair) ; } // Node or records? // BPTreeNode => BPTree copy. BPTreeNode node = bpt2.getNodeManager().getRead(pair.car(), BPlusTreeParams.RootParent) ; copyBPTreeNode(node, root, bpt2) ; bpt2.getNodeManager().release(node) ; bpt2.getNodeManager().write(root); }
/** Reset an existing B+Tree with different storage units. * For each, null means "use same as original" */ public static BPlusTree rebuild(BPlusTree bpt, BufferChannel chan, BlockMgr blkMgrNodes, BlockMgr blkMgrLeaves) { if ( chan == null ) chan = bpt.getStateManager().getBufferChannel() ; if ( blkMgrNodes == null ) blkMgrNodes = bpt.getNodeManager().getBlockMgr() ; if ( blkMgrLeaves == null ) blkMgrLeaves = bpt.getNodeManager().getBlockMgr() ; BPlusTree bpt2 = attach(bpt.getComponentId(), bpt.getParams(), true, chan, blkMgrNodes, blkMgrLeaves) ; return bpt2 ; }
/** Reset an existing B+Tree with different storage units. * For each, null means "use same as original" */ public static BPlusTree rebuild(BPlusTree bpt, BufferChannel chan, BlockMgr blkMgrNodes, BlockMgr blkMgrLeaves) { if ( chan == null ) chan = bpt.getStateManager().getBufferChannel() ; if ( blkMgrNodes == null ) blkMgrNodes = bpt.getNodeManager().getBlockMgr() ; if ( blkMgrLeaves == null ) blkMgrLeaves = bpt.getNodeManager().getBlockMgr() ; BPlusTree bpt2 = attach(bpt.getComponentId(), bpt.getParams(), true, chan, blkMgrNodes, blkMgrLeaves) ; return bpt2 ; }
/** Debugging */ public static BPlusTree addTracking(BPlusTree bpTree) { BufferChannel mgrRoot = null ; BlockMgr mgr1 = bpTree.getNodeManager().getBlockMgr() ; BlockMgr mgr2 = bpTree.getRecordsMgr().getBlockMgr() ; mgr1 = BlockTracker.track(mgr1) ; mgr2 = BlockTracker.track(mgr2) ; return BPlusTreeFactory.rebuild(bpTree, mgrRoot, mgr1, mgr2) ; }
/** Debugging */ public static BPlusTree addTracking(BPlusTree bpTree) { BufferChannel mgrRoot = null ; BlockMgr mgr1 = bpTree.getNodeManager().getBlockMgr() ; BlockMgr mgr2 = bpTree.getRecordsMgr().getBlockMgr() ; mgr1 = BlockTracker.track(mgr1) ; mgr2 = BlockTracker.track(mgr2) ; return BPlusTreeFactory.rebuild(bpTree, mgrRoot, mgr1, mgr2) ; }
/** Debugging */ public static BPlusTree addLogging(BPlusTree bpTree) { BufferChannel mgrRoot = null ; BlockMgr mgr1 = bpTree.getNodeManager().getBlockMgr() ; BlockMgr mgr2 = bpTree.getRecordsMgr().getBlockMgr() ; mgr1 = new BlockMgrLogger(mgr1, false) ; mgr2 = new BlockMgrLogger(mgr2, false) ; return BPlusTreeFactory.rebuild(bpTree, mgrRoot, mgr1, mgr2) ; }
/** Debugging */ public static BPlusTree addLogging(BPlusTree bpTree) { BufferChannel mgrRoot = null ; BlockMgr mgr1 = bpTree.getNodeManager().getBlockMgr() ; BlockMgr mgr2 = bpTree.getRecordsMgr().getBlockMgr() ; mgr1 = new BlockMgrLogger(mgr1, false) ; mgr2 = new BlockMgrLogger(mgr2, false) ; return BPlusTreeFactory.rebuild(bpTree, mgrRoot, mgr1, mgr2) ; }
private static void copyBPTreeNode(BPTreeNode nodeSrc, BPTreeNode nodeDst, BPlusTree bpt2) { PtrBuffer pBuff = nodeSrc.getPtrBuffer() ; pBuff.copy(0, nodeDst.getPtrBuffer(), 0, pBuff.getSize()) ; RecordBuffer rBuff = nodeSrc.getRecordBuffer() ; rBuff.copy(0, nodeDst.getRecordBuffer(), 0, rBuff.getSize()) ; nodeDst.setCount(nodeSrc.getCount()) ; nodeDst.setIsLeaf(nodeSrc.isLeaf()) ; bpt2.getNodeManager().put(nodeDst) ; } }
private static void copyBPTreeNode(BPTreeNode nodeSrc, BPTreeNode nodeDst, BPlusTree bpt2) { PtrBuffer pBuff = nodeSrc.getPtrBuffer() ; pBuff.copy(0, nodeDst.getPtrBuffer(), 0, pBuff.getSize()) ; RecordBuffer rBuff = nodeSrc.getRecordBuffer() ; rBuff.copy(0, nodeDst.getRecordBuffer(), 0, rBuff.getSize()) ; nodeDst.setCount(nodeSrc.getCount()) ; nodeDst.setIsLeaf(nodeSrc.isLeaf()) ; bpt2.getNodeManager().put(nodeDst) ; } }