MCPcopy Create free account
hub / github.com/ElementsProject/elements / IsBaseLevelForKey

Method IsBaseLevelForKey

src/leveldb/db/version_set.cc:1510–1529  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1508}
1509
1510bool Compaction::IsBaseLevelForKey(const Slice& user_key) {
1511 // Maybe use binary search to find right entry instead of linear search?
1512 const Comparator* user_cmp = input_version_->vset_->icmp_.user_comparator();
1513 for (int lvl = level_ + 2; lvl < config::kNumLevels; lvl++) {
1514 const std::vector<FileMetaData*>& files = input_version_->files_[lvl];
1515 while (level_ptrs_[lvl] < files.size()) {
1516 FileMetaData* f = files[level_ptrs_[lvl]];
1517 if (user_cmp->Compare(user_key, f->largest.user_key()) <= 0) {
1518 // We've advanced far enough
1519 if (user_cmp->Compare(user_key, f->smallest.user_key()) >= 0) {
1520 // Key falls in this file's range, so definitely not base level
1521 return false;
1522 }
1523 break;
1524 }
1525 level_ptrs_[lvl]++;
1526 }
1527 }
1528 return true;
1529}
1530
1531bool Compaction::ShouldStopBefore(const Slice& internal_key) {
1532 const VersionSet* vset = input_version_->vset_;

Callers 1

DoCompactionWorkMethod · 0.80

Calls 4

user_comparatorMethod · 0.45
sizeMethod · 0.45
CompareMethod · 0.45
user_keyMethod · 0.45

Tested by

no test coverage detected