@Override public boolean hasNext(byte[] lastToken) { if (RangeRequests.isTerminalRow(range.isReverse(), lastToken)) { return false; } else { byte[] nextStartRow = RangeRequests.getNextStartRow(range.isReverse(), lastToken); return !Arrays.equals(nextStartRow, range.getEndExclusive()); } }
private static BatchColumnRangeSelection nextLexicographicalRangeEnd( BatchColumnRangeSelection currentRange, byte[] rangeEnd) { if (rangeEnd.length != 0 && !RangeRequests.isTerminalRow(false, rangeEnd)) { return BatchColumnRangeSelection.create( currentRange.getStartCol(), RangeRequests.getNextStartRow(false, rangeEnd), currentRange.getBatchHint()); } else { return currentRange; } }
private void verifyRanges(Transaction readOnlyTransaction) { // verify each set of reads to ensure they are the same. for (Entry<TableReference, ConcurrentMap<RangeRequest, byte[]>> tableAndRange : rangeEndByTable.entrySet()) { TableReference table = tableAndRange.getKey(); Map<RangeRequest, byte[]> rangeEnds = tableAndRange.getValue(); for (Entry<RangeRequest, byte[]> rangeAndRangeEndEntry : rangeEnds.entrySet()) { RangeRequest range = rangeAndRangeEndEntry.getKey(); byte[] rangeEnd = rangeAndRangeEndEntry.getValue(); if (rangeEnd.length != 0 && !RangeRequests.isTerminalRow(range.isReverse(), rangeEnd)) { range = range.getBuilder() .endRowExclusive(RangeRequests.getNextStartRow(range.isReverse(), rangeEnd)) .build(); } ConcurrentNavigableMap<Cell, byte[]> writes = writesByTable.get(table); BatchingVisitableView<RowResult<byte[]>> bv = BatchingVisitableView.of( readOnlyTransaction.getRange(table, range)); NavigableMap<Cell, ByteBuffer> readsInRange = Maps.transformValues( getReadsInRange(table, range), ByteBuffer::wrap); if (!bv.transformBatch(input -> filterWritesFromRows(input, writes)).isEqual(readsInRange.entrySet())) { handleTransactionConflict(table); } } } }
if (RangeRequests.isTerminalRow(request.isReverse(), lastRowName)) { ret.put(request, SimpleTokenBackedResultsPage.create(lastRowName, results, false)); return;
last = rowNames.first(); if (RangeRequests.isTerminalRow(request.isReverse(), last)) { ret.put(request, SimpleTokenBackedResultsPage.create(last, rows, false)); } else {
boolean mayHaveMoreResults = false; byte[] lastRow = Iterables.getLast(finalResults).getRowName(); if (!RangeRequests.isTerminalRow(rangeRequest.isReverse(), lastRow)) { nextRow = RangeRequests.getNextStartRow(rangeRequest.isReverse(), lastRow); mayHaveMoreResults = finalResults.size() == maxRows;
boolean mayHaveMoreResults = false; byte[] lastRow = Iterables.getLast(finalResults).getRowName(); if (!RangeRequests.isTerminalRow(rangeRequest.isReverse(), lastRow)) { nextRow = RangeRequests.getNextStartRow(rangeRequest.isReverse(), lastRow); mayHaveMoreResults = finalResults.size() == maxRows;
@Nullable public static byte[] generateToken(RangeRequest rangeRequest, byte[] lastRow) { if (RangeRequests.isTerminalRow(rangeRequest.isReverse(), lastRow)) { return null; } return RangeRequests.getNextStartRow(rangeRequest.isReverse(), lastRow); }
@Override public boolean hasNext(byte[] lastToken) { if (RangeRequests.isTerminalRow(range.isReverse(), lastToken)) { return false; } else { byte[] nextStartRow = RangeRequests.getNextStartRow(range.isReverse(), lastToken); return !Arrays.equals(nextStartRow, range.getEndExclusive()); } }
private static BatchColumnRangeSelection nextLexicographicalRangeEnd( BatchColumnRangeSelection currentRange, byte[] rangeEnd) { if (rangeEnd.length != 0 && !RangeRequests.isTerminalRow(false, rangeEnd)) { return BatchColumnRangeSelection.create( currentRange.getStartCol(), RangeRequests.getNextStartRow(false, rangeEnd), currentRange.getBatchHint()); } else { return currentRange; } }
private void verifyRanges(Transaction readOnlyTransaction) { // verify each set of reads to ensure they are the same. for (Entry<TableReference, ConcurrentMap<RangeRequest, byte[]>> tableAndRange : rangeEndByTable.entrySet()) { TableReference table = tableAndRange.getKey(); Map<RangeRequest, byte[]> rangeEnds = tableAndRange.getValue(); for (Entry<RangeRequest, byte[]> rangeAndRangeEndEntry : rangeEnds.entrySet()) { RangeRequest range = rangeAndRangeEndEntry.getKey(); byte[] rangeEnd = rangeAndRangeEndEntry.getValue(); if (rangeEnd.length != 0 && !RangeRequests.isTerminalRow(range.isReverse(), rangeEnd)) { range = range.getBuilder() .endRowExclusive(RangeRequests.getNextStartRow(range.isReverse(), rangeEnd)) .build(); } ConcurrentNavigableMap<Cell, byte[]> writes = writesByTable.get(table); BatchingVisitableView<RowResult<byte[]>> bv = BatchingVisitableView.of( readOnlyTransaction.getRange(table, range)); NavigableMap<Cell, ByteBuffer> readsInRange = Maps.transformValues( getReadsInRange(table, range), ByteBuffer::wrap); if (!bv.transformBatch(input -> filterWritesFromRows(input, writes)).isEqual(readsInRange.entrySet())) { handleTransactionConflict(table); } } } }
if (RangeRequests.isTerminalRow(request.isReverse(), lastRowName)) { ret.put(request, SimpleTokenBackedResultsPage.create(lastRowName, results, false)); return;
last = rowNames.first(); if (RangeRequests.isTerminalRow(request.isReverse(), last)) { ret.put(request, SimpleTokenBackedResultsPage.create(last, rows, false)); } else {