private TupleIndex buildTupleIndex(FileSet fileSet, ColumnMap colMap, String name, StoreParams params) { RecordFactory recordFactory = new RecordFactory(SystemTDB.SizeOfNodeId * colMap.length(), 0) ; RangeIndex rIdx = /*rangeIndexBuilder.*/buildRangeIndex(fileSet, recordFactory, params) ; TupleIndex tIdx = new TupleIndexRecord(colMap.length(), colMap, name, recordFactory, rIdx) ; return tIdx ; }
/** * 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); }
static void add(TupleIndexRecord index, NodeId x1, NodeId x2, NodeId x3) { Tuple<NodeId> tuple = TupleFactory.tuple(x1, x2, x3) ; index.add(tuple) ; }
@Test public void TupleIndexRecordFindScan_2() { TupleIndexRecord index = create("SPO") ; add(index, n1, n2, n3) ; add(index, n1, n2, n4) ; Tuple<NodeId> tuple2 = TupleFactory.tuple(null, null, n3) ; Iterator<Tuple<NodeId>> iter = index.findByIndex(tuple2) ; assertNull(iter) ; iter = index.findOrPartialScan(tuple2) ; assertNull(iter) ; iter = index.findOrScan(tuple2) ; assertTrue(iter.hasNext()) ; iter.next(); assertFalse(iter.hasNext()) ; }
@Test public void TupleIndexRecordSPO_2() { TupleIndexRecord index = create("SPO") ; add(index, n1, n2, n3) ; Tuple<NodeId> tuple2 = TupleFactory.tuple(n1, n2, null) ; Iterator<Tuple<NodeId>> iter = index.findByIndex(tuple2) ; assertTrue(iter.hasNext()) ; iter.next(); assertFalse(iter.hasNext()) ; }
@Test public void TupleIndexRecordSPO_3() { TupleIndexRecord index = create("SPO") ; add(index, n1, n2, n3) ; Tuple<NodeId> tuple2 = TupleFactory.tuple(n1, null, n3) ; Iterator<Tuple<NodeId>> iter = index.findByIndex(tuple2) ; assertNull(iter) ; iter = index.findOrPartialScan(tuple2) ; assertTrue(iter.hasNext()) ; iter.next(); assertFalse(iter.hasNext()) ; }
@Test public void TupleIndexRecordFindNot_3() { TupleIndexRecord index = create("SPO") ; add(index, n1, n2, n3) ; Tuple<NodeId> tuple2 = TupleFactory.tuple(n1, null, n6) ; Iterator<Tuple<NodeId>> iter = index.findOrPartialScan(tuple2) ; assertFalse(iter.hasNext()) ; }
final Iterator<Tuple<NodeId>> findOrPartialScan(Tuple<NodeId> pattern) { return findWorker(pattern, true, false); }
@Test public void TupleIndexRecordFindScan_2() { TupleIndexRecord index = create("SPO") ; add(index, n1, n2, n3) ; add(index, n1, n2, n4) ; Tuple<NodeId> tuple2 = TupleFactory.tuple(null, null, n3) ; Iterator<Tuple<NodeId>> iter = index.findByIndex(tuple2) ; assertNull(iter) ; iter = index.findOrPartialScan(tuple2) ; assertNull(iter) ; iter = index.findOrScan(tuple2) ; assertTrue(iter.hasNext()) ; iter.next(); assertFalse(iter.hasNext()) ; }
@Test public void TupleIndexRecordPOS_1() { TupleIndexRecord index = create("POS") ; add(index, n1, n2, n3) ; Tuple<NodeId> tuple2 = TupleFactory.tuple(n1, n2, n3) ; Iterator<Tuple<NodeId>> iter = index.findByIndex(tuple2) ; assertTrue("Can't find tuple", iter.hasNext()) ; iter.next(); assertFalse(iter.hasNext()) ; }
@Test public void TupleIndexRecordFindScan_1() { TupleIndexRecord index = create("SPO") ; add(index, n1, n2, n3) ; Tuple<NodeId> tuple2 = TupleFactory.tuple(n1, null, n3) ; Iterator<Tuple<NodeId>> iter = index.findByIndex(tuple2) ; assertNull(iter) ; iter = index.findOrPartialScan(tuple2) ; assertTrue(iter.hasNext()) ; iter.next(); assertFalse(iter.hasNext()) ; }
@Test public void TupleIndexRecordFindNot_3() { TupleIndexRecord index = create("SPO") ; add(index, n1, n2, n3) ; Tuple<NodeId> tuple2 = TupleFactory.tuple(n1, null, n6) ; Iterator<Tuple<NodeId>> iter = index.findOrPartialScan(tuple2) ; assertFalse(iter.hasNext()) ; }
final Iterator<Tuple<NodeId>> findOrScan(Tuple<NodeId> pattern) { return findWorker(pattern, true, true); }
@Override public TupleIndex buildTupleIndex(FileSet fileSet, ColumnMap colMap, String name, StoreParams params) { RecordFactory recordFactory = new RecordFactory(SystemTDB.SizeOfNodeId * colMap.length(), 0) ; RangeIndex rIdx = rangeIndexBuilder.buildRangeIndex(fileSet, recordFactory, params) ; TupleIndex tIdx = new TupleIndexRecord(colMap.length(), colMap, name, recordFactory, rIdx) ; return tIdx ; } }
@Test public void TupleIndexRecordPOS_2() { TupleIndexRecord index = create("POS") ; add(index, n1, n2, n3) ; Tuple<NodeId> tuple2 = TupleFactory.tuple(null, n2, null) ; Iterator<Tuple<NodeId>> iter = index.findByIndex(tuple2) ; assertTrue("Can't find tuple",iter.hasNext()) ; iter.next(); assertFalse(iter.hasNext()) ; }
@Test public void TupleIndexRecordSPO_3() { TupleIndexRecord index = create("SPO") ; add(index, n1, n2, n3) ; Tuple<NodeId> tuple2 = TupleFactory.tuple(n1, null, n3) ; Iterator<Tuple<NodeId>> iter = index.findByIndex(tuple2) ; assertNull(iter) ; iter = index.findOrPartialScan(tuple2) ; assertTrue(iter.hasNext()) ; iter.next(); assertFalse(iter.hasNext()) ; }
@Test public void TupleIndexRecordFindNot_6() { TupleIndexRecord index = create("SPO") ; add(index, n1, n2, n3) ; add(index, n4, n5, n6) ; Tuple<NodeId> tuple2 = TupleFactory.tuple(n1, null, n6) ; Iterator<Tuple<NodeId>> iter = index.findOrPartialScan(tuple2) ; assertFalse(iter.hasNext()) ; }
final Iterator<Tuple<NodeId>> findByIndex(Tuple<NodeId> pattern) { return findWorker(pattern, false, false); }
static void add(TupleIndexRecord index, NodeId x1, NodeId x2, NodeId x3) { Tuple<NodeId> tuple = TupleFactory.tuple(x1, x2, x3) ; index.add(tuple) ; }
public static TupleIndex makeTupleIndex(Location location, String primary, String indexOrder, String indexName, int keyLength) { FileSet fs = new FileSet(location, indexName) ; int readCacheSize = params.getBlockReadCacheSize() ; int writeCacheSize = params.getBlockWriteCacheSize() ; // Value part is null (zero length) RangeIndex rIndex = SetupIndex.makeRangeIndex(location, indexName, params.getBlockSize(), keyLength, 0, readCacheSize, writeCacheSize) ; TupleIndex tupleIndex = new TupleIndexRecord(primary.length(), new ColumnMap(primary, indexOrder), indexOrder, rIndex.getRecordFactory(), rIndex) ; return tupleIndex ; }