virtual ~KeyValueDB() {}
/// estimate space utilization for a prefix (in bytes)
- virtual int64_t estimate_prefix_size(const string& prefix) {
+ virtual int64_t estimate_prefix_size(const string& prefix,
+ const string& key_prefix) {
return 0;
}
}
}
-int64_t RocksDBStore::estimate_prefix_size(const string& prefix)
+int64_t RocksDBStore::estimate_prefix_size(const string& prefix,
+ const string& key_prefix)
{
auto cf = get_cf_handle(prefix);
uint64_t size = 0;
//rocksdb::DB::INCLUDE_MEMTABLES | // do not include memtables...
rocksdb::DB::INCLUDE_FILES;
if (cf) {
- string start(1, '\x00');
- string limit("\xff\xff\xff\xff");
+ string start = key_prefix + string(1, '\x00');
+ string limit = key_prefix + string("\xff\xff\xff\xff");
rocksdb::Range r(start, limit);
db->GetApproximateSizes(cf, &r, 1, &size, flags);
} else {
- string limit = prefix + "\xff\xff\xff\xff";
- rocksdb::Range r(prefix, limit);
- db->GetApproximateSizes(default_cf,
- &r, 1, &size, flags);
+ string start = prefix + key_prefix;
+ string limit = prefix + key_prefix + "\xff\xff\xff\xff";
+ rocksdb::Range r(start, limit);
+ db->GetApproximateSizes(default_cf, &r, 1, &size, flags);
}
return size;
}
return logger;
}
- int64_t estimate_prefix_size(const string& prefix) override;
+ int64_t estimate_prefix_size(const string& prefix,
+ const string& key_prefix) override;
struct RocksWBHandler: public rocksdb::WriteBatch::Handler {
std::string seen ;