Files
scylladb/tests/perf/perf_mutation.cc
Tomasz Grabiec b1e45e4401 db: Store ttl in atomic_cell
Origin does that, so should we. Both ttl and expiry time are stored in
sstables. The value of ttl seems to be used to calculate the read
digest (expiry is not used for that).

The API for creating atomic_cells changed a bit.

To create a non-expiring cell:

  atomic_cell::make_live(timestamp, value);

To create an expiring cell:

  atomic_cell::make_live(timestamp, value, expiry, ttl);

or:

  // Expiry is calculated based on current clock reading
  atomic_cell::make_live(timestamp, value, ttl_optional);
2015-05-06 19:42:38 +02:00

27 lines
841 B
C++

#include "database.hh"
#include "perf.hh"
static atomic_cell make_atomic_cell(bytes value) {
return atomic_cell::make_live(0, value);
};
int main(int argc, char* argv[]) {
auto s = make_lw_shared(schema({}, "ks", "cf",
{{"p1", utf8_type}}, {{"c1", int32_type}}, {{"r1", int32_type}}, {}, utf8_type));
column_family cf(s);
std::cout << "Timing mutation of single column within one row...\n";
auto key = partition_key::from_exploded(*s, {to_bytes("key1")});
auto c_key = clustering_key::from_exploded(*s, {int32_type->decompose(2)});
bytes value = int32_type->decompose(3);
time_it([&] {
mutation m(key, s);
const column_definition& col = *s->get_column_definition("r1");
m.set_clustered_cell(c_key, col, make_atomic_cell(value));
cf.apply(std::move(m));
});
}