@Override public boolean equals(Object other) { if ( this == other ) return true ; // If it's a pair of a different <A,B> then .equals // Pair<A,B>(null,null) is equal to Pair<C,D>(null ,null) // Type erasure makes this hard to check otherwise. // Use class X extends Pair<A,B> and implement .equals to do // instanceof then call super.equals. if( ! ( other instanceof Pair<?,?> ) ) return false ; Pair<?,?> p2 = (Pair<?,?>)other ; return Objects.equals(car(), p2.car()) && Objects.equals(cdr(), p2.cdr()) ; }
@Override public boolean equals(Object other) { if ( this == other ) return true ; // If it's a pair of a different <A,B> then .equals // Pair<A,B>(null,null) is equal to Pair<C,D>(null ,null) // Type erasure makes this hard to check otherwise. // Use class X extends Pair<A,B> and implement .equals to do // instanceof then call super.equals. if( ! ( other instanceof Pair<?,?> ) ) return false ; Pair<?,?> p2 = (Pair<?,?>)other ; return Objects.equals(car(), p2.car()) && Objects.equals(cdr(), p2.cdr()) ; }
public static void dumpNodeTable(NodeTable nodeTable, Set<NodeTable> dumpedNodeTables) { if ( dumpedNodeTables.contains(nodeTable) ) return ; Iterator<Pair<NodeId, Node>> iter = nodeTable.all() ; for ( ; iter.hasNext() ; ) { Pair<NodeId, Node> pair = iter.next() ; NodeId nid = pair.car() ; Node n = pair.cdr(); String x = NodeFmtLib.displayStr(n) ; System.out.printf("%016X %s\n", nid.getId(), x) ; } dumpedNodeTables.add(nodeTable) ; }
@Override public boolean equals(Object other) { if ( this == other ) return true ; // If it's a pair of a different <A,B> then .equals // Pair<A,B>(null,null) is equal to Pair<C,D>(null ,null) // Type erasure makes this hard to check otherwise. // Use class X extends Pair<A,B> and implement .equals to do // instanceof then call super.equals. if( ! ( other instanceof Pair<?,?> ) ) return false ; Pair<?,?> p2 = (Pair<?,?>)other ; return Lib.equal(car(), p2.car()) && Lib.equal(cdr(), p2.cdr()) ; }
static Iterator<Pair<Integer, Record>> printIndexBlocks(Iterator<Pair<Integer, Record>> iter2, BPTreeNodeMgr bptNodeMgr) { divider() ; List<Pair<Integer, Record>> pairs = Iter.toList(iter2) ; System.out.printf(">>Packed index blocks\n") ; for ( Pair<Integer, Record> pair : pairs ) { System.out.printf(" %s\n", pair) ; BPTreeNode bpNode = bptNodeMgr.getRead(pair.car(), BPlusTreeParams.RootParent) ; bpNode.setIsLeaf(true) ; System.out.printf("BPTreeNode: %d\n", bpNode.getId()) ; System.out.println(bpNode) ; bptNodeMgr.release(bpNode) ; } System.out.printf("<<Packed index blocks\n") ; return pairs.iterator() ; }
@Override public int hashCode() { return hashCodeObject(car()) ^ hashCodeObject(cdr())<<1 ; }
@Override public int hashCode() { return hashCodeObject(car()) ^ hashCodeObject(cdr())<<1 ; }
/** Play the patches (range is inclusive at both ends) */ private void playPatches(long firstPatchVer, long lastPatchVer) { Pair<Version, Node> p = play(datasourceId, target, dLink, firstPatchVer, lastPatchVer); Version patchLastVersion = p.car(); Node patchLastIdNode = p.cdr(); setLocalState(patchLastVersion, patchLastIdNode); }
@Override public int hashCode() { return hashCodeObject(car()) ^ hashCodeObject(cdr())<<1 ; }
static Iterator<Pair<Integer, Record>> summarizeDataBlocks(Iterator<Pair<Integer, Record>> iter, RecordBufferPageMgr recordPageMgr) { divider() ; List<Pair<Integer, Record>> pairs = Iter.toList(iter) ; System.out.println("summarizeDataBlocks: " + pairs) ; for ( Pair<Integer, Record> pair : pairs ) { 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 pairs.iterator() ; }
private Iterator<Pair<NodeId, Node>> all2() { Iterator<Pair<Long, ByteBuffer>> objs = objects.all() ; Function<Pair<Long, ByteBuffer>, Pair<NodeId, Node>> transform = item -> { NodeId id = NodeId.create(item.car().longValue()); ByteBuffer bb = item.cdr(); Node n = NodeLib.decode(bb); return new Pair<>(id, n); }; return Iter.map(objs, transform) ; }
private static Iterator<Pair<NodeId, Node>> all(ObjectFile objFile) { Iterator<Pair<Long, ByteBuffer>> objs = objFile.all() ; Function<Pair<Long, ByteBuffer>, Pair<NodeId, Node>> transform = item -> { NodeId id = NodeId.create(item.car().longValue()); ByteBuffer bb = item.cdr(); Node n = NodeLib.decode(bb); return new Pair<>(id, n); }; return Iter.map(objs, transform) ; }
static Iterator<Pair<Integer, Record>> summarizeDataBlocks(Iterator<Pair<Integer, Record>> iter, RecordBufferPageMgr recordPageMgr) { divider() ; List<Pair<Integer, Record>> pairs = Iter.toList(iter) ; System.out.println("summarizeDataBlocks: " + pairs) ; for ( Pair<Integer, Record> pair : pairs ) { 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 pairs.iterator() ; }
static Iterator<Pair<Integer, Record>> summarizeDataBlocks(Iterator<Pair<Integer, Record>> iter, RecordBufferPageMgr recordPageMgr) { divider() ; List<Pair<Integer, Record>> pairs = Iter.toList(iter) ; System.out.println("summarizeDataBlocks: " + pairs) ; for ( Pair<Integer, Record> pair : pairs ) { 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 pairs.iterator() ; }
private static Iterator<Pair<NodeId, Node>> all(ObjectFile objFile) { Iterator<Pair<Long, ByteBuffer>> objs = objFile.all() ; Function<Pair<Long, ByteBuffer>, Pair<NodeId, Node>> transform = item -> { NodeId id = NodeId.create(item.car().longValue()); ByteBuffer bb = item.cdr(); Node n = NodeLib.decode(bb); return new Pair<>(id, n); }; return Iter.map(objs, transform) ; }
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() ; }
static Iterator<Pair<Integer, Record>> summarizeIndexBlocks(Iterator<Pair<Integer, Record>> iter2, BPTreeNodeMgr bptNodeMgr) { divider() ; List<Pair<Integer, Record>> pairs = Iter.toList(iter2) ; for ( Pair<Integer, Record> pair : pairs ) { BPTreeNode bpNode = bptNodeMgr.getRead(pair.car(), BPlusTreeParams.RootParent) ; String hr = "null" ; if ( !bpNode.getRecordBuffer().isEmpty() ) hr = bpNode.getRecordBuffer().getHigh().toString() ; System.out.printf("%s -- BPTreeNode: %d (%d) -> [%s]\n", pair, bpNode.getId(), bpNode.getCount(), hr) ; bptNodeMgr.release(bpNode) ; } return pairs.iterator() ; }
static Iterator<Pair<Integer, Record>> summarizeIndexBlocks(Iterator<Pair<Integer, Record>> iter2, BPTreeNodeMgr bptNodeMgr) { divider() ; List<Pair<Integer, Record>> pairs = Iter.toList(iter2) ; for ( Pair<Integer, Record> pair : pairs ) { BPTreeNode bpNode = bptNodeMgr.getRead(pair.car(), BPlusTreeParams.RootParent) ; String hr = "null" ; if ( !bpNode.getRecordBuffer().isEmpty() ) hr = bpNode.getRecordBuffer().getHigh().toString() ; System.out.printf("%s -- BPTreeNode: %d (%d) -> [%s]\n", pair, bpNode.getId(), bpNode.getCount(), hr) ; bptNodeMgr.release(bpNode) ; } return pairs.iterator() ; }
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) ; } //BPTreeNode => BPTree copy. BPTreeNode node = bpt2.getNodeManager().getRead(pair.car(), BPlusTreeParams.RootParent) ; copyBPTreeNode(node, root, bpt2) ; bpt2.getNodeManager().release(node) ; }
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); }