public static List<byte[]> getAllRowsInOrder(RowsColumnRangeBatchRequest batch) { List<byte[]> allRows = new ArrayList<>(batch.getRowsToLoadFully().size() + 2); batch.getPartialFirstRow().ifPresent(row -> allRows.add(row.getKey())); allRows.addAll(batch.getRowsToLoadFully()); batch.getPartialLastRow().ifPresent(row -> allRows.add(row.getKey())); return allRows; }
@Value.Check protected void check() { Preconditions.checkState(getColumnRangeSelection() != null || getRowsToLoadFully().isEmpty(), "Must specify a column range selection when loading full rows."); } }
@Override public FullQuery getRowsColumnRangeQuery(RowsColumnRangeBatchRequest batch, long ts) { List<FullQuery> fullQueries = new ArrayList<>(); batch.getPartialFirstRow() .ifPresent(entry -> fullQueries.add(getRowsColumnRangeSubQuery(entry.getKey(), ts, entry.getValue()))); if (!batch.getRowsToLoadFully().isEmpty()) { fullQueries.add(getRowsColumnRangeFullyLoadedRowsSubQuery(batch.getRowsToLoadFully(), ts, batch.getColumnRangeSelection())); } batch.getPartialLastRow() .ifPresent(entry -> fullQueries.add(getRowsColumnRangeSubQuery(entry.getKey(), ts, entry.getValue()))); List<String> subQueries = fullQueries.stream().map(FullQuery::getQuery).collect(Collectors.toList()); int totalArgs = fullQueries.stream().mapToInt(fullQuery -> fullQuery.getArgs().length).sum(); List<Object> args = fullQueries.stream() .flatMap(fullQuery -> Stream.of(fullQuery.getArgs())) .collect(Collectors.toCollection(() -> new ArrayList<>(totalArgs))); String query = Joiner.on(") UNION ALL (") .appendTo(new StringBuilder("("), subQueries) .append(")") .append(" ORDER BY row_name ASC, col_name ASC") .toString(); return new FullQuery(query).withArgs(args); }
private static void assertColumnRangesInPartitionsMatchOriginal( RowsColumnRangeBatchRequest request, List<RowsColumnRangeBatchRequest> partitions) { Assert.assertEquals(request.getPartialFirstRow(), partitions.get(0).getPartialFirstRow()); Assert.assertEquals(request.getPartialLastRow(), partitions.get(partitions.size() - 1).getPartialLastRow()); for (RowsColumnRangeBatchRequest partition : partitions) { Assert.assertTrue(partition.getRowsToLoadFully().isEmpty() || partition.getColumnRangeSelection().equals(request.getColumnRangeSelection())); } }
public static List<byte[]> getAllRowsInOrder(RowsColumnRangeBatchRequest batch) { List<byte[]> allRows = new ArrayList<>(batch.getRowsToLoadFully().size() + 2); batch.getPartialFirstRow().ifPresent(row -> allRows.add(row.getKey())); allRows.addAll(batch.getRowsToLoadFully()); batch.getPartialLastRow().ifPresent(row -> allRows.add(row.getKey())); return allRows; }
@Value.Check protected void check() { Preconditions.checkState(getColumnRangeSelection() != null || getRowsToLoadFully().isEmpty(), "Must specify a column range selection when loading full rows."); } }
@Override public FullQuery getRowsColumnRangeQuery(RowsColumnRangeBatchRequest batch, long ts) { List<FullQuery> fullQueries = new ArrayList<>(); batch.getPartialFirstRow() .ifPresent(entry -> fullQueries.add(getRowsColumnRangeSubQuery(entry.getKey(), ts, entry.getValue()))); if (!batch.getRowsToLoadFully().isEmpty()) { fullQueries.add(getRowsColumnRangeFullyLoadedRowsSubQuery(batch.getRowsToLoadFully(), ts, batch.getColumnRangeSelection())); } batch.getPartialLastRow() .ifPresent(entry -> fullQueries.add(getRowsColumnRangeSubQuery(entry.getKey(), ts, entry.getValue()))); List<String> subQueries = fullQueries.stream().map(FullQuery::getQuery).collect(Collectors.toList()); int totalArgs = fullQueries.stream().mapToInt(fullQuery -> fullQuery.getArgs().length).sum(); List<Object> args = fullQueries.stream() .flatMap(fullQuery -> Stream.of(fullQuery.getArgs())) .collect(Collectors.toCollection(() -> new ArrayList<>(totalArgs))); String query = Joiner.on(") UNION ALL (") .appendTo(new StringBuilder("("), subQueries) .append(")") .append(" ORDER BY row_name ASC, col_name ASC") .toString(); return new FullQuery(query).withArgs(args); }