@Override public String toString() { return "multiget_slice(" + tableRef.getQualifiedName() + ", " + rows.size() + " rows, " + batchColumnRangeSelection.getBatchHint() + " max columns)"; } });
private boolean isEndOfColumnRange(boolean completedCell, byte[] lastCol, int numRawResults, BatchColumnRangeSelection columnRangeSelection) { return (numRawResults < columnRangeSelection.getBatchHint()) || (completedCell && (RangeRequests.isLastRowName(lastCol) || Arrays.equals( RangeRequests.nextLexicographicName(lastCol), columnRangeSelection.getEndCol()))); }
nextCol, batchColumnRangeSelection.getEndCol(), batchColumnRangeSelection.getBatchHint()); Iterator<Map.Entry<Cell, Value>> nextPagesIter = getRowColumnRange( tableRef,
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; } }
} else { BatchColumnRangeSelection newColumnRange = BatchColumnRangeSelection.create(nextCol, batchColumnRangeSelection.getEndCol(), batchColumnRangeSelection.getBatchHint()); ret.put(row, new LocalRowColumnRangeIterator(Iterators.concat( resultIterator,
keyValueService, tableRef, row, columnRangeSelection, getStartTimestamp()); BatchSizeIncreasingIterator<Map.Entry<Cell, Value>> batchIterator = new BatchSizeIncreasingIterator<>( batchProvider, columnRangeSelection.getBatchHint(), ClosableIterators.wrap(rawIterator)); Iterator<Iterator<Map.Entry<Cell, byte[]>>> postFilteredBatches = new AbstractIterator<Iterator<Map.Entry<Cell, byte[]>>>() {
@Override public RowColumnRangeExtractor.RowColumnRangeResult apply(CassandraClient client) throws Exception { Range range = createColumnRange( batchColumnRangeSelection.getStartCol(), batchColumnRangeSelection.getEndCol(), startTs); Limit limit = Limit.of(batchColumnRangeSelection.getBatchHint()); SlicePredicate pred = SlicePredicates.create(range, limit); Map<ByteBuffer, List<ColumnOrSuperColumn>> results = wrappingQueryRunner.multiget( "getRowsColumnRange", client, tableRef, wrap(rows), pred, readConsistency); RowColumnRangeExtractor extractor = new RowColumnRangeExtractor(metricsManager); extractor.extractResults(rows, results, startTs); return extractor.getRowColumnRangeResult(); }
@Override protected FullQuery getRowsColumnRangeSubQuery( byte[] row, long ts, BatchColumnRangeSelection columnRangeSelection) { String query = " /* GET_ROWS_COLUMN_RANGE (" + tableName + ") */ " + " SELECT m.row_name, m.col_name, max(m.ts) as ts" + " FROM " + prefixedTableName() + " m " + " WHERE m.row_name = ? " + " AND m.ts < ? " + (columnRangeSelection.getStartCol().length > 0 ? " AND m.col_name >= ?" : "") + (columnRangeSelection.getEndCol().length > 0 ? " AND m.col_name < ?" : "") + " GROUP BY m.row_name, m.col_name" + " ORDER BY m.col_name ASC LIMIT " + columnRangeSelection.getBatchHint(); FullQuery fullQuery = new FullQuery(wrapQueryWithIncludeValue("GET_ROWS_COLUMN_RANGE", query, true)) .withArg(row) .withArg(ts); if (columnRangeSelection.getStartCol().length > 0) { fullQuery = fullQuery.withArg(columnRangeSelection.getStartCol()); } if (columnRangeSelection.getEndCol().length > 0) { fullQuery = fullQuery.withArg(columnRangeSelection.getEndCol()); } return fullQuery; }
@Override protected FullQuery getRowsColumnRangeSubQuery( byte[] row, long ts, BatchColumnRangeSelection columnRangeSelection) { String query = " /* GET_ROWS_COLUMN_RANGE (" + tableName + ") */ " + "SELECT s.row_name, s.col_name, s.ts" + getValueSubselect("s", true) + " FROM ( SELECT m.row_name, m.col_name, max(m.ts) as ts" + getValueSubselectForGroupBy("m") + " FROM " + tableName + " m" + " WHERE m.row_name = ?" + " AND m.ts < ? " + (columnRangeSelection.getStartCol().length > 0 ? " AND m.col_name >= ?" : "") + (columnRangeSelection.getEndCol().length > 0 ? " AND m.col_name < ?" : "") + " GROUP BY m.row_name, m.col_name" + " ORDER BY m.row_name ASC, m.col_name ASC ) s WHERE rownum <= " + columnRangeSelection.getBatchHint(); FullQuery fullQuery = new FullQuery(query).withArg(row).withArg(ts); if (columnRangeSelection.getStartCol().length > 0) { fullQuery = fullQuery.withArg(columnRangeSelection.getStartCol()); } if (columnRangeSelection.getEndCol().length > 0) { fullQuery = fullQuery.withArg(columnRangeSelection.getEndCol()); } return fullQuery; }
@Override public String toString() { return "multiget_slice(" + tableRef.getQualifiedName() + ", " + rows.size() + " rows, " + batchColumnRangeSelection.getBatchHint() + " max columns)"; } });
private boolean isEndOfColumnRange(boolean completedCell, byte[] lastCol, int numRawResults, BatchColumnRangeSelection columnRangeSelection) { return (numRawResults < columnRangeSelection.getBatchHint()) || (completedCell && (RangeRequests.isLastRowName(lastCol) || Arrays.equals( RangeRequests.nextLexicographicName(lastCol), columnRangeSelection.getEndCol()))); }
nextCol, batchColumnRangeSelection.getEndCol(), batchColumnRangeSelection.getBatchHint()); Iterator<Map.Entry<Cell, Value>> nextPagesIter = getRowColumnRange( tableRef,
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; } }
keyValueService, tableRef, row, columnRangeSelection, getStartTimestamp()); BatchSizeIncreasingIterator<Map.Entry<Cell, Value>> batchIterator = new BatchSizeIncreasingIterator<>( batchProvider, columnRangeSelection.getBatchHint(), ClosableIterators.wrap(rawIterator)); Iterator<Iterator<Map.Entry<Cell, byte[]>>> postFilteredBatches = new AbstractIterator<Iterator<Map.Entry<Cell, byte[]>>>() {
} else { BatchColumnRangeSelection newColumnRange = BatchColumnRangeSelection.create(nextCol, batchColumnRangeSelection.getEndCol(), batchColumnRangeSelection.getBatchHint()); ret.put(row, new LocalRowColumnRangeIterator(Iterators.concat( resultIterator,
@Override public RowColumnRangeExtractor.RowColumnRangeResult apply(CassandraClient client) throws Exception { Range range = createColumnRange( batchColumnRangeSelection.getStartCol(), batchColumnRangeSelection.getEndCol(), startTs); Limit limit = Limit.of(batchColumnRangeSelection.getBatchHint()); SlicePredicate pred = SlicePredicates.create(range, limit); Map<ByteBuffer, List<ColumnOrSuperColumn>> results = wrappingQueryRunner.multiget( "getRowsColumnRange", client, tableRef, wrap(rows), pred, readConsistency); RowColumnRangeExtractor extractor = new RowColumnRangeExtractor(metricsManager); extractor.extractResults(rows, results, startTs); return extractor.getRowColumnRangeResult(); }
@Override protected FullQuery getRowsColumnRangeSubQuery( byte[] row, long ts, BatchColumnRangeSelection columnRangeSelection) { String query = " /* GET_ROWS_COLUMN_RANGE (" + tableName + ") */ " + "SELECT s.row_name, s.col_name, s.ts" + getValueSubselect("s", true) + " FROM ( SELECT m.row_name, m.col_name, max(m.ts) as ts" + getValueSubselectForGroupBy("m") + " FROM " + tableName + " m" + " WHERE m.row_name = ?" + " AND m.ts < ? " + (columnRangeSelection.getStartCol().length > 0 ? " AND m.col_name >= ?" : "") + (columnRangeSelection.getEndCol().length > 0 ? " AND m.col_name < ?" : "") + " GROUP BY m.row_name, m.col_name" + " ORDER BY m.row_name ASC, m.col_name ASC ) s WHERE rownum <= " + columnRangeSelection.getBatchHint(); FullQuery fullQuery = new FullQuery(query).withArg(row).withArg(ts); if (columnRangeSelection.getStartCol().length > 0) { fullQuery = fullQuery.withArg(columnRangeSelection.getStartCol()); } if (columnRangeSelection.getEndCol().length > 0) { fullQuery = fullQuery.withArg(columnRangeSelection.getEndCol()); } return fullQuery; }
@Override protected FullQuery getRowsColumnRangeSubQuery( byte[] row, long ts, BatchColumnRangeSelection columnRangeSelection) { String query = " /* GET_ROWS_COLUMN_RANGE (" + tableName + ") */ " + " SELECT m.row_name, m.col_name, max(m.ts) as ts" + " FROM " + prefixedTableName() + " m " + " WHERE m.row_name = ? " + " AND m.ts < ? " + (columnRangeSelection.getStartCol().length > 0 ? " AND m.col_name >= ?" : "") + (columnRangeSelection.getEndCol().length > 0 ? " AND m.col_name < ?" : "") + " GROUP BY m.row_name, m.col_name" + " ORDER BY m.col_name ASC LIMIT " + columnRangeSelection.getBatchHint(); FullQuery fullQuery = new FullQuery(wrapQueryWithIncludeValue("GET_ROWS_COLUMN_RANGE", query, true)) .withArg(row) .withArg(ts); if (columnRangeSelection.getStartCol().length > 0) { fullQuery = fullQuery.withArg(columnRangeSelection.getStartCol()); } if (columnRangeSelection.getEndCol().length > 0) { fullQuery = fullQuery.withArg(columnRangeSelection.getEndCol()); } return fullQuery; }