Remove dead code (#9825)

Summary:
Options `preserve_deletes` and `iter_start_seqnum` have been removed since 7.0.

This PR removes dead code related to these two removed options.

Pull Request resolved: https://github.com/facebook/rocksdb/pull/9825

Test Plan: make check

Reviewed By: akankshamahajan15

Differential Revision: D35517950

Pulled By: riversand963

fbshipit-source-id: 86282ce5ec4087acb94a06a42a1b6d55b1715482
main
Yanqin Jin 3 years ago committed by Facebook GitHub Bot
parent 25e31d1a94
commit 0ad9ee30ce
  1. 2
      db/builder.cc
  2. 21
      db/compaction/compaction_iterator.cc
  3. 12
      db/compaction/compaction_iterator.h
  4. 4
      db/compaction/compaction_iterator_test.cc
  5. 15
      db/compaction/compaction_job.cc
  6. 4
      db/compaction/compaction_job.h
  7. 6
      db/compaction/compaction_job_test.cc
  8. 5
      db/db_impl/db_impl.h
  9. 5
      db/db_impl/db_impl_compaction_flush.cc
  10. 44
      db/db_iter.cc
  11. 5
      db/db_iter.h
  12. 2
      db/flush_job.cc

@ -194,7 +194,7 @@ Status BuildTable(
blob_file_builder.get(), ioptions.allow_data_in_errors, blob_file_builder.get(), ioptions.allow_data_in_errors,
/*compaction=*/nullptr, compaction_filter.get(), /*compaction=*/nullptr, compaction_filter.get(),
/*shutting_down=*/nullptr, /*shutting_down=*/nullptr,
/*preserve_deletes_seqnum=*/0, /*manual_compaction_paused=*/nullptr, /*manual_compaction_paused=*/nullptr,
/*manual_compaction_canceled=*/nullptr, db_options.info_log, /*manual_compaction_canceled=*/nullptr, db_options.info_log,
full_history_ts_low); full_history_ts_low);

