@Override protected int getFieldCount() { return ((ITreeIndex) index).getFieldCount(); }
protected TreeIndexState isValidTreeIndex(ITreeIndex treeIndex) throws HyracksDataException { IBufferCache bufferCache = treeIndex.getBufferCache(); treeIndex.activate(); try { int metadataPage = treeIndex.getPageManager().getMetadataPageId(); if (metadataPage < 0) { return TreeIndexState.INVALID; } ITreeIndexMetadataFrame metadataFrame = treeIndex.getPageManager().createMetadataFrame(); ICachedPage page = bufferCache.pin(BufferedFileHandle.getDiskPageId(treeIndex.getFileId(), metadataPage), false); page.acquireReadLatch(); try { metadataFrame.setPage(page); if (!metadataFrame.isValid()) { return TreeIndexState.INVALID; } else if (metadataFrame.getVersion() != ITreeIndexFrame.Constants.VERSION) { return TreeIndexState.VERSION_MISMATCH; } else { return TreeIndexState.VALID; } } finally { page.releaseReadLatch(); bufferCache.unpin(page); } } finally { treeIndex.deactivate(); } }
@Override protected ISearchPredicate createSearchPredicate() { ITreeIndex treeIndex = (ITreeIndex) index; lowKeySearchCmp = BTreeUtils.getSearchMultiComparator(treeIndex.getComparatorFactories(), lowKey); highKeySearchCmp = BTreeUtils.getSearchMultiComparator(treeIndex.getComparatorFactories(), highKey); return new RangePredicate(lowKey, highKey, lowKeyInclusive, highKeyInclusive, lowKeySearchCmp, highKeySearchCmp, minFilterKey, maxFilterKey); }
public static void markAsValid(ITreeIndex treeIndex, boolean forceToDisk, IPageWriteFailureCallback callback) throws HyracksDataException { int fileId = treeIndex.getFileId(); IBufferCache bufferCache = treeIndex.getBufferCache(); treeIndex.getPageManager().close(callback); if (callback.hasFailed()) { throw HyracksDataException.create(callback.getFailure()); } // Force modified metadata page to disk. // If the index is not durable, then the flush is not necessary. if (forceToDisk) { bufferCache.force(fileId, true); } }
treeIndex.create(); treeIndex.activate(); IIndexBulkLoader bulkLoader = treeIndex.createBulkLoader(0.7f, false, ins, true); ArrayTupleBuilder tb = new ArrayTupleBuilder(fieldCount); ArrayTupleReference tuple = new ArrayTupleReference(); IIndexAccessor indexAccessor = treeIndex.createAccessor(actx); treeIndex.validate(); treeIndex.deactivate(); treeIndex.destroy();
IIOManager ioManager = ctx.getIoManager(); FileReference fileRef = ioManager.resolve(resource.getPath()); TreeIndexStatsGatherer statsGatherer = new TreeIndexStatsGatherer(bufferCache, treeIndex.getPageManager(), fileRef, treeIndex.getRootPageId()); TreeIndexStats stats = statsGatherer.gatherStats(treeIndex.getLeafFrameFactory().createFrame(), treeIndex.getInteriorFrameFactory().createFrame(), treeIndex.getPageManager().createMetadataFrame());
private void doScan(ITreeIndex treeIndex, ITreeIndexAccessor indexAccessor, FrameTupleAppender appender) throws IOException { int fieldCount = treeIndex.getFieldCount(); ArrayTupleBuilder tb = new ArrayTupleBuilder(fieldCount); DataOutput dos = tb.getDataOutput(); ITreeIndexFrame cursorFrame = treeIndex.getLeafFrameFactory().createFrame(); ITreeIndexCursor cursor = new TreeIndexDiskOrderScanCursor(cursorFrame); try { indexAccessor.diskOrderScan(cursor); try { while (cursor.hasNext()) { tb.reset(); cursor.next(); ITupleReference frameTuple = cursor.getTuple(); for (int i = 0; i < frameTuple.getFieldCount(); i++) { dos.write(frameTuple.getFieldData(i), frameTuple.getFieldStart(i), frameTuple.getFieldLength(i)); tb.addFieldEndOffset(); } FrameUtils.appendToWriter(writer, appender, tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize()); } } finally { cursor.close(); } } finally { cursor.destroy(); } }
private void scan(FrameTupleAppender appender) throws IOException { ITreeIndex treeIndex = (ITreeIndex) treeIndexHelper.getIndexInstance(); LocalResource resource = treeIndexHelper.getResource(); ISearchOperationCallback searchCallback = searchCallbackFactory.createSearchOperationCallback(resource.getId(), ctx, null); IIndexAccessParameters iap = new IndexAccessParameters(NoOpOperationCallback.INSTANCE, searchCallback); ITreeIndexAccessor indexAccessor = (ITreeIndexAccessor) treeIndex.createAccessor(iap); try { doScan(treeIndex, indexAccessor, appender); } finally { indexAccessor.destroy(); } }
@Override public boolean readFilter(ILSMComponentFilter filter, ITreeIndex treeIndex) throws HyracksDataException { IMetadataPageManager treeMetaManager = (IMetadataPageManager) treeIndex.getPageManager(); ILSMComponentFilterReference filterFrame = filterFrameFactory.createFrame(); treeMetaManager.get(treeMetaManager.createMetadataFrame(), FILTER_KEY, filterFrame); // TODO: Filters never have one of min/max set and the other not if (!filterFrame.isMinTupleSet() || !filterFrame.isMaxTupleSet()) { return false; } List<ITupleReference> filterTuples = new ArrayList<>(); filterTuples.add(filterFrame.getMinTuple()); filterTuples.add(filterFrame.getMaxTuple()); updateFilter(filter, filterTuples, NoOpOperationCallback.INSTANCE); return true; }
@Override protected IIndexCursor createCursor() { ITreeIndex treeIndex = (ITreeIndex) index; ITreeIndexFrame cursorFrame = treeIndex.getLeafFrameFactory().createFrame(); return new BTreeRangeSearchCursor((IBTreeLeafFrame) cursorFrame, true); }
treeIndex.create(); treeIndex.activate(); IIndexBulkLoader bulkLoader = treeIndex.createBulkLoader(0.7f, true, ins, true); for (int j = 0; j < ins; j++) { if (j > i) { treeIndex.deactivate(); treeIndex.destroy();
public static void insertData(ITreeIndex lsmBtree) throws HyracksDataException { ArrayTupleBuilder tb = new ArrayTupleBuilder(FIELD_COUNT); ArrayTupleReference tuple = new ArrayTupleReference(); IndexAccessParameters actx = new IndexAccessParameters(TestOperationCallback.INSTANCE, TestOperationCallback.INSTANCE); IIndexAccessor indexAccessor = lsmBtree.createAccessor(actx); try { int numInserts = 10000; for (int i = 0; i < numInserts; i++) { int f0 = RND.nextInt() % numInserts; int f1 = 5; TupleUtils.createIntegerTuple(tb, tuple, f0, f1); try { indexAccessor.insert(tuple); } catch (HyracksDataException e) { if (e.getErrorCode() != ErrorCode.DUPLICATE_KEY) { e.printStackTrace(); throw e; } } catch (Exception e) { e.printStackTrace(); throw e; } } } finally { indexAccessor.destroy(); } } }
@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); } }
RTreePolicyType.RTREE, null, btreeFields, null, null, null); treeIndex.create(); treeIndex.activate(); IndexAccessParameters actx = new IndexAccessParameters(TestOperationCallback.INSTANCE, TestOperationCallback.INSTANCE); IIndexAccessor indexAccessor = treeIndex.createAccessor(actx); indexAccessor.insert(tuple); treeIndex.deactivate(); treeIndex.destroy();
@Override protected int getFieldCount() { return ((ITreeIndex) index).getFieldCount(); }
@Override protected ISearchPredicate createSearchPredicate() { ITreeIndex treeIndex = (ITreeIndex) index; cmp = RTreeUtils.getSearchMultiComparator(treeIndex.getComparatorFactories(), searchKey); return new SearchPredicate(searchKey, cmp, minFilterKey, maxFilterKey); }
RTreePolicyType.RSTARTREE, null, btreeFields, null, null, null); treeIndex.create(); treeIndex.activate(); IndexAccessParameters actx = new IndexAccessParameters(TestOperationCallback.INSTANCE, TestOperationCallback.INSTANCE); IIndexAccessor indexAccessor = treeIndex.createAccessor(actx); indexAccessor.insert(tuple); treeIndex.deactivate(); treeIndex.destroy();
@Override protected int getFieldCount() { return ((ITreeIndex) index).getFieldCount() + 2; }
private RangePredicate createSearchPredicate() { keySearchCmp = BTreeUtils.getSearchMultiComparator(((ITreeIndex) index).getComparatorFactories(), key); return new RangePredicate(key, key, true, true, keySearchCmp, keySearchCmp, null, null); }
treeIndex.create(); treeIndex.activate(); IIndexAccessor indexAccessor = treeIndex.createAccessor(actx); ArrayTupleBuilder tb = new ArrayTupleBuilder(fieldCount); ArrayTupleReference tuple = new ArrayTupleReference(); treeIndex.validate(); treeIndex.deactivate(); treeIndex.destroy();