public static Composite startOf(ByteBuffer scName) { return CellNames.compositeDense(scName).start(); }
private ColumnSlice[] getPagedColumnSlices(DecoratedKey dk, Collection<IndexEntry> entries, int pageSize) { ArrayList<ColumnSlice> columnSlices = new ArrayList<>(Math.min(entries.size(), pageSize)); for (IndexEntry entry : entries) { CellName cellName = entry.clusteringKey; if (!filter.columnFilter(dk.getKey()).maySelectPrefix(tableMapper.table.getComparator(), cellName.start())) { continue; } Composite start = tableMapper.start(cellName); Composite end = tableMapper.end(start); ColumnSlice columnSlice = new ColumnSlice(start, end); columnSlices.add(columnSlice); if (columnSlices.size() == pageSize) { break; } } return columnSlices.toArray(new ColumnSlice[columnSlices.size()]); }
public List<Row> fetchSorted() throws IOException { List<Row> rows = new ArrayList<>(); List<IndexEntryCollector.IndexEntry> docsSorted = resultMapper.docs(); List<IndexEntryCollector.IndexEntry> sliceList; for (IndexEntryCollector.IndexEntry input : docsSorted) { CellName cellName = input.clusteringKey; DecoratedKey dk = input.decoratedKey; sliceList = new ArrayList<>(); sliceList.add(input); Map<CellName, ColumnFamily> fullSlice = resultMapper.fetchRangeSlice(sliceList, dk); if (!resultMapper.filter.columnFilter(dk.getKey()).maySelectPrefix(table.getComparator(), cellName.start())) { continue; } ColumnFamily data = fullSlice.get(cellName); if (data == null || resultMapper.searchSupport.deleteIfNotLatest(dk, data.maxTimestamp(), input.pkName, data)) continue; float score = input.score; ColumnFamily cleanColumnFamily = resultMapper.showScore ? scored(score, data) : data; rows.add(new Row(dk, cleanColumnFamily)); columnsCount++; if (columnsCount > limit) break; } return rows; }
private List<Row> fetchIOOptimized() throws IOException { List<Row> rows = new ArrayList<>(); TreeMultimap<DecoratedKey, IndexEntryCollector.IndexEntry> docs = resultMapper.docsByRowKey(); for (DecoratedKey dk : docs.keySet()) { NavigableSet<IndexEntryCollector.IndexEntry> entries = docs.get(dk); if (!resultMapper.filter.dataRange.contains(dk)) { if (logger.isTraceEnabled()) { logger.trace("Skipping entry {} outside of assigned scan range", dk.getToken()); } continue; } final Map<CellName, ColumnFamily> fullSlice = resultMapper.fetchPagedRangeSlice(entries, dk, limit); for (IndexEntryCollector.IndexEntry input : entries) { CellName cellName = input.clusteringKey; if (!resultMapper.filter.columnFilter(dk.getKey()).maySelectPrefix(table.getComparator(), cellName.start())) { continue; } ColumnFamily data = fullSlice.get(cellName); if (data == null || resultMapper.searchSupport.deleteIfNotLatest(dk, data.maxTimestamp(), input.pkName, data)) continue; float score = input.score; ColumnFamily cleanColumnFamily = resultMapper.showScore ? scored(score, data) : data; rows.add(new Row(dk, cleanColumnFamily)); columnsCount++; if (columnsCount > limit) break; } if (columnsCount > limit) break; } return rows; }