/** * Returns a permuting tuple reference that projects away the document field(s) of a tuple, only leaving the key * fields. */ private PermutingTupleReference createKeysOnlyTupleReference() { // Project away token fields. int[] keyFieldPermutation = new int[invListTypeTraits.length]; int numTokenFields = tokenTypeTraits.length; for (int i = 0; i < invListTypeTraits.length; i++) { keyFieldPermutation[i] = numTokenFields + i; } return new PermutingTupleReference(keyFieldPermutation); }
public void reset(ITupleReference tuple) { this.tuple = tuple; permutingTuple.reset(tuple); }
protected void checkReturnedTuple(OrderedIndexTestContext ctx, ITupleReference tuple, ISerializerDeserializer[] fieldSerdes, int componentPos, boolean antimatter, Object value) throws HyracksDataException { int actualComponentPos = IntegerPointable.getInteger(tuple.getFieldData(0), tuple.getFieldStart(0)); Assert.assertEquals("Check returned component position", componentPos, actualComponentPos); boolean actualAntiMatter = BooleanPointable.getBoolean(tuple.getFieldData(1), tuple.getFieldStart(1)); Assert.assertEquals("Check returned anti-matter flag", antimatter, actualAntiMatter); int[] permutation = new int[ctx.getFieldCount()]; for (int i = 0; i < permutation.length; i++) { permutation[i] = i + 2; } PermutingTupleReference originalTuple = new PermutingTupleReference(permutation); originalTuple.reset(tuple); for (int i = 0; i < fieldSerdes.length; i++) { ByteArrayInputStream inStream = new ByteArrayInputStream(originalTuple.getFieldData(i), originalTuple.getFieldStart(i), originalTuple.getFieldLength(i)); DataInput dataIn = new DataInputStream(inStream); Object actualObj = fieldSerdes[i].deserialize(dataIn); if (!actualObj.equals(value)) { fail("Actual and expected fields do not match on field " + i + ".\nExpected: " + value + "\nActual : " + actualObj); } } }
private void setMatterTuple(ITupleReference diskTuple, int cursorIndex) throws HyracksDataException { if (tupleBuilder == null) { tupleBuilder = new ArrayTupleBuilder(diskTuple.getFieldCount() + 2); antiMatterTupleBuilder = new ArrayTupleBuilder(diskTuple.getFieldCount() + 2); int[] permutation = new int[diskTuple.getFieldCount()]; for (int i = 0; i < permutation.length; i++) { permutation[i] = i + 2; } originalTuple = new PermutingTupleReference(permutation); } //build the matter tuple buildTuple(tupleBuilder, diskTuple, cursorIndex, MATTER_TUPLE_FLAG); outputTuple.reset(tupleBuilder.getFieldEndOffsets(), tupleBuilder.getByteArray()); originalTuple.reset(outputTuple); }
fieldPermutation[i] = i; PermutingTupleReference tokenTuple = new PermutingTupleReference(fieldPermutation); IIndexOperationContext opCtx = new OnDiskInvertedIndexOpContext(btree); while (btreeCursor.hasNext()) { btreeCursor.next(); tokenTuple.reset(btreeCursor.getTuple());
public LSMRTreeSearchCursor(ILSMIndexOperationContext opCtx, int[] buddyBTreeFields) { super(opCtx); currentCursor = 0; this.btreeTuple = new PermutingTupleReference(buddyBTreeFields); }
private void updateFilter(ITupleReference tuple) throws HyracksDataException { filterTuple.reset(tuple); filter.update(filterTuple, filterCmp, NoOpOperationCallback.INSTANCE); }
public LSMBTreeWithBuddySearchCursor(ILSMIndexOperationContext opCtx, int[] buddyBTreeFields) { super(opCtx); currentCursor = 0; this.buddyBTreeTuple = new PermutingTupleReference(buddyBTreeFields); }
@Override public ITupleReference delete(ITupleReference tuple) throws HyracksDataException { indexTuple.reset(tuple); updateFilter(tuple); return indexTuple; }
public DualTupleReference(int[] fieldPermutation) { permutingTuple = new PermutingTupleReference(fieldPermutation); }
@Override public ITupleReference add(ITupleReference tuple) throws HyracksDataException { indexTuple.reset(tuple); updateFilter(tuple); return indexTuple; }
public FilterBulkLoader(ILSMComponentFilter filter, ITreeIndex treeIndex, ILSMComponentFilterManager filterManager, int[] indexFields, int[] filterFields, MultiComparator filterCmp) { this.filter = filter; this.treeIndex = treeIndex; this.filterManager = filterManager; this.indexTuple = new PermutingTupleReference(indexFields); this.filterTuple = new PermutingTupleReference(filterFields); this.filterCmp = filterCmp; }
@Override public ITupleReference doGetTuple() { resultTuple.reset(btreeCursor.getTuple()); return resultTuple; }
public LSMBTreeWithBuddySortedCursor(ILSMIndexOperationContext opCtx, int[] buddyBTreeFields) throws HyracksDataException { super(opCtx); this.buddyBtreeTuple = new PermutingTupleReference(buddyBTreeFields); close(); }
private void addMatterTuple(ITupleReference tuple) throws HyracksDataException { sourceTuple.reset(tuple); componentBulkLoader.add(sourceTuple); }
public LSMRTreeSortedCursor(ILSMIndexOperationContext opCtx, ILinearizeComparatorFactory linearizer, int[] buddyBTreeFields) throws HyracksDataException { super(opCtx); this.linearizeCmp = linearizer.createBinaryComparator(); this.btreeTuple = new PermutingTupleReference(buddyBTreeFields); close(); }
@Override public void updateFilter(ILSMIndexOperationContext ctx, ITupleReference tuple) throws HyracksDataException { if (ctx.getFilterTuple() != null && !ctx.isFilterSkipped()) { if (ctx.isRecovery()) { memoryComponents.get(currentMutableComponentId.get()).getLSMComponentFilter().update(tuple, ctx.getFilterCmp(), ctx.getModificationCallback()); } else { ctx.getFilterTuple().reset(tuple); memoryComponents.get(currentMutableComponentId.get()).getLSMComponentFilter() .update(ctx.getFilterTuple(), ctx.getFilterCmp(), ctx.getModificationCallback()); } } }
public AbstractLSMIndexOperationContext(ILSMIndex index, int[] treeFields, int[] filterFields, IBinaryComparatorFactory[] filterCmpFactories, ISearchOperationCallback searchCallback, IExtendedModificationOperationCallback modificationCallback, ITracer tracer) { this.index = index; this.searchCallback = searchCallback; this.modificationCallback = modificationCallback; this.componentHolder = new ArrayList<>(); this.componentsToBeMerged = new ArrayList<>(); this.componentsToBeReplicated = new ArrayList<>(); if (filterFields != null) { indexTuple = new PermutingTupleReference(treeFields); filterCmp = MultiComparator.create(filterCmpFactories); filterTuple = new PermutingTupleReference(filterFields); } else { indexTuple = null; filterCmp = null; filterTuple = null; } this.tracer = tracer; this.traceCategory = tracer.getRegistry().get(TraceUtils.INDEX_OPERATIONS); }
/** * Check deleted-keys BTrees whether they contain the key in the checkElement's tuple. */ @Override protected boolean isDeleted(PriorityQueueElement checkElement) throws HyracksDataException { keysOnlyTuple.reset(checkElement.getTuple()); int end = checkElement.getCursorIndex(); for (int i = 0; i < end; i++) { if (bloomFilters[i] != null && !bloomFilters[i].contains(keysOnlyTuple, hashes)) { continue; } deletedKeysBTreeAccessors.get(i).search(deletedKeysBTreeCursors[i], keySearchPred); try { if (deletedKeysBTreeCursors[i].hasNext()) { return true; } } finally { deletedKeysBTreeCursors[i].close(); } } return false; }