static private TupleTable create2() { TupleIndex idxSPO = TestTupleIndexRecordDirect.create("SPO") ; TupleIndex x[] = { idxSPO } ; TupleTable table = new TupleTable(3, x) ; return table ; }
static void add(TupleTable table, NodeId x1, NodeId x2, NodeId x3) { Tuple<NodeId> tuple = TupleFactory.tuple(x1, x2, x3) ; table.add(tuple) ; }
/** Find by NodeId. */ @Override public Iterator<Tuple<NodeId>> find(Tuple<NodeId> tuple) { // All find/*, except findAll, comes through this operation so startRead/finishRead/checkIterator only needs to happen here. try { startRead() ; // find worker - need also protect iterators that access the node table. Iterator<Tuple<NodeId>> iter = tupleTable.find(tuple) ; return iteratorControl(iter) ; } finally { finishRead() ; } }
public static void dumpNodeTupleTable(TupleTable tupleTable) { int N = tupleTable.getTupleLen() ; NodeId[] nodeIds = new NodeId[N] ; Arrays.fill(nodeIds, NodeId.NodeIdAny) ; Tuple<NodeId> t = TupleFactory.asTuple(nodeIds) ; Iterator<Tuple<NodeId>> iter = tupleTable.find(t) ; for ( ; iter.hasNext() ; ) { Tuple<NodeId> tuple = iter.next() ; System.out.print(tuple) ; System.out.print("\n") ; } } }
private void dropSecondaryIndexes() { // Remember first ... // CAUTION - the TupleTable may be a view and these return the real tuple table. numIndexes = nodeTupleTable.getTupleTable().numIndexes() ; primaryIndex = nodeTupleTable.getTupleTable().getIndex(0) ; secondaryIndexes = ArrayUtils.alloc(TupleIndex.class, numIndexes-1) ; System.arraycopy(nodeTupleTable.getTupleTable().getIndexes(), 1, secondaryIndexes, 0, numIndexes-1) ; // Set non-primary indexes to null. for ( int i = 1 ; i < numIndexes ; i++ ) nodeTupleTable.getTupleTable().setTupleIndex(i, null) ; }
/** Insert a tuple - return true if it was really added, false if it was a duplicate */ public boolean add(Tuple<NodeId> t) { if ( tupleLen != t.len() ) throw new TDBException(format("Mismatch: inserting tuple of length %d into a table of tuples of length %d", t.len(), tupleLen)) ; for ( int i = 0 ; i < indexes.length ; i++ ) { if ( indexes[i] == null ) continue ; if ( ! indexes[i].add(t) ) { if ( i == 0 ) { duplicate(t) ; return false ; } unexpectedDuplicate(t, i) ; throw new TDBException(format("Secondary index duplicate: %s -> %s",indexes[i].getMapping(), t)) ; } syncNeeded = true ; } return true ; }
public static TupleIndex getIndex(String idxName, DatasetGraphTDB dsg) { System.out.println(idxName) ; TupleIndex[] indexes1 = dsg.getTripleTable().getNodeTupleTable().getTupleTable().getIndexes() ; TupleIndex[] indexes2 = dsg.getQuadTable().getNodeTupleTable().getTupleTable().getIndexes() ; TupleIndex idx = null ; for ( TupleIndex i : indexes1 ) { if ( i.getName().equals(idxName) ) return i ; } for ( TupleIndex i : indexes2 ) { if ( i.getName().equals(idxName) ) return i ; } return null ; }
@Override public final void close() { try { startWrite() ; tupleTable.close() ; nodeTable.close() ; } finally { finishWrite() ; } }
t.getTupleTable().delete(array[i]) ; array[i] = null ;
/** Clear the tuple table - does not clear the node table */ @Override public void clear() { try { startWrite() ; tupleTable.clear() ; } finally { finishWrite() ; } }
@Override public Iterator<Tuple<NodeId>> findAll() { try { startRead() ; return iteratorControl(tupleTable.getIndex(0).all()) ; } finally { finishRead() ; } }
public TupleTable(int tupleLen, TupleIndex[] indexes) { this.tupleLen = tupleLen ; this.indexes = indexes ; if ( indexes[0] == null ) throw new TDBException("TupleTable: no primary index") ; for ( TupleIndex index : indexes ) { if ( index != null && index.getTupleLength() != tupleLen ) throw new TDBException("Incompatible index: "+index.getMapping()) ; } scanAllIndex = chooseScanAllIndex(tupleLen, indexes) ; }
public static void dumpInternals(DatasetGraphTDB dsg, boolean includeNamedGraphs) { dumpNodeTable("Nodes", dsg) ; TupleIndex[] indexes1 = dsg.getTripleTable().getNodeTupleTable().getTupleTable().getIndexes() ; TupleIndex[] indexes2 = dsg.getQuadTable().getNodeTupleTable().getTupleTable().getIndexes() ; for ( TupleIndex idx : indexes1 ) { System.out.println(idx.getName()) ; dumpIndex(idx) ; } if ( ! includeNamedGraphs ) return ; for ( TupleIndex idx : indexes2 ) { System.out.println(idx.getName()) ; dumpIndex(idx) ; } }
@Override public boolean deleteRow(Node... nodes) { try { startWrite() ; NodeId n[] = new NodeId[nodes.length] ; for (int i = 0; i < nodes.length; i++) { NodeId id = idForNode(nodes[i]) ; if (NodeId.isDoesNotExist(id)) return false ; n[i] = id ; } Tuple<NodeId> t = TupleFactory.tuple(n) ; return tupleTable.delete(t) ; } finally { finishWrite() ; } }
@Test public void createFind1() { TupleTable table = create() ; add(table, n1, n2, n3) ; // Cast removes compile lint warning. Tuple<NodeId> pat = TupleFactory.tuple((NodeId)null, null, null) ; Iterator<Tuple<NodeId>> iter = table.find(pat) ; List<Tuple<NodeId>> x = Iter.toList(iter) ; int z = x.size() ; assertEquals(1, z) ; Tuple<NodeId> e1 = x.get(0) ; assertEquals(TupleFactory.tuple(n1, n2, n3) , e1) ; }
static private TupleTable create2() { TupleIndex idxSPO = TestTupleIndexRecordDirect.create("SPO") ; TupleIndex x[] = { idxSPO } ; TupleTable table = new TupleTable(3, x) ; return table ; }
static void add(TupleTable table, NodeId x1, NodeId x2, NodeId x3) { Tuple<NodeId> tuple = TupleFactory.tuple(x1, x2, x3) ; table.add(tuple) ; }
dumpTupleIndexes(nodeTupleTableTriples.getTupleTable().getIndexes()) ; dumpTupleIndexes(nodeTupleTableQuads.getTupleTable().getIndexes()) ; dumpedNodeTables.add(pntt.getNodeTable()) ; dumpTupleIndexes(prefixes.getNodeTupleTable().getTupleTable().getIndexes()) ;
@Test public void createFind1() { TupleTable table = create() ; add(table, n1, n2, n3) ; // Cast removes compile lint warning. Tuple<NodeId> pat = TupleFactory.tuple((NodeId)null, null, null) ; Iterator<Tuple<NodeId>> iter = table.find(pat) ; List<Tuple<NodeId>> x = Iter.toList(iter) ; int z = x.size() ; assertEquals(1, z) ; Tuple<NodeId> e1 = x.get(0) ; assertEquals(TupleFactory.tuple(n1, n2, n3) , e1) ; }