mirror of
https://github.com/scylladb/scylladb.git
synced 2026-05-01 21:55:50 +00:00
Range tombstones are serialized to cell names in this place:
_sst.maybe_flush_pi_block(_out, start, {});
Note that the column set is empty. This is correct. A range tombstone
only has a clustering part. The cell name is deserialized by promoted
index reader using mp_row_consumer::column, like this:
mp_row_consumer::column col(schema, std::move(col_name),
api::max_timestamp); return std::move(col.clustering);
The problem is, column constructor assumes that there is always a
component corresponding to a cell name if the table is not dense, and
will pop it from the set of components (the clustering field):
, cell(!schema.is_dense() ? pop_back(clustering) : (*(schema.regular_begin())).name())
promoted index block which starts or ends with a range tombstone will
appear as having incorrect bounds. This may result in an incorrect
value for data file range start to be calculated.
Fixes #2327.