提交 ae7940b6 编写于 作者: V Venkatesh Radhakrishnan

Fix regression failure in PrefixTest.PrefixValid

Summary: Use IterKey to store prefix_start_ so that it doesn't get freed

Test Plan: PrefixTest.PrefixValid

Reviewers: anthony, IslamAbdelRahman

Reviewed By: IslamAbdelRahman

Subscribers: dhruba

Differential Revision: https://reviews.facebook.net/D50289
上级 c8e01ef9
......@@ -157,7 +157,7 @@ class DBIter: public Iterator {
Statistics* statistics_;
uint64_t max_skip_;
const Slice* iterate_upper_bound_;
Slice prefix_start_;
IterKey prefix_start_;
bool prefix_same_as_start_;
// No copying allowed
......@@ -203,7 +203,7 @@ void DBIter::Next() {
}
if (valid_ && prefix_extractor_ && prefix_same_as_start_ &&
prefix_extractor_->Transform(saved_key_.GetKey())
.compare(prefix_start_) != 0) {
.compare(prefix_start_.GetKey()) != 0) {
valid_ = false;
}
}
......@@ -378,7 +378,7 @@ void DBIter::Prev() {
}
if (valid_ && prefix_extractor_ && prefix_same_as_start_ &&
prefix_extractor_->Transform(saved_key_.GetKey())
.compare(prefix_start_) != 0) {
.compare(prefix_start_.GetKey()) != 0) {
valid_ = false;
}
}
......@@ -683,7 +683,7 @@ void DBIter::Seek(const Slice& target) {
valid_ = false;
}
if (valid_ && prefix_extractor_ && prefix_same_as_start_) {
prefix_start_ = prefix_extractor_->Transform(target);
prefix_start_.SetKey(prefix_extractor_->Transform(target));
}
}
......@@ -714,7 +714,7 @@ void DBIter::SeekToFirst() {
valid_ = false;
}
if (valid_ && prefix_extractor_ && prefix_same_as_start_) {
prefix_start_ = prefix_extractor_->Transform(saved_key_.GetKey());
prefix_start_.SetKey(prefix_extractor_->Transform(saved_key_.GetKey()));
}
}
......@@ -762,7 +762,7 @@ void DBIter::SeekToLast() {
}
}
if (valid_ && prefix_extractor_ && prefix_same_as_start_) {
prefix_start_ = prefix_extractor_->Transform(saved_key_.GetKey());
prefix_start_.SetKey(prefix_extractor_->Transform(saved_key_.GetKey()));
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册