From d6862b3f5180b25841d0cf56da13276eea846b6e Mon Sep 17 00:00:00 2001 From: Siying Dong Date: Thu, 18 Apr 2019 12:22:29 -0700 Subject: [PATCH] Make ReadRangeDelAggregator::ShouldDelete() more inline friendly (#5202) Summary: Reorganize the code so that no function call into ReadRangeDelAggregator is needed if there is no tomb range stone. Pull Request resolved: https://github.com/facebook/rocksdb/pull/5202 Differential Revision: D14968155 Pulled By: siying fbshipit-source-id: 0bd61911293c7a27b4e1b8d57c66d0c4ad6a6a5f --- db/range_del_aggregator.cc | 4 ++-- db/range_del_aggregator.h | 12 ++++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/db/range_del_aggregator.cc b/db/range_del_aggregator.cc index 68216fc92..8f86528ec 100644 --- a/db/range_del_aggregator.cc +++ b/db/range_del_aggregator.cc @@ -322,8 +322,8 @@ void ReadRangeDelAggregator::AddTombstones( std::move(input_iter), icmp_, smallest, largest))); } -bool ReadRangeDelAggregator::ShouldDelete(const ParsedInternalKey& parsed, - RangeDelPositioningMode mode) { +bool ReadRangeDelAggregator::ShouldDeleteImpl(const ParsedInternalKey& parsed, + RangeDelPositioningMode mode) { return rep_.ShouldDelete(parsed, mode); } diff --git a/db/range_del_aggregator.h b/db/range_del_aggregator.h index 712ae4583..e593807d5 100644 --- a/db/range_del_aggregator.h +++ b/db/range_del_aggregator.h @@ -349,7 +349,7 @@ class RangeDelAggregator { std::set files_seen_; }; -class ReadRangeDelAggregator : public RangeDelAggregator { +class ReadRangeDelAggregator final : public RangeDelAggregator { public: ReadRangeDelAggregator(const InternalKeyComparator* icmp, SequenceNumber upper_bound) @@ -364,7 +364,12 @@ class ReadRangeDelAggregator : public RangeDelAggregator { const InternalKey* largest = nullptr) override; bool ShouldDelete(const ParsedInternalKey& parsed, - RangeDelPositioningMode mode) override; + RangeDelPositioningMode mode) final override { + if (rep_.IsEmpty()) { + return false; + } + return ShouldDeleteImpl(parsed, mode); + } bool IsRangeOverlapped(const Slice& start, const Slice& end); @@ -374,6 +379,9 @@ class ReadRangeDelAggregator : public RangeDelAggregator { private: StripeRep rep_; + + bool ShouldDeleteImpl(const ParsedInternalKey& parsed, + RangeDelPositioningMode mode); }; class CompactionRangeDelAggregator : public RangeDelAggregator { -- GitLab