@Override public BatchingVisitable<RowResult<byte[]>> getRange(final TableReference tableRef, final RangeRequest range) { checkGetPreconditions(tableRef); if (range.isEmptyRange()) { return BatchingVisitables.emptyBatchingVisitable(); } hasReads = true; return new AbstractBatchingVisitable<RowResult<byte[]>>() { @Override public <K extends Exception> void batchAcceptSizeHint( int userRequestedSize, ConsistentVisitor<RowResult<byte[]>, K> visitor) throws K { ensureUncommitted(); int requestSize = range.getBatchHint() != null ? range.getBatchHint() : userRequestedSize; int preFilterBatchSize = getRequestHintToKvStore(requestSize); Validate.isTrue(!range.isReverse(), "we currently do not support reverse ranges"); getBatchingVisitableFromIterator( tableRef, range, requestSize, visitor, preFilterBatchSize); } }; }
private <T> ClosableIterator<RowResult<T>> getRangeWithPageCreator( RowGetter rowGetter, SlicePredicate slicePredicate, ColumnGetter columnGetter, RangeRequest rangeRequest, Supplier<ResultsExtractor<T>> resultsExtractor, long startTs) { if (rangeRequest.isReverse()) { throw new UnsupportedOperationException(); } if (rangeRequest.isEmptyRange()) { return ClosableIterators.wrap(ImmutableList.<RowResult<T>>of().iterator()); } CassandraRangePagingIterable<T> rowResults = new CassandraRangePagingIterable<>( rowGetter, slicePredicate, columnGetter, rangeRequest, resultsExtractor, startTs ); return ClosableIterators.wrap(rowResults.iterator()); } }
@Test public void testEmpty() { RangeRequest request = RangeRequest.builder().endRowExclusive(RangeRequests.getFirstRowName()).build(); Assert.assertTrue(request.isEmptyRange()); request = RangeRequest.reverseBuilder().endRowExclusive(RangeRequests.getLastRowName()).build(); Assert.assertTrue(request.isEmptyRange()); }
@Override public BatchingVisitable<RowResult<byte[]>> getRange(final TableReference tableRef, final RangeRequest range) { checkGetPreconditions(tableRef); if (range.isEmptyRange()) { return BatchingVisitables.emptyBatchingVisitable(); } hasReads = true; return new AbstractBatchingVisitable<RowResult<byte[]>>() { @Override public <K extends Exception> void batchAcceptSizeHint( int userRequestedSize, ConsistentVisitor<RowResult<byte[]>, K> visitor) throws K { ensureUncommitted(); int requestSize = range.getBatchHint() != null ? range.getBatchHint() : userRequestedSize; int preFilterBatchSize = getRequestHintToKvStore(requestSize); Validate.isTrue(!range.isReverse(), "we currently do not support reverse ranges"); getBatchingVisitableFromIterator( tableRef, range, requestSize, visitor, preFilterBatchSize); } }; }
private <T> ClosableIterator<RowResult<T>> getRangeWithPageCreator( RowGetter rowGetter, SlicePredicate slicePredicate, ColumnGetter columnGetter, RangeRequest rangeRequest, Supplier<ResultsExtractor<T>> resultsExtractor, long startTs) { if (rangeRequest.isReverse()) { throw new UnsupportedOperationException(); } if (rangeRequest.isEmptyRange()) { return ClosableIterators.wrap(ImmutableList.<RowResult<T>>of().iterator()); } CassandraRangePagingIterable<T> rowResults = new CassandraRangePagingIterable<>( rowGetter, slicePredicate, columnGetter, rangeRequest, resultsExtractor, startTs ); return ClosableIterators.wrap(rowResults.iterator()); } }