@Override public BlockMgr getBlockMgr() { return bpTree.getNodeManager().getBlockMgr() ; }
@Override public BlockMgr getBlockMgr() { return bpTree.getNodeManager().getBlockMgr() ; }
@Override public void sync() { if ( nodeManager.getBlockMgr() != null ) nodeManager.getBlockMgr().sync() ; if ( recordsMgr.getBlockMgr() != null ) recordsMgr.getBlockMgr().sync() ; }
@Override public void sync() { if ( nodeManager.getBlockMgr() != null ) nodeManager.getBlockMgr().sync() ; if ( recordsMgr.getBlockMgr() != null ) recordsMgr.getBlockMgr().sync() ; }
/*public*/private static void bpt_scan_nodes(BPlusTree bpt, boolean verbose) BPTreeNodeMgr nodeMgr = new BPTreeNodeMgr(bpt, bpt.getNodeManager().getBlockMgr()) ;
/*public*/private static void bpt_scan_nodes(BPlusTree bpt, boolean verbose) BPTreeNodeMgr nodeMgr = new BPTreeNodeMgr(bpt, bpt.getNodeManager().getBlockMgr()) ;
/** 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 ; }
if ( nodeManager.getBlockMgr().isEmpty() != recordsMgr.getBlockMgr().isEmpty() ) throw new BPTreeException( "Node block manager empty = "+nodeManager.getBlockMgr().isEmpty()+ " // "+ "Records block manager empty = "+recordsMgr.getBlockMgr().isEmpty()) ; if ( ! nodeManager.getBlockMgr().isEmpty() ) { return rootId ; nodeManager.getBlockMgr().sync() ; recordsMgr.getBlockMgr().sync() ; return rootIdx ;
if ( nodeManager.getBlockMgr().isEmpty() != recordsMgr.getBlockMgr().isEmpty() ) throw new BPTreeException( "Node block manager empty = "+nodeManager.getBlockMgr().isEmpty()+ " // "+ "Records block manager empty = "+recordsMgr.getBlockMgr().isEmpty()) ; if ( ! nodeManager.getBlockMgr().isEmpty() ) { return rootId ; nodeManager.getBlockMgr().sync() ; recordsMgr.getBlockMgr().sync() ; return rootIdx ;
/** 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 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) ; }
@Override protected ByteBuffer _commitPrepare(TxnId txnId, BptTxnState state) { nodeManager.getBlockMgr().sync(); recordsMgr.getBlockMgr().sync(); long nodeLimit = nodeManager.allocLimit() ; long recordsLimit = recordsMgr.allocLimit() ; // But don't write it yet. stateManager.setState(state.getRoot(), nodeLimit, recordsLimit); return stateManager.getState() ; }
@Override protected ByteBuffer _commitPrepare(TxnId txnId, BptTxnState state) { nodeManager.getBlockMgr().sync(); recordsMgr.getBlockMgr().sync(); long nodeLimit = nodeManager.allocLimit() ; long recordsLimit = recordsMgr.allocLimit() ; // But don't write it yet. stateManager.setState(state.getRoot(), nodeLimit, recordsLimit); return stateManager.getState() ; }
@Override final boolean promote() { if ( bpTree.getNodeManager().isWritable(this.getId()) ) return false ; // This calls reset is needed. // The id, records buffer and pointer buffers need resetting if the block changed. boolean promoteInPlace = bpTree.state().modifiableNodeBlock(getId()) ; if ( promoteInPlace ) { bpTree.getNodeManager().promoteInPlace(this) ; return false ; } else { Block oldBlock = block ; boolean b = bpTree.getNodeManager().promoteDuplicate(this) ; if ( b ) { bpTree.getNodeManager().getBlockMgr().release(oldBlock); } return b ; } }
@Override final boolean promote() { if ( bpTree.getNodeManager().isWritable(this.getId()) ) return false ; // This calls reset is needed. // The id, records buffer and pointer buffers need resetting if the block changed. boolean promoteInPlace = bpTree.state().modifiableNodeBlock(getId()) ; if ( promoteInPlace ) { bpTree.getNodeManager().promoteInPlace(this) ; return false ; } else { Block oldBlock = block ; boolean b = bpTree.getNodeManager().promoteDuplicate(this) ; if ( b ) { bpTree.getNodeManager().getBlockMgr().release(oldBlock); } return b ; } }