@ -30,7 +30,6 @@ CompactionIterator::CompactionIterator(
BlobFileBuilder* blob_file_builder, bool allow_data_in_errors, BlobFileBuilder* blob_file_builder, bool allow_data_in_errors,
const Compaction* compaction, const CompactionFilter* compaction_filter, const Compaction* compaction, const CompactionFilter* compaction_filter,
const std::atomic<bool>* shutting_down, const std::atomic<bool>* shutting_down,
const SequenceNumber preserve_deletes_seqnum,
const std::atomic<int>* manual_compaction_paused, const std::atomic<int>* manual_compaction_paused,
const std::atomic<bool>* manual_compaction_canceled, const std::atomic<bool>* manual_compaction_canceled,
const std::shared_ptr<Logger> info_log, const std::shared_ptr<Logger> info_log,
@ -42,9 +41,8 @@ CompactionIterator::CompactionIterator(
blob_file_builder, allow_data_in_errors, blob_file_builder, allow_data_in_errors,
std::unique_ptr<CompactionProxy>( std::unique_ptr<CompactionProxy>(
compaction ? new RealCompaction(compaction) : nullptr), compaction ? new RealCompaction(compaction) : nullptr),
compaction_filter, shutting_down, preserve_deletes_seqnum, compaction_filter, shutting_down, manual_compaction_paused,
manual_compaction_paused, manual_compaction_canceled, info_log, manual_compaction_canceled, info_log, full_history_ts_low) {}
full_history_ts_low) {}
CompactionIterator::CompactionIterator( CompactionIterator::CompactionIterator(
InternalIterator* input, const Comparator* cmp, MergeHelper* merge_helper, InternalIterator* input, const Comparator* cmp, MergeHelper* merge_helper,
@ -57,7 +55,6 @@ CompactionIterator::CompactionIterator(
std::unique_ptr<CompactionProxy> compaction, std::unique_ptr<CompactionProxy> compaction,
const CompactionFilter* compaction_filter, const CompactionFilter* compaction_filter,
const std::atomic<bool>* shutting_down, const std::atomic<bool>* shutting_down,
const SequenceNumber preserve_deletes_seqnum,
const std::atomic<int>* manual_compaction_paused, const std::atomic<int>* manual_compaction_paused,
const std::atomic<bool>* manual_compaction_canceled, const std::atomic<bool>* manual_compaction_canceled,
const std::shared_ptr<Logger> info_log, const std::shared_ptr<Logger> info_log,
@ -80,7 +77,6 @@ CompactionIterator::CompactionIterator(
shutting_down_(shutting_down), shutting_down_(shutting_down),
manual_compaction_paused_(manual_compaction_paused), manual_compaction_paused_(manual_compaction_paused),
manual_compaction_canceled_(manual_compaction_canceled), manual_compaction_canceled_(manual_compaction_canceled),
preserve_deletes_seqnum_(preserve_deletes_seqnum),
info_log_(info_log), info_log_(info_log),
allow_data_in_errors_(allow_data_in_errors), allow_data_in_errors_(allow_data_in_errors),
timestamp_size_(cmp_ ? cmp_->timestamp_size() : 0), timestamp_size_(cmp_ ? cmp_->timestamp_size() : 0),
@ -758,7 +754,6 @@ void CompactionIterator::NextFromInput() {
(ikey_.type == kTypeDeletionWithTimestamp && (ikey_.type == kTypeDeletionWithTimestamp &&
cmp_with_history_ts_low_ < 0)) && cmp_with_history_ts_low_ < 0)) &&
DefinitelyInSnapshot(ikey_.sequence, earliest_snapshot_) && DefinitelyInSnapshot(ikey_.sequence, earliest_snapshot_) &&
ikeyNotNeededForIncrementalSnapshot() &&
compaction_->KeyNotExistsBeyondOutputLevel(ikey_.user_key, compaction_->KeyNotExistsBeyondOutputLevel(ikey_.user_key,
&level_ptrs_)) { &level_ptrs_)) {
// TODO(noetzli): This is the only place where we use compaction_ // TODO(noetzli): This is the only place where we use compaction_
@ -792,7 +787,7 @@ void CompactionIterator::NextFromInput() {
} else if ((ikey_.type == kTypeDeletion || } else if ((ikey_.type == kTypeDeletion ||
(ikey_.type == kTypeDeletionWithTimestamp && (ikey_.type == kTypeDeletionWithTimestamp &&
cmp_with_history_ts_low_ < 0)) && cmp_with_history_ts_low_ < 0)) &&
bottommost_level_ && ikeyNotNeededForIncrementalSnapshot()) { bottommost_level_) {
// Handle the case where we have a delete key at the bottom most level // Handle the case where we have a delete key at the bottom most level
// We can skip outputting the key iff there are no subsequent puts for this // We can skip outputting the key iff there are no subsequent puts for this
// key // key
@ -1060,8 +1055,7 @@ void CompactionIterator::PrepareOutput() {
// Can we do the same for levels above bottom level as long as // Can we do the same for levels above bottom level as long as
// KeyNotExistsBeyondOutputLevel() return true? // KeyNotExistsBeyondOutputLevel() return true?
if (valid_ && compaction_ != nullptr && if (valid_ && compaction_ != nullptr &&
!compaction_->allow_ingest_behind() && !compaction_->allow_ingest_behind() && bottommost_level_ &&
ikeyNotNeededForIncrementalSnapshot() && bottommost_level_ &&
DefinitelyInSnapshot(ikey_.sequence, earliest_snapshot_) && DefinitelyInSnapshot(ikey_.sequence, earliest_snapshot_) &&
ikey_.type != kTypeMerge) { ikey_.type != kTypeMerge) {
assert(ikey_.type != kTypeDeletion); assert(ikey_.type != kTypeDeletion);
@ -1139,13 +1133,6 @@ inline SequenceNumber CompactionIterator::findEarliestVisibleSnapshot(
return kMaxSequenceNumber; return kMaxSequenceNumber;
} }
// used in 2 places - prevents deletion markers to be dropped if they may be
// needed and disables seqnum zero-out in PrepareOutput for recent keys.
inline bool CompactionIterator::ikeyNotNeededForIncrementalSnapshot() {
return (!compaction_->preserve_deletes()) ||
(ikey_.sequence < preserve_deletes_seqnum_);
}
uint64_t CompactionIterator::ComputeBlobGarbageCollectionCutoffFileNumber( uint64_t CompactionIterator::ComputeBlobGarbageCollectionCutoffFileNumber(
const CompactionProxy* compaction) { const CompactionProxy* compaction) {
if (!compaction) { if (!compaction) {

@ -92,8 +92,6 @@ class CompactionIterator {
virtual bool allow_ingest_behind() const = 0; virtual bool allow_ingest_behind() const = 0;
virtual bool preserve_deletes() const = 0;
virtual bool allow_mmap_reads() const = 0; virtual bool allow_mmap_reads() const = 0;
virtual bool enable_blob_garbage_collection() const = 0; virtual bool enable_blob_garbage_collection() const = 0;
@ -139,8 +137,6 @@ class CompactionIterator {
return compaction_->immutable_options()->allow_ingest_behind; return compaction_->immutable_options()->allow_ingest_behind;
} }
bool preserve_deletes() const override { return false; }
bool allow_mmap_reads() const override { bool allow_mmap_reads() const override {
return compaction_->immutable_options()->allow_mmap_reads; return compaction_->immutable_options()->allow_mmap_reads;
} }
@ -183,7 +179,6 @@ class CompactionIterator {
const Compaction* compaction = nullptr, const Compaction* compaction = nullptr,
const CompactionFilter* compaction_filter = nullptr, const CompactionFilter* compaction_filter = nullptr,
const std::atomic<bool>* shutting_down = nullptr, const std::atomic<bool>* shutting_down = nullptr,
const SequenceNumber preserve_deletes_seqnum = 0,
const std::atomic<int>* manual_compaction_paused = nullptr, const std::atomic<int>* manual_compaction_paused = nullptr,
const std::atomic<bool>* manual_compaction_canceled = nullptr, const std::atomic<bool>* manual_compaction_canceled = nullptr,
const std::shared_ptr<Logger> info_log = nullptr, const std::shared_ptr<Logger> info_log = nullptr,
@ -201,7 +196,6 @@ class CompactionIterator {
std::unique_ptr<CompactionProxy> compaction, std::unique_ptr<CompactionProxy> compaction,
const CompactionFilter* compaction_filter = nullptr, const CompactionFilter* compaction_filter = nullptr,
const std::atomic<bool>* shutting_down = nullptr, const std::atomic<bool>* shutting_down = nullptr,
const SequenceNumber preserve_deletes_seqnum = 0,
const std::atomic<int>* manual_compaction_paused = nullptr, const std::atomic<int>* manual_compaction_paused = nullptr,
const std::atomic<bool>* manual_compaction_canceled = nullptr, const std::atomic<bool>* manual_compaction_canceled = nullptr,
const std::shared_ptr<Logger> info_log = nullptr, const std::shared_ptr<Logger> info_log = nullptr,
@ -272,11 +266,6 @@ class CompactionIterator {
inline SequenceNumber findEarliestVisibleSnapshot( inline SequenceNumber findEarliestVisibleSnapshot(
SequenceNumber in, SequenceNumber* prev_snapshot); SequenceNumber in, SequenceNumber* prev_snapshot);
// Checks whether the currently seen ikey_ is needed for
// incremental (differential) snapshot and hence can't be dropped
// or seqnum be zero-ed out even if all other conditions for it are met.
inline bool ikeyNotNeededForIncrementalSnapshot();
inline bool KeyCommitted(SequenceNumber sequence) { inline bool KeyCommitted(SequenceNumber sequence) {
return snapshot_checker_ == nullptr || return snapshot_checker_ == nullptr ||
snapshot_checker_->CheckInSnapshot(sequence, kMaxSequenceNumber) == snapshot_checker_->CheckInSnapshot(sequence, kMaxSequenceNumber) ==
@ -332,7 +321,6 @@ class CompactionIterator {
const std::atomic<bool>* shutting_down_; const std::atomic<bool>* shutting_down_;
const std::atomic<int>* manual_compaction_paused_; const std::atomic<int>* manual_compaction_paused_;
const std::atomic<bool>* manual_compaction_canceled_; const std::atomic<bool>* manual_compaction_canceled_;
const SequenceNumber preserve_deletes_seqnum_;
bool bottommost_level_; bool bottommost_level_;
bool valid_ = false; bool valid_ = false;
bool visible_at_tip_; bool visible_at_tip_;

@ -166,8 +166,6 @@ class FakeCompaction : public CompactionIterator::CompactionProxy {
bool allow_ingest_behind() const override { return is_allow_ingest_behind; } bool allow_ingest_behind() const override { return is_allow_ingest_behind; }
bool preserve_deletes() const override { return false; }
bool allow_mmap_reads() const override { return false; } bool allow_mmap_reads() const override { return false; }
bool enable_blob_garbage_collection() const override { return false; } bool enable_blob_garbage_collection() const override { return false; }
@ -281,7 +279,7 @@ class CompactionIteratorTest : public testing::TestWithParam<bool> {
Env::Default(), false /* report_detailed_time */, false, Env::Default(), false /* report_detailed_time */, false,
range_del_agg_.get(), nullptr /* blob_file_builder */, range_del_agg_.get(), nullptr /* blob_file_builder */,
true /*allow_data_in_errors*/, std::move(compaction), filter, true /*allow_data_in_errors*/, std::move(compaction), filter,
&shutting_down_, /*preserve_deletes_seqnum=*/0, &shutting_down_,
/*manual_compaction_paused=*/nullptr, /*manual_compaction_paused=*/nullptr,
/*manual_compaction_canceled=*/nullptr, /*info_log=*/nullptr, /*manual_compaction_canceled=*/nullptr, /*info_log=*/nullptr,
full_history_ts_low)); full_history_ts_low));

@ -417,10 +417,10 @@ CompactionJob::CompactionJob(
int job_id, Compaction* compaction, const ImmutableDBOptions& db_options, int job_id, Compaction* compaction, const ImmutableDBOptions& db_options,
const MutableDBOptions& mutable_db_options, const FileOptions& file_options, const MutableDBOptions& mutable_db_options, const FileOptions& file_options,
VersionSet* versions, const std::atomic<bool>* shutting_down, VersionSet* versions, const std::atomic<bool>* shutting_down,
const SequenceNumber preserve_deletes_seqnum, LogBuffer* log_buffer, LogBuffer* log_buffer, FSDirectory* db_directory,
FSDirectory* db_directory, FSDirectory* output_directory, FSDirectory* output_directory, FSDirectory* blob_output_directory,
FSDirectory* blob_output_directory, Statistics* stats, Statistics* stats, InstrumentedMutex* db_mutex,
InstrumentedMutex* db_mutex, ErrorHandler* db_error_handler, ErrorHandler* db_error_handler,
std::vector<SequenceNumber> existing_snapshots, std::vector<SequenceNumber> existing_snapshots,
SequenceNumber earliest_write_conflict_snapshot, SequenceNumber earliest_write_conflict_snapshot,
const SnapshotChecker* snapshot_checker, std::shared_ptr<Cache> table_cache, const SnapshotChecker* snapshot_checker, std::shared_ptr<Cache> table_cache,
@ -456,7 +456,6 @@ CompactionJob::CompactionJob(
shutting_down_(shutting_down), shutting_down_(shutting_down),
manual_compaction_paused_(manual_compaction_paused), manual_compaction_paused_(manual_compaction_paused),
manual_compaction_canceled_(manual_compaction_canceled), manual_compaction_canceled_(manual_compaction_canceled),
preserve_deletes_seqnum_(preserve_deletes_seqnum),
db_directory_(db_directory), db_directory_(db_directory),
blob_output_directory_(blob_output_directory), blob_output_directory_(blob_output_directory),
db_mutex_(db_mutex), db_mutex_(db_mutex),
@ -1476,8 +1475,8 @@ void CompactionJob::ProcessKeyValueCompaction(SubcompactionState* sub_compact) {
/*expect_valid_internal_key=*/true, &range_del_agg, /*expect_valid_internal_key=*/true, &range_del_agg,
blob_file_builder.get(), db_options_.allow_data_in_errors, blob_file_builder.get(), db_options_.allow_data_in_errors,
sub_compact->compaction, compaction_filter, shutting_down_, sub_compact->compaction, compaction_filter, shutting_down_,
preserve_deletes_seqnum_, manual_compaction_paused_, manual_compaction_paused_, manual_compaction_canceled_,
manual_compaction_canceled_, db_options_.info_log, full_history_ts_low)); db_options_.info_log, full_history_ts_low));
auto c_iter = sub_compact->c_iter.get(); auto c_iter = sub_compact->c_iter.get();
c_iter->SeekToFirst(); c_iter->SeekToFirst();
if (c_iter->Valid() && sub_compact->compaction->output_level() != 0) { if (c_iter->Valid() && sub_compact->compaction->output_level() != 0) {
@ -2494,7 +2493,7 @@ CompactionServiceCompactionJob::CompactionServiceCompactionJob(
CompactionServiceResult* compaction_service_result) CompactionServiceResult* compaction_service_result)
: CompactionJob( : CompactionJob(
job_id, compaction, db_options, mutable_db_options, file_options, job_id, compaction, db_options, mutable_db_options, file_options,
versions, shutting_down, 0, log_buffer, nullptr, output_directory, versions, shutting_down, log_buffer, nullptr, output_directory,
nullptr, stats, db_mutex, db_error_handler, existing_snapshots, nullptr, stats, db_mutex, db_error_handler, existing_snapshots,
kMaxSequenceNumber, nullptr, table_cache, event_logger, kMaxSequenceNumber, nullptr, table_cache, event_logger,
compaction->mutable_cf_options()->paranoid_file_checks, compaction->mutable_cf_options()->paranoid_file_checks,

@ -67,8 +67,7 @@ class CompactionJob {
int job_id, Compaction* compaction, const ImmutableDBOptions& db_options, int job_id, Compaction* compaction, const ImmutableDBOptions& db_options,
const MutableDBOptions& mutable_db_options, const MutableDBOptions& mutable_db_options,
const FileOptions& file_options, VersionSet* versions, const FileOptions& file_options, VersionSet* versions,
const std::atomic<bool>* shutting_down, const std::atomic<bool>* shutting_down, LogBuffer* log_buffer,
const SequenceNumber preserve_deletes_seqnum, LogBuffer* log_buffer,
FSDirectory* db_directory, FSDirectory* output_directory, FSDirectory* db_directory, FSDirectory* output_directory,
FSDirectory* blob_output_directory, Statistics* stats, FSDirectory* blob_output_directory, Statistics* stats,
InstrumentedMutex* db_mutex, ErrorHandler* db_error_handler, InstrumentedMutex* db_mutex, ErrorHandler* db_error_handler,
@ -196,7 +195,6 @@ class CompactionJob {
const std::atomic<bool>* shutting_down_; const std::atomic<bool>* shutting_down_;
const std::atomic<int>* manual_compaction_paused_; const std::atomic<int>* manual_compaction_paused_;
const std::atomic<bool>* manual_compaction_canceled_; const std::atomic<bool>* manual_compaction_canceled_;
const SequenceNumber preserve_deletes_seqnum_;
FSDirectory* db_directory_; FSDirectory* db_directory_;
FSDirectory* blob_output_directory_; FSDirectory* blob_output_directory_;
InstrumentedMutex* db_mutex_; InstrumentedMutex* db_mutex_;

@ -87,7 +87,6 @@ class CompactionJobTestBase : public testing::Test {
/*block_cache_tracer=*/nullptr, /*block_cache_tracer=*/nullptr,
/*io_tracer=*/nullptr, /*db_session_id*/ "")), /*io_tracer=*/nullptr, /*db_session_id*/ "")),
shutting_down_(false), shutting_down_(false),
preserve_deletes_seqnum_(0),
mock_table_factory_(new mock::MockTableFactory()), mock_table_factory_(new mock::MockTableFactory()),
error_handler_(nullptr, db_options_, &mutex_), error_handler_(nullptr, db_options_, &mutex_),
encode_u64_ts_(std::move(encode_u64_ts)) { encode_u64_ts_(std::move(encode_u64_ts)) {
@ -354,8 +353,8 @@ class CompactionJobTestBase : public testing::Test {
ucmp_->timestamp_size() == full_history_ts_low_.size()); ucmp_->timestamp_size() == full_history_ts_low_.size());
CompactionJob compaction_job( CompactionJob compaction_job(
0, &compaction, db_options_, mutable_db_options_, env_options_, 0, &compaction, db_options_, mutable_db_options_, env_options_,
versions_.get(), &shutting_down_, preserve_deletes_seqnum_, &log_buffer, versions_.get(), &shutting_down_, &log_buffer, nullptr, nullptr,
nullptr, nullptr, nullptr, nullptr, &mutex_, &error_handler_, snapshots, nullptr, nullptr, &mutex_, &error_handler_, snapshots,
earliest_write_conflict_snapshot, snapshot_checker, table_cache_, earliest_write_conflict_snapshot, snapshot_checker, table_cache_,
&event_logger, false, false, dbname_, &compaction_job_stats_, &event_logger, false, false, dbname_, &compaction_job_stats_,
Env::Priority::USER, nullptr /* IOTracer */, Env::Priority::USER, nullptr /* IOTracer */,
@ -409,7 +408,6 @@ class CompactionJobTestBase : public testing::Test {
std::unique_ptr<VersionSet> versions_; std::unique_ptr<VersionSet> versions_;
InstrumentedMutex mutex_; InstrumentedMutex mutex_;
std::atomic<bool> shutting_down_; std::atomic<bool> shutting_down_;
SequenceNumber preserve_deletes_seqnum_;
std::shared_ptr<mock::MockTableFactory> mock_table_factory_; std::shared_ptr<mock::MockTableFactory> mock_table_factory_;
CompactionJobStats compaction_job_stats_; CompactionJobStats compaction_job_stats_;
ColumnFamilyData* cfd_; ColumnFamilyData* cfd_;

@ -2369,11 +2369,6 @@ class DBImpl : public DB {
// DB::Open() or passed to us // DB::Open() or passed to us
bool own_sfm_; bool own_sfm_;
// Default value is 0 which means ALL deletes are
// preserved. Note that this has no effect if preserve_deletes is false.
const std::atomic<SequenceNumber> preserve_deletes_seqnum_{0};
const bool preserve_deletes_ = false;
// Flag to check whether Close() has been called on this DB // Flag to check whether Close() has been called on this DB
bool closed_; bool closed_;
// save the closing status, for re-calling the close() // save the closing status, for re-calling the close()

@ -1363,7 +1363,7 @@ Status DBImpl::CompactFilesImpl(
CompactionJob compaction_job( CompactionJob compaction_job(
job_context->job_id, c.get(), immutable_db_options_, mutable_db_options_, job_context->job_id, c.get(), immutable_db_options_, mutable_db_options_,
file_options_for_compaction_, versions_.get(), &shutting_down_, file_options_for_compaction_, versions_.get(), &shutting_down_,
preserve_deletes_seqnum_.load(), log_buffer, directories_.GetDbDir(), log_buffer, directories_.GetDbDir(),
GetDataDir(c->column_family_data(), c->output_path_id()), GetDataDir(c->column_family_data(), c->output_path_id()),
GetDataDir(c->column_family_data(), 0), stats_, &mutex_, &error_handler_, GetDataDir(c->column_family_data(), 0), stats_, &mutex_, &error_handler_,
snapshot_seqs, earliest_write_conflict_snapshot, snapshot_checker, snapshot_seqs, earliest_write_conflict_snapshot, snapshot_checker,
@ -3357,8 +3357,7 @@ Status DBImpl::BackgroundCompaction(bool* made_progress,
CompactionJob compaction_job( CompactionJob compaction_job(
job_context->job_id, c.get(), immutable_db_options_, job_context->job_id, c.get(), immutable_db_options_,
mutable_db_options_, file_options_for_compaction_, versions_.get(), mutable_db_options_, file_options_for_compaction_, versions_.get(),
&shutting_down_, preserve_deletes_seqnum_.load(), log_buffer, &shutting_down_, log_buffer, directories_.GetDbDir(),
directories_.GetDbDir(),
GetDataDir(c->column_family_data(), c->output_path_id()), GetDataDir(c->column_family_data(), c->output_path_id()),
GetDataDir(c->column_family_data(), 0), stats_, &mutex_, GetDataDir(c->column_family_data(), 0), stats_, &mutex_,
&error_handler_, snapshot_seqs, earliest_write_conflict_snapshot, &error_handler_, snapshot_seqs, earliest_write_conflict_snapshot,

@ -78,7 +78,6 @@ DBIter::DBIter(Env* _env, const ReadOptions& read_options,
range_del_agg_(&ioptions.internal_comparator, s), range_del_agg_(&ioptions.internal_comparator, s),
db_impl_(db_impl), db_impl_(db_impl),
cfd_(cfd), cfd_(cfd),
start_seqnum_(0ULL),
timestamp_ub_(read_options.timestamp), timestamp_ub_(read_options.timestamp),
timestamp_lb_(read_options.iter_start_ts), timestamp_lb_(read_options.iter_start_ts),
timestamp_size_(timestamp_ub_ ? timestamp_ub_->size() : 0) { timestamp_size_(timestamp_ub_ ? timestamp_ub_->size() : 0) {
@ -328,25 +327,7 @@ bool DBIter::FindNextUserEntryInternal(bool skipping_saved_key,
case kTypeSingleDeletion: case kTypeSingleDeletion:
// Arrange to skip all upcoming entries for this key since // Arrange to skip all upcoming entries for this key since
// they are hidden by this deletion. // they are hidden by this deletion.
// if iterartor specified start_seqnum we if (timestamp_lb_) {
// 1) return internal key, including the type
// 2) return ikey only if ikey.seqnum >= start_seqnum_
// note that if deletion seqnum is < start_seqnum_ we
// just skip it like in normal iterator.
if (start_seqnum_ > 0) {
if (ikey_.sequence >= start_seqnum_) {
saved_key_.SetInternalKey(ikey_);
valid_ = true;
return true;
} else {
saved_key_.SetUserKey(
ikey_.user_key,
!pin_thru_lifetime_ ||
!iter_.iter()->IsKeyPinned() /* copy */);
skipping_saved_key = true;
PERF_COUNTER_ADD(internal_delete_skipped_count, 1);
}
} else if (timestamp_lb_) {
saved_key_.SetInternalKey(ikey_); saved_key_.SetInternalKey(ikey_);
valid_ = true; valid_ = true;
return true; return true;
@ -360,28 +341,7 @@ bool DBIter::FindNextUserEntryInternal(bool skipping_saved_key,
break; break;
case kTypeValue: case kTypeValue:
case kTypeBlobIndex: case kTypeBlobIndex:
if (start_seqnum_ > 0) { if (timestamp_lb_) {
if (ikey_.sequence >= start_seqnum_) {
saved_key_.SetInternalKey(ikey_);
if (ikey_.type == kTypeBlobIndex) {
if (!SetBlobValueIfNeeded(ikey_.user_key, iter_.value())) {
return false;
}
}
valid_ = true;
return true;
} else {
// this key and all previous versions shouldn't be included,
// skipping_saved_key
saved_key_.SetUserKey(
ikey_.user_key,
!pin_thru_lifetime_ ||
!iter_.iter()->IsKeyPinned() /* copy */);
skipping_saved_key = true;
}
} else if (timestamp_lb_) {
saved_key_.SetInternalKey(ikey_); saved_key_.SetInternalKey(ikey_);
if (ikey_.type == kTypeBlobIndex) { if (ikey_.type == kTypeBlobIndex) {

@ -151,7 +151,7 @@ class DBIter final : public Iterator {
} }
Slice key() const override { Slice key() const override {
assert(valid_); assert(valid_);
if (start_seqnum_ > 0 || timestamp_lb_) { if (timestamp_lb_) {
return saved_key_.GetInternalKey(); return saved_key_.GetInternalKey();
} else { } else {
const Slice ukey_and_ts = saved_key_.GetUserKey(); const Slice ukey_and_ts = saved_key_.GetUserKey();
@ -371,9 +371,6 @@ class DBIter final : public Iterator {
ROCKSDB_FIELD_UNUSED ROCKSDB_FIELD_UNUSED
#endif #endif
ColumnFamilyData* cfd_; ColumnFamilyData* cfd_;
// for diff snapshots we want the lower bound on the seqnum;
// if this value > 0 iterator will return internal keys
SequenceNumber start_seqnum_;
const Slice* const timestamp_ub_; const Slice* const timestamp_ub_;
const Slice* const timestamp_lb_; const Slice* const timestamp_lb_;
const size_t timestamp_size_; const size_t timestamp_size_;

@ -464,7 +464,7 @@ Status FlushJob::MemPurge() {
nullptr, ioptions->allow_data_in_errors, nullptr, ioptions->allow_data_in_errors,
/*compaction=*/nullptr, compaction_filter.get(), /*compaction=*/nullptr, compaction_filter.get(),
/*shutting_down=*/nullptr, /*shutting_down=*/nullptr,
/*preserve_deletes_seqnum=*/0, /*manual_compaction_paused=*/nullptr, /*manual_compaction_paused=*/nullptr,
/*manual_compaction_canceled=*/nullptr, ioptions->info_log, /*manual_compaction_canceled=*/nullptr, ioptions->info_log,
&(cfd_->GetFullHistoryTsLow())); &(cfd_->GetFullHistoryTsLow()));

Loading…
Cancel
Save