@Override public void doDestroy() throws HyracksDataException { if (btreeCursors != null) { for (int i = 0; i < numBTrees; ++i) { if (btreeCursors[i] != null) { btreeCursors[i].destroy(); } } } }
private boolean searchMemBTrees(ITupleReference tuple, int lastBTreeToSearch) throws HyracksDataException { for (int i = 0; i < lastBTreeToSearch; i++) { btreeCursors[i].close(); btreeRangePredicate.setHighKey(tuple, true); btreeRangePredicate.setLowKey(tuple, true); btreeAccessors[i].search(btreeCursors[i], btreeRangePredicate); try { if (btreeCursors[i].hasNext()) { return false; } } finally { btreeCursors[i].close(); } } return true; }
if (btreeCursors[i].hasNext()) { btreeCursors[i].next(); if (((ILSMTreeTupleReference) btreeCursors[i].getTuple()).isAntimatter()) { if (reconciled) { searchCallback.cancel(predicate.getLowKey()); btreeCursors[i].close(); return false; } else { frameTuple = btreeCursors[i].getTuple(); foundTuple = true; foundIn = i; btreeCursors[i].close(); searchCallback.reconcile(predicate.getLowKey()); reconciled = true; if (btreeCursors[i].hasNext()) { btreeCursors[i].next(); if (((ILSMTreeTupleReference) btreeCursors[i].getTuple()).isAntimatter()) { searchCallback.cancel(predicate.getLowKey()); btreeCursors[i].close(); return false; } else { frameTuple = btreeCursors[i].getTuple(); foundTuple = true; searchCallback.complete(predicate.getLowKey());
private int scan(IIndexTestContext ctx, ITreeIndexCursor diskOrderCursor) throws HyracksDataException { int actualCount = 0; while (diskOrderCursor.hasNext()) { diskOrderCursor.next(); ITupleReference tuple = diskOrderCursor.getTuple(); CheckTuple checkTuple = createCheckTupleFromTuple(tuple, ctx.getFieldSerdes(), ctx.getKeyFieldCount()); if (!checkDiskOrderScanResult(tuple, checkTuple, ctx)) { fail("Disk-order scan returned unexpected answer: " + checkTuple.toString()); } actualCount++; } return actualCount; }
private void closeCursors() throws HyracksDataException { if (btreeCursors != null) { for (int i = 0; i < numBTrees; ++i) { if (btreeCursors[i] != null) { btreeCursors[i].close(); } } } }
private void search(ITreeIndexCursor cursor, ISearchPredicate searchPred, RTreeOpContext ctx) throws HyracksDataException { ctx.reset(); ctx.setCursor(cursor); cursor.setBufferCache(bufferCache); cursor.setFileId(getFileId()); ctx.getCursorInitialState().setRootPage(rootPage); ctx.getCursor().open(ctx.getCursorInitialState(), searchPred); }
private void search(ITreeIndexCursor cursor, ISearchPredicate searchPred, BTreeOpContext ctx) throws HyracksDataException { ctx.reset(); ctx.setPred((RangePredicate) searchPred); ctx.setCursor(cursor); // simple index scan if (ctx.getPred().getLowKeyComparator() == null) { ctx.getPred().setLowKeyComparator(ctx.getCmp()); } if (ctx.getPred().getHighKeyComparator() == null) { ctx.getPred().setHighKeyComparator(ctx.getCmp()); } // we use this loop to deal with possibly multiple operation restarts // due to ongoing structure modifications during the descent boolean repeatOp = true; while (repeatOp && ctx.getOpRestarts() < MAX_RESTARTS) { performOp(rootPage, null, true, ctx); // if we reach this stage then we need to restart from the (possibly // new) root if (!ctx.getPageLsns().isEmpty() && ctx.getPageLsns().getLast() == RESTART_OP) { ctx.getPageLsns().removeLast(); // pop the restart op indicator continue; } repeatOp = false; } cursor.setBufferCache(bufferCache); cursor.setFileId(getFileId()); }
ctx.getCursorInitialState().setPage(node); ctx.getCursorInitialState().setPageId(pageId); ctx.getCursor().open(ctx.getCursorInitialState(), ctx.getPred()); break;
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(); } }
@Override public void doClose() throws HyracksDataException { if (!open) { return; } currentCursor = 0; foundNext = false; if (numMemoryComponents > 0) { for (int i = 0; i < numMemoryComponents; i++) { mutableRTreeCursors[i].close(); btreeCursors[i].close(); } } super.doClose(); }
ctx.getPred().setHighKeyComparator(ctx.getCmp()); cursor.setBufferCache(bufferCache); cursor.setFileId(getFileId());
@Override public void destroy() throws HyracksDataException { if (destroyed) { return; } destroyed = true; if (cursor != null) { cursor.destroy(); } } }
btreeCursors[i].close();
@Override public void doDestroy() throws HyracksDataException { if (!open) { return; } if (numMemoryComponents > 0) { for (int i = 0; i < numMemoryComponents; i++) { mutableRTreeCursors[i].destroy(); btreeCursors[i].destroy(); } } currentCursor = 0; open = false; super.doDestroy(); }