@Override public void writeFilter(ILSMComponentFilter filter, ITreeIndex treeIndex) throws HyracksDataException { IMetadataPageManager treeMetaManager = (IMetadataPageManager) treeIndex.getPageManager(); ILSMComponentFilterReference filterFrame = filterFrameFactory.createFrame(); try { if (filter.getMinTuple() != null) { filterFrame.writeMinTuple(filter.getMinTuple()); } if (filter.getMaxTuple() != null) { filterFrame.writeMaxTuple(filter.getMaxTuple()); } } finally { treeMetaManager.put(treeMetaManager.createMetadataFrame(), FILTER_KEY, filterFrame); } }
@Override public void updateFilter(ILSMComponentFilter filter, List<ITupleReference> filterTuples, IExtendedModificationOperationCallback opCallback) throws HyracksDataException { MultiComparator filterCmp = MultiComparator.create(filter.getFilterCmpFactories()); for (ITupleReference tuple : filterTuples) { filter.update(tuple, filterCmp, opCallback); } }
@Override public ITupleReference getFilterMinTuple() { ILSMComponentFilter filter = getFilter(); return filter == null ? null : filter.getMinTuple(); }
@Override public ITupleReference getFilterMaxTuple() { ILSMComponentFilter filter = getFilter(); return filter == null ? null : filter.getMaxTuple(); }
private void updateFilter(ITupleReference tuple) throws HyracksDataException { filterTuple.reset(tuple); filter.update(filterTuple, filterCmp, NoOpOperationCallback.INSTANCE); }
@Override public final void reset() throws HyracksDataException { state = ComponentState.INACTIVE; isModified.set(false); metadata.reset(); if (filter != null) { filter.reset(); } doReset(); lsmIndex.memoryComponentsReset(); // a flush can be pending on a component that just completed its flush... here is when this can happen: // primary index has 2 components, secondary index has 2 components. // 2 flushes are scheduled on each p1, p2, s1, and s2. // p1 and p2 both finish. primary component 1 gets full and secondary doesn't have any entries (optional field). // then flush is scheduled on p1, s1 will have a pending flush in that case. if (pendingFlushes > 0) { schedule(LSMIOOperationType.FLUSH); pendingFlushes--; } }
for (int i = 0; i < diskComponents.size(); i++) { ILSMComponent c = diskComponents.get(i); if (c.getLSMComponentFilter().satisfy( ((AbstractSearchPredicate) ctx.getSearchPredicate()).getMinFilterTuple(), ((AbstractSearchPredicate) ctx.getSearchPredicate()).getMaxFilterTuple(),
@Override public IChainedComponentBulkLoader createFilterBulkLoader() throws HyracksDataException { return new FilterBulkLoader(getLSMComponentFilter(), getMetadataHolder(), getLsmIndex().getFilterManager(), getLsmIndex().getTreeFields(), getLsmIndex().getFilterFields(), MultiComparator.create(getLSMComponentFilter().getFilterCmpFactories())); }
@Override public ITupleReference getFilterMinTuple() { ILSMComponentFilter filter = getFilter(); return filter == null ? null : filter.getMinTuple(); }
@Override public ITupleReference getFilterMaxTuple() { ILSMComponentFilter filter = getFilter(); return filter == null ? null : filter.getMaxTuple(); }
@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()); } } }
private Pair<ITupleReference, ITupleReference> filterToMinMax(ILSMComponentFilter f) throws HyracksDataException { ArrayTupleBuilder builder = new ArrayTupleBuilder(1); builder.addField(f.getMinTuple().getFieldData(0), f.getMinTuple().getFieldStart(0), f.getMinTuple().getFieldLength(0)); ArrayTupleReference minCopy = new ArrayTupleReference(); minCopy.reset(builder.getFieldEndOffsets(), builder.getByteArray()); builder = new ArrayTupleBuilder(1); builder.addField(f.getMaxTuple().getFieldData(0), f.getMaxTuple().getFieldStart(0), f.getMaxTuple().getFieldLength(0)); ArrayTupleReference maxCopy = new ArrayTupleReference(); maxCopy.reset(builder.getFieldEndOffsets(), builder.getByteArray()); builder.reset(); return Pair.of(minCopy, maxCopy); }
@Override public ITupleReference getFilterMinTuple() { ILSMComponentFilter filter = getFilter(); return filter == null ? null : filter.getMinTuple(); }
@Override public ITupleReference getFilterMaxTuple() { ILSMComponentFilter filter = getFilter(); return filter == null ? null : filter.getMaxTuple(); }
List<ITupleReference> filterTuples = new ArrayList<>(); for (int i = 0; i < mergeOp.getMergingComponents().size(); ++i) { filterTuples.add(mergeOp.getMergingComponents().get(i).getLSMComponentFilter().getMinTuple()); filterTuples.add(mergeOp.getMergingComponents().get(i).getLSMComponentFilter().getMaxTuple());
@Override public ITupleReference getFilterMinTuple() { ILSMComponentFilter filter = getFilter(); return filter == null ? null : filter.getMinTuple(); }
@Override public ITupleReference getFilterMaxTuple() { ILSMComponentFilter filter = operationalComponents.get(outputElement.cursorIndex).getLSMComponentFilter(); return filter == null ? null : filter.getMaxTuple(); }
List<ITupleReference> filterTuples = new ArrayList<>(); for (int i = 0; i < mergeOp.getMergingComponents().size(); ++i) { filterTuples.add(mergeOp.getMergingComponents().get(i).getLSMComponentFilter().getMinTuple()); filterTuples.add(mergeOp.getMergingComponents().get(i).getLSMComponentFilter().getMaxTuple());
@Override public ITupleReference getFilterMinTuple() { ILSMComponentFilter filter = getFilter(); return filter == null ? null : filter.getMinTuple(); }
@Override public ITupleReference getFilterMaxTuple() { ILSMComponentFilter filter = getFilter(); return filter == null ? null : filter.getMaxTuple(); }