From 183554cbc4f57fa095726ce81ce50edb8db8085d Mon Sep 17 00:00:00 2001 From: Tomasz Grabiec Date: Fri, 8 Dec 2017 10:04:11 +0100 Subject: [PATCH] mvcc: Optimize partition_snapshot::range_tombstones() for single version case --- partition_version.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/partition_version.cc b/partition_version.cc index 3141cf742c..b72052cd59 100644 --- a/partition_version.cc +++ b/partition_version.cc @@ -566,11 +566,17 @@ lw_shared_ptr partition_entry::read(logalloc::region& r, std::vector partition_snapshot::range_tombstones(const ::schema& s, position_in_partition_view start, position_in_partition_view end) { + partition_version* v = &*version(); + if (!v->next()) { + return boost::copy_range>( + v->partition().row_tombstones().slice(s, start, end)); + } range_tombstone_list list(s); - for (auto&& v : versions()) { - for (auto&& rt : v.partition().row_tombstones().slice(s, start, end)) { + while (v) { + for (auto&& rt : v->partition().row_tombstones().slice(s, start, end)) { list.apply(s, rt); } + v = v->next(); } return boost::copy_range>(list.slice(s, start, end)); }