@Override public void close() { if (currentPage != null ) pageMgr.release(currentPage) ; currentPage = null ; currentIdx = -99 ; slot = null ; pageMgr.getBlockMgr().endIterator(this) ; }
private static Iterator<Pair<Integer, Record>> printDataBlocks(Iterator<Pair<Integer, Record>> iter, RecordBufferPageMgr recordPageMgr) { divider() ; List<Pair<Integer, Record>> x = Iter.toList(iter) ; System.out.printf(">>Packed data blocks\n") ; for (Pair<Integer, Record> pair : x ) { System.out.printf(" %s\n",pair) ; RecordBufferPage rbp = recordPageMgr.getRead(pair.car()) ; //System.out.printf("RecordBufferPage[id=%d,link=%d] %d\n", rbp.getId(), rbp.getLink(), rbp.getCount() ) ; System.out.println(rbp) ; recordPageMgr.release(rbp) ; } System.out.printf("<<Packed data blocks\n") ; System.out.printf("Blocks: %d\n", x.size()) ; return x.iterator() ; }
/*public*/private static void bpt_scan_record_buffer(RecordBufferPageMgr recordPageMgr, boolean verbose) { System.out.print("[Scan Records] start\n") ; int idx = 0 ; int n = 0 ; int total = 0 ; if ( verbose ) System.out.printf("recordPageMgr = %s\n", recordPageMgr) ; // Blocks in scan order try { while ( idx >= 0 ) { if ( verbose ) System.out.printf("idx = %d\n", idx) ; RecordBufferPage page = recordPageMgr.getRead(idx) ; if ( verbose ) System.out.printf("%04d :: id=%04d -> link=%04d [count=%d, max=%d]\n", n, page.getId(), page.getLink(), page.getCount(), page.getMaxSize()) ; RecordBuffer rb = page.getRecordBuffer() ; if ( verbose ) System.out.printf(" :: %d %d\n", rb.getSize(), rb.maxSize() ) ; total += rb.size(); idx = page.getLink() ; n++ ; recordPageMgr.release(page) ; } } catch (Exception ex) { System.out.println("Exception: "+ex) ; } System.out.printf("[Scan Records] Count = %d in %d blocks (avg: %.2f)\n", total, n, ((float)total)/n) ; }
static Iterator<Pair<Integer, Record>> summarizeDataBlocks(Iterator<Pair<Integer, Record>> iter, RecordBufferPageMgr recordPageMgr) { divider() ; List<Pair<Integer, Record>> x = Iter.toList(iter) ; for (Pair<Integer, Record> pair : x ) { RecordBufferPage rbp = recordPageMgr.getRead(pair.car()) ; System.out.printf("%s -- RecordBufferPage[id=%d,link=%d] (%d) -> [%s]\n", pair, rbp.getId(), rbp.getLink(), rbp.getCount(), rbp.getRecordBuffer().getHigh() ) ; recordPageMgr.release(rbp) ; } return x.iterator() ; }
pageMgr.release(currentPage) ;
@Test public void recBufferPage01() { BlockMgr blkMgr = makeBlockMgr() ; blkMgr.beginUpdate() ; RecordBufferPageMgr rpm = new RecordBufferPageMgr(factory, blkMgr) ; RecordBufferPage page = rpm.create() ; fill(page.getRecordBuffer(), 10, 20, 30) ; assertEquals(10, get(page, 0)) ; assertEquals(20, get(page, 1)) ; assertEquals(30, get(page, 2)) ; rpm.release(page) ; blkMgr.endUpdate() ; }
@Test public void recBufferPage01() { BlockMgr blkMgr = makeBlockMgr() ; blkMgr.beginUpdate() ; RecordBufferPageMgr rpm = new RecordBufferPageMgr(factory, blkMgr) ; RecordBufferPage page = rpm.create() ; fill(page.getRecordBuffer(), 10, 20, 30) ; assertEquals(10, get(page, 0)) ; assertEquals(20, get(page, 1)) ; assertEquals(30, get(page, 2)) ; rpm.release(page) ; blkMgr.endUpdate() ; }
@Test public void recBufferPage02() { BlockMgr blkMgr = makeBlockMgr() ; blkMgr.beginUpdate() ; RecordBufferPageMgr rpm = new RecordBufferPageMgr(factory, blkMgr) ; int x = -99 ; { RecordBufferPage page1 = rpm.create() ; fill(page1.getRecordBuffer(), 10, 20, 30) ; x = page1.getId() ; rpm.put(page1) ; page1 = null ; } blkMgr.endUpdate() ; blkMgr.beginRead() ; { RecordBufferPage page2 = rpm.getRead(x) ; assertEquals(10, get(page2, 0)) ; assertEquals(20, get(page2, 1)) ; assertEquals(30, get(page2, 2)) ; rpm.release(page2) ; } blkMgr.endRead() ; }
@Test public void recBufferPage02() { BlockMgr blkMgr = makeBlockMgr() ; blkMgr.beginUpdate() ; RecordBufferPageMgr rpm = new RecordBufferPageMgr(factory, blkMgr) ; int x = -99 ; { RecordBufferPage page1 = rpm.create() ; fill(page1.getRecordBuffer(), 10, 20, 30) ; x = page1.getId() ; rpm.put(page1) ; page1 = null ; } blkMgr.endUpdate() ; blkMgr.beginRead() ; { RecordBufferPage page2 = rpm.getRead(x) ; assertEquals(10, get(page2, 0)) ; assertEquals(20, get(page2, 1)) ; assertEquals(30, get(page2, 2)) ; rpm.release(page2) ; } blkMgr.endRead() ; }