private BptTxnState createState() { return new BptTxnState(rootIdx, nodeManager.allocLimit(), recordsMgr.allocLimit()) ; }
@Override public void close() { nodeManager.close() ; recordsMgr.close() ; stateManager.close() ; }
private BPTreeRecords create(int linkId) { BPTreeRecords newPage = bprRecordsMgr.create() ; newPage.getRecordBufferPage().setLink(linkId) ; return newPage ; }
@Override final boolean promote() { if ( bprRecordsMgr.isWritable(getId()) ) return false ; // reset() will be called if necessary. boolean promoteInPlace = (bpTree == null) ? true : bpTree.state().modifiableRecordsBlock(getId()) ; if ( promoteInPlace ) { bprRecordsMgr.promoteInPlace(this) ; if ( getBackingBlock().isReadOnly() ) bprRecordsMgr.getBlockMgr().promote(getBackingBlock()) ; return false ; } else { Block oldBlock = getBackingBlock() ; boolean b = bprRecordsMgr.promoteDuplicate(this) ; if ( b ) bprRecordsMgr.getBlockMgr().release(oldBlock) ; return b ; } }
recordsMgr.startUpdate(); BPTreeRecords recordsPage = recordsMgr.create() ; if ( recordsPage.getId() != BPlusTreeParams.RootId ) throw new DBOpEnvException("Root blocks must be at position zero (got "+recordsPage.getId()+")") ; recordsMgr.write(recordsPage) ; recordsMgr.release(recordsPage) ; return rootId ; } finally { recordsMgr.finishUpdate(); nodeManager.finishUpdate();
BPTreeRecords recordsPage = recordsMgr.getWrite(0) ; recordsMgr.free(recordsPage); recordsMgr.resetAlloc(0);
protected static BPTreeRecords make() { RecordBufferPage page = recordBufferPageMgr.create() ; BPTreeRecordsMgr mgr = new BPTreeRecordsMgr(null, recordFactory, recordBufferPageMgr) ; return new BPTreeRecords(mgr, page) ; }
@Override public BlockMgr getBlockMgr() { return bpTree.getRecordsMgr().getBlockMgr() ; }
@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() ; }
private <X> Iterator<X> iterator(BPTreeNode node, Record minRec, Record maxRec, RecordMapper<X> mapper) { int keyLen = recordsMgr.getRecordBufferPageMgr().getRecordFactory().keyLength(); return BPTreeRangeIteratorMapper.create(node, minRec, maxRec, keyLen, mapper) ; }
BPTreeRecords(BPTreeRecordsMgr mgr, RecordBufferPage rbp) { super(mgr.getBPTree()) ; this.bprRecordsMgr = mgr ; rBuffPage = rbp ; rBuff = rBuffPage.getRecordBuffer() ; }
@Override final public void free() { bprRecordsMgr.free(this) ; }
private void finishUpdateBlkMgr() { nodeManager.finishUpdate() ; recordsMgr.finishUpdate() ; }
void finishReadBlkMgr() { nodeManager.finishRead() ; recordsMgr.finishRead() ; }
recordsMgr.startUpdate(); BPTreeRecords recordsPage = recordsMgr.create() ; if ( recordsPage.getId() != BPlusTreeParams.RootId ) throw new DBOpEnvException("Root blocks must be at position zero (got "+recordsPage.getId()+")") ; recordsMgr.write(recordsPage) ; recordsMgr.release(recordsPage) ; return rootId ; } finally { recordsMgr.finishUpdate(); nodeManager.finishUpdate();
@Override final boolean promote() { if ( bprRecordsMgr.isWritable(getId()) ) return false ; // reset() will be called if necessary. boolean promoteInPlace = (bpTree == null) ? true : bpTree.state().modifiableRecordsBlock(getId()) ; if ( promoteInPlace ) { bprRecordsMgr.promoteInPlace(this) ; if ( getBackingBlock().isReadOnly() ) bprRecordsMgr.getBlockMgr().promote(getBackingBlock()) ; return false ; } else { Block oldBlock = getBackingBlock() ; boolean b = bprRecordsMgr.promoteDuplicate(this) ; if ( b ) bprRecordsMgr.getBlockMgr().release(oldBlock) ; return b ; } }
BPTreeRecords recordsPage = recordsMgr.getWrite(0) ; recordsMgr.free(recordsPage); recordsMgr.resetAlloc(0);
protected static BPTreeRecords make() { RecordBufferPage page = recordBufferPageMgr.create() ; BPTreeRecordsMgr mgr = new BPTreeRecordsMgr(null, recordFactory, recordBufferPageMgr) ; return new BPTreeRecords(mgr, page) ; }
@Override public BlockMgr getBlockMgr() { return bpTree.getRecordsMgr().getBlockMgr() ; }
@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() ; }