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

Commit 271894f

Browse files
committed
Breaking: bump abstract-leveldown
Removes legacy ranges options (Level/community#86). Cherry-picked from Level/leveldown@15d5a9e
1 parent 9d36809 commit 271894f

5 files changed

Lines changed: 33 additions & 64 deletions

File tree

binding.cc

Lines changed: 26 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -512,8 +512,6 @@ struct PriorityWorker : public BaseWorker {
512512
struct Iterator {
513513
Iterator (Database* database,
514514
uint32_t id,
515-
std::string* start,
516-
std::string* end,
517515
bool reverse,
518516
bool keys,
519517
bool values,
@@ -528,8 +526,6 @@ struct Iterator {
528526
uint32_t highWaterMark)
529527
: database_(database),
530528
id_(id),
531-
start_(start),
532-
end_(end),
533529
reverse_(reverse),
534530
keys_(keys),
535531
values_(values),
@@ -558,8 +554,6 @@ struct Iterator {
558554
~Iterator () {
559555
assert(ended_);
560556

561-
if (start_ != NULL) delete start_;
562-
if (end_ != NULL) delete end_;
563557
if (lt_ != NULL) delete lt_;
564558
if (gt_ != NULL) delete gt_;
565559
if (lte_ != NULL) delete lte_;
@@ -593,32 +587,29 @@ struct Iterator {
593587

594588
dbIterator_ = database_->NewIterator(options_);
595589

596-
if (start_ != NULL) {
597-
dbIterator_->Seek(*start_);
590+
if (!reverse_ && gte_ != NULL) {
591+
dbIterator_->Seek(*gte_);
592+
} else if (!reverse_ && gt_ != NULL) {
593+
dbIterator_->Seek(*gt_);
598594

599-
if (reverse_) {
600-
if (!dbIterator_->Valid()) {
601-
dbIterator_->SeekToLast();
602-
} else {
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();
609-
}
610-
}
595+
if (dbIterator_->Valid() && dbIterator_->key().compare(*gt_) == 0) {
596+
dbIterator_->Next();
597+
}
598+
} else if (reverse_ && lte_ != NULL) {
599+
dbIterator_->Seek(*lte_);
611600

612-
// TODO: this looks like dead code. Remove it in a
613-
// next major release together with Level/community#86.
614-
if (dbIterator_->Valid() && lt_ != NULL) {
615-
if (dbIterator_->key().compare(*lt_) >= 0)
616-
dbIterator_->Prev();
617-
}
618-
} else {
619-
if (dbIterator_->Valid() && gt_ != NULL
620-
&& dbIterator_->key().compare(*gt_) == 0)
621-
dbIterator_->Next();
601+
if (!dbIterator_->Valid()) {
602+
dbIterator_->SeekToLast();
603+
} else if (dbIterator_->key().compare(*lte_) > 0) {
604+
dbIterator_->Prev();
605+
}
606+
} else if (reverse_ && lt_ != NULL) {
607+
dbIterator_->Seek(*lt_);
608+
609+
if (!dbIterator_->Valid()) {
610+
dbIterator_->SeekToLast();
611+
} else if (dbIterator_->key().compare(*lt_) >= 0) {
612+
dbIterator_->Prev();
622613
}
623614
} else if (reverse_) {
624615
dbIterator_->SeekToLast();
@@ -643,12 +634,8 @@ struct Iterator {
643634

644635
if (dbIterator_->Valid()) {
645636
std::string keyStr = dbIterator_->key().ToString();
646-
const int isEnd = end_ == NULL ? 1 : end_->compare(keyStr);
647637

648638
if ((limit_ < 0 || ++count_ <= limit_)
649-
&& (end_ == NULL
650-
|| (reverse_ && (isEnd <= 0))
651-
|| (!reverse_ && (isEnd >= 0)))
652639
&& ( lt_ != NULL ? (lt_->compare(keyStr) > 0)
653640
: lte_ != NULL ? (lte_->compare(keyStr) >= 0)
654641
: true )
@@ -670,20 +657,10 @@ struct Iterator {
670657
}
671658

672659
bool OutOfRange (leveldb::Slice& target) {
673-
if ((lt_ != NULL && target.compare(*lt_) >= 0) ||
674-
(lte_ != NULL && target.compare(*lte_) > 0) ||
675-
(start_ != NULL && reverse_ && target.compare(*start_) > 0)) {
676-
return true;
677-
}
678-
679-
if (end_ != NULL) {
680-
int d = target.compare(*end_);
681-
if (reverse_ ? d < 0 : d > 0) return true;
682-
}
683-
684-
return ((gt_ != NULL && target.compare(*gt_) <= 0) ||
685-
(gte_ != NULL && target.compare(*gte_) < 0) ||
686-
(start_ != NULL && !reverse_ && target.compare(*start_) < 0));
660+
return ((lt_ != NULL && target.compare(*lt_) >= 0) ||
661+
(lte_ != NULL && target.compare(*lte_) > 0) ||
662+
(gt_ != NULL && target.compare(*gt_) <= 0) ||
663+
(gte_ != NULL && target.compare(*gte_) < 0));
687664
}
688665

689666
bool IteratorNext (std::vector<std::pair<std::string, std::string> >& result) {
@@ -716,8 +693,6 @@ struct Iterator {
716693

717694
Database* database_;
718695
uint32_t id_;
719-
std::string* start_;
720-
std::string* end_;
721696
bool reverse_;
722697
bool keys_;
723698
bool values_;
@@ -1305,21 +1280,13 @@ NAPI_METHOD(iterator_init) {
13051280
uint32_t highWaterMark = Uint32Property(env, options, "highWaterMark",
13061281
16 * 1024);
13071282

1308-
std::string* start = NULL;
1309-
std::string* end = RangeOption(env, options, "end");
13101283
std::string* lt = RangeOption(env, options, "lt");
13111284
std::string* lte = RangeOption(env, options, "lte");
13121285
std::string* gt = RangeOption(env, options, "gt");
13131286
std::string* gte = RangeOption(env, options, "gte");
13141287

1315-
if (!reverse && gte != NULL) start = new std::string(*gte);
1316-
else if (!reverse && gt != NULL) start = new std::string(*gt);
1317-
else if (reverse && lte != NULL) start = new std::string(*lte);
1318-
else if (reverse && lt != NULL) start = new std::string(*lt);
1319-
else start = RangeOption(env, options, "start");
1320-
13211288
uint32_t id = database->currentIteratorId_++;
1322-
Iterator* iterator = new Iterator(database, id, start, end, reverse, keys,
1289+
Iterator* iterator = new Iterator(database, id, reverse, keys,
13231290
values, limit, lt, lte, gt, gte, fillCache,
13241291
keyAsBuffer, valueAsBuffer, highWaterMark);
13251292
napi_value result;

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"prepublishOnly": "npm run dependency-check"
2121
},
2222
"dependencies": {
23-
"abstract-leveldown": "^6.3.0",
23+
"abstract-leveldown": "^7.0.0",
2424
"napi-macros": "^2.0.0",
2525
"node-gyp-build": "^4.2.3"
2626
},

test/empty-range-option-test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const test = require('tape')
22
const concat = require('level-concat-iterator')
33
const testCommon = require('./common')
4-
const rangeOptions = 'start end gt gte lt lte'.split(' ')
4+
const rangeOptions = ['gt', 'gte', 'lt', 'lte']
55

66
test('empty range options are ignored', function (t) {
77
const db = testCommon.factory()

test/iterator-recursion-test.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,10 @@ test('iterate over a large iterator with a large watermark', function (t) {
6868
highWaterMark: 10000000
6969
})
7070
const read = function () {
71-
iterator.next(function () {
72-
if (!arguments.length) {
71+
iterator.next(function (err, key, value) {
72+
if (err) throw err
73+
74+
if (key === undefined && value === undefined) {
7375
t.end()
7476
} else {
7577
read()

test/stack-blower.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ if (process.argv[2] === 'run') {
1313

1414
db.open(function () {
1515
function recurse () {
16-
db.iterator({ start: '0' })
16+
db.iterator({ gte: '0' })
1717
depth++
1818
recurse()
1919
}

0 commit comments

Comments
 (0)