protected void sync() throws IOException { List<Throwable> exceptions = new ArrayList<>(); for (TripleIndex index : indexes) { try { index.getBTree().sync(); } catch (Throwable e) { exceptions.add(e); } } if (!exceptions.isEmpty()) { throw new IOException(exceptions.get(0)); } }
protected void sync() throws IOException { List<Throwable> exceptions = new ArrayList<>(); for (TripleIndex index : indexes) { try { index.getBTree().sync(); } catch (Throwable e) { exceptions.add(e); } } if (!exceptions.isEmpty()) { throw new IOException(exceptions.get(0)); } }
for (TripleIndex index : indexes) { try { index.getBTree().close();
RecordIterator sourceIter = null; try { addedBTree = addedIndex.getBTree(); sourceIter = sourceIndex.getBTree().iterateAll(); byte[] value = null; while ((value = sourceIter.next()) != null) { TripleIndex removedIndex = currentIndexes.remove(fieldSeq); boolean deleted = removedIndex.getBTree().delete();
BTree btree = index.getBTree();
BTree btree = index.getBTree();
BTree btree = index.getBTree();
BTree btree = index.getBTree();
BTree btree = index.getBTree();
BTree btree = index.getBTree();
for (TripleIndex index : indexes) { try { index.getBTree().close();
private void checkAllCommitted() throws IOException { for (TripleIndex index : indexes) { System.out.println("Checking " + index + " index"); BTree btree = index.getBTree(); RecordIterator iter = btree.iterateAll(); try { for (byte[] data = iter.next(); data != null; data = iter.next()) { byte flags = data[FLAG_IDX]; boolean wasAdded = (flags & ADDED_FLAG) != 0; boolean wasRemoved = (flags & REMOVED_FLAG) != 0; boolean wasToggled = (flags & TOGGLE_EXPLICIT_FLAG) != 0; if (wasAdded || wasRemoved || wasToggled) { System.out.println("unexpected triple: " + ByteArrayUtil.toHexString(data)); } } } finally { iter.close(); } } }
private void checkAllCommitted() throws IOException { for (TripleIndex index : indexes) { System.out.println("Checking " + index + " index"); BTree btree = index.getBTree(); RecordIterator iter = btree.iterateAll(); try { for (byte[] data = iter.next(); data != null; data = iter.next()) { byte flags = data[FLAG_IDX]; boolean wasAdded = (flags & ADDED_FLAG) != 0; boolean wasRemoved = (flags & REMOVED_FLAG) != 0; boolean wasToggled = (flags & TOGGLE_EXPLICIT_FLAG) != 0; if (wasAdded || wasRemoved || wasToggled) { System.out.println("unexpected triple: " + ByteArrayUtil.toHexString(data)); } } } finally { iter.close(); } } }
private RecordIterator getTriplesUsingIndex(int subj, int pred, int obj, int context, int flags, int flagsMask, TripleIndex index, boolean rangeSearch) { byte[] searchKey = getSearchKey(subj, pred, obj, context, flags); byte[] searchMask = getSearchMask(subj, pred, obj, context, flagsMask); if (rangeSearch) { // Use ranged search byte[] minValue = getMinValue(subj, pred, obj, context); byte[] maxValue = getMaxValue(subj, pred, obj, context); return index.getBTree().iterateRangedValues(searchKey, searchMask, minValue, maxValue); } else { // Use sequential scan return index.getBTree().iterateValues(searchKey, searchMask); } }
public void startTransaction() throws IOException { txnStatusFile.setTxnStatus(TxnStatus.ACTIVE); // Create a record cache for storing updated triples with a maximum of // some 10% of the number of triples long maxRecords = indexes.get(0).getBTree().getValueCountEstimate() / 10L; if (updatedTriplesCache == null) { updatedTriplesCache = new SortedRecordCache(dir, RECORD_LENGTH, maxRecords, new TripleComparator("spoc")); } else { assert updatedTriplesCache.getRecordCount() == 0L : "updatedTripleCache should have been cleared upon commit or rollback"; updatedTriplesCache.setMaxRecords(maxRecords); } }
private RecordIterator getTriplesUsingIndex(int subj, int pred, int obj, int context, int flags, int flagsMask, TripleIndex index, boolean rangeSearch) { byte[] searchKey = getSearchKey(subj, pred, obj, context, flags); byte[] searchMask = getSearchMask(subj, pred, obj, context, flagsMask); if (rangeSearch) { // Use ranged search byte[] minValue = getMinValue(subj, pred, obj, context); byte[] maxValue = getMaxValue(subj, pred, obj, context); return index.getBTree().iterateRangedValues(searchKey, searchMask, minValue, maxValue); } else { // Use sequential scan return index.getBTree().iterateValues(searchKey, searchMask); } }
public void startTransaction() throws IOException { txnStatusFile.setTxnStatus(TxnStatus.ACTIVE); // Create a record cache for storing updated triples with a maximum of // some 10% of the number of triples long maxRecords = indexes.get(0).getBTree().getValueCountEstimate() / 10L; if (updatedTriplesCache == null) { updatedTriplesCache = new SortedRecordCache(dir, RECORD_LENGTH, maxRecords, new TripleComparator("spoc")); } else { assert updatedTriplesCache.getRecordCount() == 0L : "updatedTripleCache should have been cleared upon commit or rollback"; updatedTriplesCache.setMaxRecords(maxRecords); } }
public void clear() throws IOException { for (TripleIndex index : indexes) { index.getBTree().clear(); } }
public void clear() throws IOException { for (TripleIndex index : indexes) { index.getBTree().clear(); } }