Skip to content
This repository has been archived by the owner on Dec 1, 2024. It is now read-only.

Commit

Permalink
Refactor initial seek
Browse files Browse the repository at this point in the history
Cherry-picked from Level/leveldown#689
  • Loading branch information
vweevers committed Nov 4, 2019
1 parent 9b08726 commit 949afd2
Showing 1 changed file with 11 additions and 15 deletions.
26 changes: 11 additions & 15 deletions binding.cc
Original file line number Diff line number Diff line change
Expand Up @@ -600,27 +600,24 @@ struct Iterator {
if (!dbIterator_->Valid()) {
dbIterator_->SeekToLast();
} else {
std::string keyStr = dbIterator_->key().ToString();

if (lt_ != NULL) {
if (lt_->compare(keyStr) <= 0)
dbIterator_->Prev();
} else if (lte_ != NULL) {
if (lte_->compare(keyStr) < 0)
dbIterator_->Prev();
} else if (start_ != NULL) {
if (start_->compare(keyStr))
dbIterator_->Prev();
leveldb::Slice key = dbIterator_->key();

if ((lt_ != NULL && key.compare(*lt_) >= 0) ||
(lte_ != NULL && key.compare(*lte_) > 0) ||
(start_ != NULL && key.compare(*start_) > 0)) {
dbIterator_->Prev();
}
}

// TODO: this looks like dead code. Remove it in a
// next major release together with Level/community#86.
if (dbIterator_->Valid() && lt_ != NULL) {
if (lt_->compare(dbIterator_->key().ToString()) <= 0)
if (dbIterator_->key().compare(*lt_) >= 0)
dbIterator_->Prev();
}
} else {
if (dbIterator_->Valid() && gt_ != NULL
&& gt_->compare(dbIterator_->key().ToString()) == 0)
&& dbIterator_->key().compare(*gt_) == 0)
dbIterator_->Next();
}
} else if (reverse_) {
Expand Down Expand Up @@ -1368,8 +1365,7 @@ NAPI_METHOD(iterator_seek) {
dbIterator->SeekToLast();
dbIterator->Next();
}
}
else if (dbIterator->Valid()) {
} else if (dbIterator->Valid()) {
int cmp = dbIterator->key().compare(target);
if (cmp > 0 && iterator->reverse_) {
dbIterator->Prev();
Expand Down

0 comments on commit 949afd2

Please sign in to comment.