/** Find all matching tuples - a slot of NodeId.NodeIdAny (or null) means match any. * Input pattern in natural order, not index order. */ @Override protected Iterator<Tuple<NodeId>> performFind(Tuple<NodeId> pattern) { return findOrScan(pattern) ; }
/** Insert tuples */ public void addAll(List<Tuple<NodeId>> t) { // Parallel. for ( int i = 0 ; i < indexes.length ; i++ ) { if ( indexes[i] == null ) continue ; indexes[i].addAll(t) ; syncNeeded = true ; } }
public void clear() { for ( TupleIndex idx : indexes ) { if ( idx != null ) idx.clear() ; } syncNeeded = true ; }
static private TupleTable create() { TupleIndex idxSPO = TestTupleIndexRecordDirect.create("SPO") ; TupleIndex idxPOS = TestTupleIndexRecordDirect.create("POS") ; TupleIndex idxOSP = TestTupleIndexRecordDirect.create("OSP") ; TupleIndex x[] = { idxSPO, idxPOS, idxOSP } ; TupleTable table = new TupleTable(3, x) ; return table ; }
public void load(Tuple<NodeId> tuple) { for ( TupleIndex idx : indexes ) idx.add(tuple); } }
/** Insert tuples */ @Override public void addAll(Collection<Tuple<NodeId>> tuples) { for ( Tuple<NodeId> t : tuples ) add(t) ; }
@Override public void sync() { if ( syncNeeded ) { for ( TupleIndex idx : indexes ) { if ( idx != null ) idx.sync() ; } syncNeeded = false ; } }
@Override public void close() { index.close() ; } }
/** Delete a tuple */ @Override public final void delete(Tuple<NodeId> tuple) { if ( Check ) { if ( tupleLength != tuple.len() ) throw new TDBException(String.format("Mismatch: tuple length %d / index for length %d", tuple.len(), tupleLength)); } performDelete(tuple) ; }
/** Delete tuples */ public void deleteAll(List<Tuple<NodeId>> t) { // Parallel. for ( int i = 0 ; i < indexes.length ; i++ ) { if ( indexes[i] == null ) continue ; indexes[i].deleteAll(t) ; syncNeeded = true ; } }
default public TupleIndex baseTupleIndex() { TupleIndex index = this ; TupleIndex index2 = null ; while( (index2 = index.wrapped()) != null ) { index = index2 ; } return index ; } }
/** Insert a tuple */ @Override public final void add(Tuple<NodeId> tuple) { if ( Check ) { if ( tupleLength != tuple.len() ) throw new TDBException(String.format("Mismatch: tuple length %d / index for length %d", tuple.len(), tupleLength)); } performAdd(tuple) ; } /** Delete a tuple */
/** Get the BPlusTree index for a {@Link TupleIndex} */ public static BPlusTree idxBTree(TupleIndex idx) { TupleIndexRecord idxr = (TupleIndexRecord)idx; RangeIndex rIndex = idxr.getRangeIndex(); BPlusTree bpt = (BPlusTree)rIndex; return bpt; }
/** Delete tuples */ @Override public void deleteAll(Collection<Tuple<NodeId>> tuples) { for ( Tuple<NodeId> t : tuples ) delete(t) ; }
static private TupleTable create2() { TupleIndex idxSPO = TestTupleIndexRecordDirect.create("SPO") ; TupleIndex x[] = { idxSPO } ; TupleTable table = new TupleTable(3, x) ; return table ; }
private static Destination<Tuple<NodeId>> loadTuples(TupleIndex index) { return (List<Tuple<NodeId>> tuples) -> { for(Tuple<NodeId> tuple : tuples) index.add(tuple); }; } }
static private void sync(TupleIndex[] indexes) { for ( TupleIndex idx : indexes ) { if ( idx != null ) idx.sync(); } }
@Override final public void close() { for ( TupleIndex idx : indexes ) { if ( idx != null ) idx.close(); } }
static private TupleTable create2() { TupleIndex idxSPO = TestTupleIndexRecordDirect.create("SPO") ; TupleIndex x[] = { idxSPO } ; TupleTable table = new TupleTable(3, x) ; return table ; }
static private TupleTable create() { TupleIndex idxSPO = TestTupleIndexRecordDirect.create("SPO") ; TupleIndex idxPOS = TestTupleIndexRecordDirect.create("POS") ; TupleIndex idxOSP = TestTupleIndexRecordDirect.create("OSP") ; TupleIndex x[] = { idxSPO, idxPOS, idxOSP } ; TupleTable table = new TupleTable(3, x) ; return table ; }