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

Commit 949afd2

Browse files
committed
Refactor initial seek
Cherry-picked from Level/leveldown#689
1 parent 9b08726 commit 949afd2

1 file changed

Lines changed: 11 additions & 15 deletions

File tree

binding.cc

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -600,27 +600,24 @@ struct Iterator {
600600
if (!dbIterator_->Valid()) {
601601
dbIterator_->SeekToLast();
602602
} else {
603-
std::string keyStr = dbIterator_->key().ToString();
604-
605-
if (lt_ != NULL) {
606-
if (lt_->compare(keyStr) <= 0)
607-
dbIterator_->Prev();
608-
} else if (lte_ != NULL) {
609-
if (lte_->compare(keyStr) < 0)
610-
dbIterator_->Prev();
611-
} else if (start_ != NULL) {
612-
if (start_->compare(keyStr))
613-
dbIterator_->Prev();
603+
leveldb::Slice key = dbIterator_->key();
604+
605+
if ((lt_ != NULL && key.compare(*lt_) >= 0) ||
606+
(lte_ != NULL && key.compare(*lte_) > 0) ||
607+
(start_ != NULL && key.compare(*start_) > 0)) {
608+
dbIterator_->Prev();
614609
}
615610
}
616611

612+
// TODO: this looks like dead code. Remove it in a
613+
// next major release together with Level/community#86.
617614
if (dbIterator_->Valid() && lt_ != NULL) {
618-
if (lt_->compare(dbIterator_->key().ToString()) <= 0)
615+
if (dbIterator_->key().compare(*lt_) >= 0)
619616
dbIterator_->Prev();
620617
}
621618
} else {
622619
if (dbIterator_->Valid() && gt_ != NULL
623-
&& gt_->compare(dbIterator_->key().ToString()) == 0)
620+
&& dbIterator_->key().compare(*gt_) == 0)
624621
dbIterator_->Next();
625622
}
626623
} else if (reverse_) {
@@ -1368,8 +1365,7 @@ NAPI_METHOD(iterator_seek) {
13681365
dbIterator->SeekToLast();
13691366
dbIterator->Next();
13701367
}
1371-
}
1372-
else if (dbIterator->Valid()) {
1368+
} else if (dbIterator->Valid()) {
13731369
int cmp = dbIterator->key().compare(target);
13741370
if (cmp > 0 && iterator->reverse_) {
13751371
dbIterator->Prev();

0 commit comments

Comments
 (0)