mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 17:27:55 +00:00
avoid calling FindFile twice in TwoLevelIterator for PlainTable
Summary: this is to reclaim the regression introduced in https://reviews.facebook.net/D17853 Test Plan: make all check Reviewers: igor, haobo, sdong, dhruba, yhchiang Reviewed By: haobo CC: leveldb Differential Revision: https://reviews.facebook.net/D17985
This commit is contained in:
@@ -77,16 +77,18 @@ TwoLevelIterator::TwoLevelIterator(TwoLevelIteratorState* state,
|
||||
: state_(state), first_level_iter_(first_level_iter) {}
|
||||
|
||||
void TwoLevelIterator::Seek(const Slice& target) {
|
||||
if (state_->prefix_enabled && !state_->PrefixMayMatch(target)) {
|
||||
if (state_->check_prefix_may_match &&
|
||||
!state_->PrefixMayMatch(target)) {
|
||||
SetSecondLevelIterator(nullptr);
|
||||
} else {
|
||||
first_level_iter_.Seek(target);
|
||||
InitDataBlock();
|
||||
if (second_level_iter_.iter() != nullptr) {
|
||||
second_level_iter_.Seek(target);
|
||||
}
|
||||
SkipEmptyDataBlocksForward();
|
||||
return;
|
||||
}
|
||||
first_level_iter_.Seek(target);
|
||||
|
||||
InitDataBlock();
|
||||
if (second_level_iter_.iter() != nullptr) {
|
||||
second_level_iter_.Seek(target);
|
||||
}
|
||||
SkipEmptyDataBlocksForward();
|
||||
}
|
||||
|
||||
void TwoLevelIterator::SeekToFirst() {
|
||||
|
||||
Reference in New Issue
Block a user