logger.trace("Adding index hit to current row for {}", indexComparator.getString(column.name()));
// We always query the whole CQL3 row. In the case where the original filter was a name filter this might be
// slightly wasteful, but this probably doesn't matter in practice and it simplify things.
SliceQueryFilter dataFilter = new SliceQueryFilter(start,
entry.indexedEntryEnd(),
false,
Integer.MAX_VALUE,
baseCfs.metadata.clusteringKeyColumns().size());
ColumnFamily newData = baseCfs.getColumnFamily(new QueryFilter(dk, baseCfs.name, dataFilter, filter.timestamp));
if (newData == null || index.isStale(entry, newData, filter.timestamp))
{
index.delete(entry);
continue;
}
assert newData != null : "An entry with not data should have been considered stale";
if (!filter.isSatisfiedBy(dk, newData, entry.indexedEntryNameBuilder))
continue;
if (data == null)
data = TreeMapBackedSortedColumns.factory.create(baseCfs.metadata);
data.resolve(newData);
columnsCount += dataFilter.lastCounted();
}
}
}
public void close() throws IOException {}