Unverified Commit d9761046 authored by Wu Jiayu's avatar Wu Jiayu Committed by GitHub

Fix blob file iterator (#45)

* fix iterator

* fix

* fmt
parent cff9f517
......@@ -96,7 +96,7 @@ void BlobFileIterator::GetBlobRecord() {
Slice record_slice;
auto record_size = decoder_.GetRecordSize();
buffer_.reserve(record_size);
buffer_.resize(record_size);
status_ = file_->Read(iterate_offset_ + kBlobHeaderSize, record_size,
&record_slice, buffer_.data());
if (status_.ok()) {
......@@ -167,11 +167,15 @@ void BlobFileMergeIterator::SeekToFirst() {
}
void BlobFileMergeIterator::Next() {
assert(current_ != nullptr);
assert(Valid());
current_->Next();
if (current_->status().ok() && current_->Valid()) min_heap_.push(current_);
current_ = min_heap_.top();
min_heap_.pop();
if (!min_heap_.empty()) {
current_ = min_heap_.top();
min_heap_.pop();
} else {
current_ = nullptr;
}
}
Slice BlobFileMergeIterator::key() const {
......
......@@ -209,13 +209,15 @@ TEST_F(BlobFileIteratorTest, MergeIterator) {
BlobFileMergeIterator iter(std::move(iters));
iter.SeekToFirst();
for (int i = 1; i < kMaxKeyNum; i++, iter.Next()) {
int i = 1;
for (; iter.Valid(); i++, iter.Next()) {
ASSERT_OK(iter.status());
ASSERT_TRUE(iter.Valid());
ASSERT_EQ(iter.key(), GenKey(i));
ASSERT_EQ(iter.value(), GenValue(i));
ASSERT_EQ(iter.GetBlobIndex().blob_handle, handles[i]);
}
ASSERT_EQ(i, kMaxKeyNum);
}
} // namespace titandb
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment