private RecordRangeIterator(int id, Record fromRec, Record toRec, RecordBufferPageMgr pageMgr, RecordMapper<X> mapper) { currentIdx = 0 ; this.pageMgr = pageMgr; this.minRec = fromRec ; this.maxRec = toRec ; this.mapper = mapper ; this.keySlot = new byte[pageMgr.getRecordFactory().keyLength()] ; if ( toRec != null && fromRec != null && Record.keyLE(toRec, fromRec) ) { currentPage = null ; return ; } pageMgr.startRead(); currentPage = pageMgr.getRead(id) ; if ( currentPage.getCount() == 0 ) { // Empty page. close() ; return ; } if ( fromRec != null ) { currentIdx = currentPage.getRecordBuffer().find(fromRec) ; if ( currentIdx < 0 ) currentIdx = decodeIndex(currentIdx) ; } }
@Test public void record1() { Record r1 = intToRecord(1, RecLen) ; Record r2 = intToRecord(1, RecLen) ; assertTrue(Record.keyEQ(r1,r2)) ; assertTrue(Record.keyGE(r1,r2)) ; assertTrue(Record.keyLE(r1,r2)) ; assertFalse(Record.keyLT(r1,r2)) ; assertFalse(Record.keyGT(r1,r2)) ; }
@Test public void record2() { Record r1 = intToRecord(1000, RecLen) ; Record r2 = intToRecord(2222, RecLen) ; assertFalse(Record.keyEQ(r1,r2)) ; assertFalse(Record.keyGE(r1,r2)) ; assertTrue(Record.keyLE(r1,r2)) ; assertTrue(Record.keyLT(r1,r2)) ; assertFalse(Record.keyGT(r1,r2)) ; }
@Test public void record3() { Record r1 = intToRecord(1000, RecLen) ; Record r2 = intToRecord(0, RecLen) ; assertFalse(Record.keyEQ(r1,r2)) ; assertTrue(Record.keyGE(r1,r2)) ; assertFalse(Record.keyLE(r1,r2)) ; assertFalse(Record.keyLT(r1,r2)) ; assertTrue(Record.keyGT(r1,r2)) ; } }
protected static void check(BPTreeRecords bpr) { assertTrue(bpr.getCount() >= 0) ; assertTrue(bpr.getCount() <= bpr.getMaxSize()) ; assertEquals(bpr.getRecordBuffer().getLow(), bpr.getLowRecord()) ; assertEquals(bpr.getRecordBuffer().getHigh(), bpr.getHighRecord()) ; for ( int i = 1 ; i < bpr.getCount() ; i++ ) { Record r1 = bpr.getRecordBuffer().get(i - 1) ; Record r2 = bpr.getRecordBuffer().get(i) ; assertTrue(Record.keyLE(r1, r2)) ; } }