13 assert(seq <= kMaxSequenceNumber);
14 assert(t <= kValueTypeForSeek);
15 return (seq << 8) | t;
25 snprintf(buf,
sizeof(buf),
"' @ %llu : %d",
28 std::string result =
"'";
47 return "leveldb.InternalKeyComparator";
61 }
else if (anum < bnum) {
70 const Slice& limit)
const {
74 std::string tmp(user_start.
data(), user_start.
size());
76 if (tmp.size() < user_start.
size() &&
80 PutFixed64(&tmp, PackSequenceAndType(kMaxSequenceNumber,kValueTypeForSeek));
81 assert(this->
Compare(*start, tmp) < 0);
82 assert(this->
Compare(tmp, limit) < 0);
89 std::string tmp(user_key.
data(), user_key.
size());
91 if (tmp.size() < user_key.
size() &&
95 PutFixed64(&tmp, PackSequenceAndType(kMaxSequenceNumber,kValueTypeForSeek));
96 assert(this->
Compare(*key, tmp) < 0);
106 std::string* dst)
const {
110 for (
int i = 0; i < n; i++) {
122 size_t usize = user_key.
size();
123 size_t needed = usize + 13;
125 if (needed <=
sizeof(
space_)) {
128 dst =
new char[needed];
133 memcpy(dst, user_key.
data(), usize);
135 EncodeFixed64(dst, PackSequenceAndType(s, kValueTypeForSeek));
const Comparator * user_comparator_
virtual void CreateFilter(const Slice *keys, int n, std::string *dst) const
uint64_t DecodeFixed64(const char *ptr)
const char * data() const
virtual void FindShortSuccessor(std::string *key) const
virtual void FindShortSuccessor(std::string *key) const =0
const FilterPolicy *const user_policy_
char * EncodeVarint32(char *dst, uint32_t v)
bool ParseInternalKey(const Slice &internal_key, ParsedInternalKey *result)
void AppendInternalKey(std::string *result, const ParsedInternalKey &key)
virtual const char * Name() const =0
void EncodeFixed64(char *buf, uint64_t value)
virtual int Compare(const Slice &a, const Slice &b) const
void PutFixed64(std::string *dst, uint64_t value)
unsigned long long uint64_t
std::string EscapeString(const Slice &value)
LookupKey(const Slice &user_key, SequenceNumber sequence)
std::string DebugString() const
virtual void FindShortestSeparator(std::string *start, const Slice &limit) const
virtual void FindShortestSeparator(std::string *start, const Slice &limit) const =0
virtual int Compare(const Slice &a, const Slice &b) const =0
Slice ExtractUserKey(const Slice &internal_key)
virtual void CreateFilter(const Slice *keys, int n, std::string *dst) const =0
virtual bool KeyMayMatch(const Slice &key, const Slice &filter) const
std::string ToString() const
virtual bool KeyMayMatch(const Slice &key, const Slice &filter) const =0
std::string DebugString() const
virtual const char * Name() const
virtual const char * Name() const