private <T> void search(IIndexAccessor indexAccessor, RangePredicate rangePred, List<T> results, IValueExtractor<T> valueExtractor, TxnId txnId) throws HyracksDataException, RemoteException, AlgebricksException { IIndexCursor rangeCursor = indexAccessor.createSearchCursor(false); try { indexAccessor.search(rangeCursor, rangePred); try { while (rangeCursor.hasNext()) { rangeCursor.next(); T result = valueExtractor.getValue(txnId, rangeCursor.getTuple()); if (result != null) { results.add(result); } } } finally { rangeCursor.close(); } } finally { rangeCursor.destroy(); } }
rangeCursor.next(); final ITupleReference ref = rangeCursor.getTuple(); final Dataset ds = valueExtractor.getValue(txnId, ref); int datasetId = Math.max(ds.getDatasetId(), DatasetIdFactory.generateAlternatingDatasetId(ds.getDatasetId()));