class DBTestCompactionFilter : public DBTestBase {
public:
- DBTestCompactionFilter() : DBTestBase("/db_compaction_filter_test") {}
+ DBTestCompactionFilter()
+ : DBTestBase("/db_compaction_filter_test", /*env_do_fsync=*/true) {}
};
// Param variant of DBTestBase::ChangeCompactOptions
const char* Name() const override { return "DeleteFilter"; }
};
-class DelayFilter : public CompactionFilter {
- public:
- explicit DelayFilter(DBTestBase* d) : db_test(d) {}
- bool Filter(int /*level*/, const Slice& /*key*/, const Slice& /*value*/,
- std::string* /*new_value*/,
- bool* /*value_changed*/) const override {
- db_test->env_->addon_time_.fetch_add(1000);
- return true;
- }
-
- const char* Name() const override { return "DelayFilter"; }
-
- private:
- DBTestBase* db_test;
-};
-
class ConditionalFilter : public CompactionFilter {
public:
explicit ConditionalFilter(const std::string* filtered_value)
const char* Name() const override { return "SkipEvenFilterFactory"; }
};
-class DelayFilterFactory : public CompactionFilterFactory {
- public:
- explicit DelayFilterFactory(DBTestBase* d) : db_test(d) {}
- std::unique_ptr<CompactionFilter> CreateCompactionFilter(
- const CompactionFilter::Context& /*context*/) override {
- return std::unique_ptr<CompactionFilter>(new DelayFilter(db_test));
- }
-
- const char* Name() const override { return "DelayFilterFactory"; }
-
- private:
- DBTestBase* db_test;
-};
-
class ConditionalFilterFactory : public CompactionFilterFactory {
public:
explicit ConditionalFilterFactory(const Slice& filtered_value)
InternalKeyComparator icmp(options.comparator);
ReadRangeDelAggregator range_del_agg(&icmp,
kMaxSequenceNumber /* upper_bound */);
+ ReadOptions read_options;
ScopedArenaIterator iter(dbfull()->NewInternalIterator(
- &arena, &range_del_agg, kMaxSequenceNumber, handles_[1]));
+ read_options, &arena, &range_del_agg, kMaxSequenceNumber, handles_[1]));
iter->SeekToFirst();
ASSERT_OK(iter->status());
while (iter->Valid()) {
ParsedInternalKey ikey(Slice(), 0, kTypeValue);
- ASSERT_EQ(ParseInternalKey(iter->key(), &ikey), true);
+ ASSERT_OK(ParseInternalKey(iter->key(), &ikey, true /* log_err_key */));
total++;
if (ikey.sequence != 0) {
count++;
InternalKeyComparator icmp(options.comparator);
ReadRangeDelAggregator range_del_agg(&icmp,
kMaxSequenceNumber /* upper_bound */);
+ ReadOptions read_options;
ScopedArenaIterator iter(dbfull()->NewInternalIterator(
- &arena, &range_del_agg, kMaxSequenceNumber, handles_[1]));
+ read_options, &arena, &range_del_agg, kMaxSequenceNumber, handles_[1]));
iter->SeekToFirst();
ASSERT_OK(iter->status());
while (iter->Valid()) {
ParsedInternalKey ikey(Slice(), 0, kTypeValue);
- ASSERT_EQ(ParseInternalKey(iter->key(), &ikey), true);
+ ASSERT_OK(ParseInternalKey(iter->key(), &ikey, true /* log_err_key */));
ASSERT_NE(ikey.sequence, (unsigned)0);
count++;
iter->Next();
InternalKeyComparator icmp(options.comparator);
ReadRangeDelAggregator range_del_agg(&icmp,
kMaxSequenceNumber /* snapshots */);
+ ReadOptions read_options;
ScopedArenaIterator iter(dbfull()->NewInternalIterator(
- &arena, &range_del_agg, kMaxSequenceNumber));
+ read_options, &arena, &range_del_agg, kMaxSequenceNumber));
iter->SeekToFirst();
ASSERT_OK(iter->status());
while (iter->Valid()) {
ParsedInternalKey ikey(Slice(), 0, kTypeValue);
- ASSERT_EQ(ParseInternalKey(iter->key(), &ikey), true);
+ ASSERT_OK(ParseInternalKey(iter->key(), &ikey, true /* log_err_key */));
total++;
if (ikey.sequence != 0) {
count++;