15 #ifndef STORAGE_LEVELDB_DB_VERSION_SET_H_
16 #define STORAGE_LEVELDB_DB_VERSION_SET_H_
28 namespace log {
class Writer; }
42 extern int FindFile(
const InternalKeyComparator& icmp,
43 const std::vector<FileMetaData*>& files,
53 const InternalKeyComparator& icmp,
54 bool disjoint_sorted_files,
55 const std::vector<FileMetaData*>& files,
56 const Slice* smallest_user_key,
57 const Slice* largest_user_key);
96 std::vector<FileMetaData*>* inputs);
103 const Slice* smallest_user_key,
104 const Slice* largest_user_key);
109 const Slice& largest_user_key);
138 std::vector<FileMetaData*>
files_[config::kNumLevels];
151 : vset_(vset), next_(this), prev_(this), refs_(0),
152 file_to_compact_(NULL),
153 file_to_compact_level_(-1),
154 compaction_score_(-1),
155 compaction_level_(-1) {
279 void GetRange(
const std::vector<FileMetaData*>& inputs,
283 void GetRange2(
const std::vector<FileMetaData*>& inputs1,
284 const std::vector<FileMetaData*>& inputs2,
398 #endif // STORAGE_LEVELDB_DB_VERSION_SET_H_
uint64_t ApproximateOffsetOf(Version *v, const InternalKey &key)
std::string DebugString() const
bool IsBaseLevelForKey(const Slice &user_key)
#define EXCLUSIVE_LOCKS_REQUIRED(...)
void ForEachOverlapping(Slice user_key, Slice internal_key, void *arg, bool(*func)(void *, int, FileMetaData *))
std::string compact_pointer_[config::kNumLevels]
void AddInputDeletions(VersionEdit *edit)
int PickLevelForMemTableOutput(const Slice &smallest_user_key, const Slice &largest_user_key)
void GetRange(const std::vector< FileMetaData * > &inputs, InternalKey *smallest, InternalKey *largest)
const std::string dbname_
bool OverlapInLevel(int level, const Slice *smallest_user_key, const Slice *largest_user_key)
void GetOverlappingInputs(int level, const InternalKey *begin, const InternalKey *end, std::vector< FileMetaData * > *inputs)
Status WriteSnapshot(log::Writer *log)
VersionSet(const std::string &dbname, const Options *options, TableCache *table_cache, const InternalKeyComparator *)
const Options *const options_
uint64_t next_file_number_
int64_t MaxNextLevelOverlappingBytes()
Compaction * CompactRange(int level, const InternalKey *begin, const InternalKey *end)
void Finalize(Version *v)
const char * LevelSummary(LevelSummaryStorage *scratch) const
void SetLastSequence(uint64_t s)
bool RecordReadSample(Slice key)
Iterator * NewConcatenatingIterator(const ReadOptions &, int level) const
bool IsTrivialMove() const
Iterator * MakeInputIterator(Compaction *c)
bool SomeFileOverlapsRange(const InternalKeyComparator &icmp, bool disjoint_sorted_files, const std::vector< FileMetaData * > &files, const Slice *smallest_user_key, const Slice *largest_user_key)
Status LogAndApply(VersionEdit *edit, port::Mutex *mu) EXCLUSIVE_LOCKS_REQUIRED(mu)
uint64_t LogNumber() const
bool NeedsCompaction() const
Version * current() const
uint64_t MaxOutputFileSize() const
bool ManifestContains(const std::string &record) const
bool UpdateStats(const GetStats &stats)
log::Writer * descriptor_log_
FileMetaData * file_to_compact_
void operator=(const VersionSet &)
int file_to_compact_level_
unsigned long long uint64_t
int64_t overlapped_bytes_
uint64_t max_output_file_size_
uint64_t prev_log_number_
void AddLiveFiles(std::set< uint64_t > *live)
Version(VersionSet *vset)
uint64_t LastSequence() const
const InternalKeyComparator icmp_
int NumLevelFiles(int level) const
uint64_t manifest_file_number_
std::vector< FileMetaData * > inputs_[2]
void MarkFileNumberUsed(uint64_t number)
int NumFiles(int level) const
uint64_t PrevLogNumber() const
size_t grandparent_index_
int num_input_files(int which) const
std::vector< FileMetaData * > grandparents_
size_t level_ptrs_[config::kNumLevels]
Status Get(const ReadOptions &, const LookupKey &key, std::string *val, GetStats *stats)
uint64_t ManifestFileNumber() const
WritableFile * descriptor_file_
TableCache *const table_cache_
void SetupOtherInputs(Compaction *c)
void ReuseFileNumber(uint64_t file_number)
void AddIterators(const ReadOptions &, std::vector< Iterator * > *iters)
void AppendVersion(Version *v)
int FindFile(const InternalKeyComparator &icmp, const std::vector< FileMetaData * > &files, const Slice &key)
void operator=(const Version &)
FileMetaData * input(int which, int i) const
void GetRange2(const std::vector< FileMetaData * > &inputs1, const std::vector< FileMetaData * > &inputs2, InternalKey *smallest, InternalKey *largest)
bool ShouldStopBefore(const Slice &internal_key)
Compaction * PickCompaction()
std::vector< FileMetaData * > files_[config::kNumLevels]
int64_t NumLevelBytes(int level) const