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

Commit 15d5a9e

Browse files
committed
Breaking: bump abstract-leveldown
Removes legacy ranges options (Level/community#86).
1 parent 8bc5696 commit 15d5a9e

6 files changed

+33
-66
lines changed

Diff for: README.md

-2
Original file line numberDiff line numberDiff line change
@@ -275,8 +275,6 @@ Returns a new [`iterator`](#iterator) instance. The optional `options` object ma
275275

276276
- `lt` (less than), `lte` (less than or equal) define the higher bound of the range to be fetched and will determine the starting point where `reverse` is _not_ `true`. Only records where the key is less than (or equal to) this option will be included in the range. When `reverse` is `true` the order will be reversed, but the records returned will be the same.
277277

278-
- `start, end` legacy ranges - instead use `gte, lte`
279-
280278
- `reverse` _(boolean, default: `false`)_: a boolean, set to `true` if you want the stream to go in reverse order. Beware that due to the way LevelDB works, a reverse seek will be slower than a forward seek.
281279

282280
- `keys` (boolean, default: `true`): whether the callback to the `next()` method should receive a non-null `key`. There is a small efficiency gain if you ultimately don't care what the keys are as they don't need to be converted and copied into JavaScript.

Diff for: binding.cc

+26-59
Original file line numberDiff line numberDiff line change
@@ -499,8 +499,6 @@ struct PriorityWorker : public BaseWorker {
499499
struct Iterator {
500500
Iterator (Database* database,
501501
uint32_t id,
502-
std::string* start,
503-
std::string* end,
504502
bool reverse,
505503
bool keys,
506504
bool values,
@@ -515,8 +513,6 @@ struct Iterator {
515513
uint32_t highWaterMark)
516514
: database_(database),
517515
id_(id),
518-
start_(start),
519-
end_(end),
520516
reverse_(reverse),
521517
keys_(keys),
522518
values_(values),
@@ -544,8 +540,6 @@ struct Iterator {
544540
~Iterator () {
545541
assert(ended_);
546542

547-
if (start_ != NULL) delete start_;
548-
if (end_ != NULL) delete end_;
549543
if (lt_ != NULL) delete lt_;
550544
if (gt_ != NULL) delete gt_;
551545
if (lte_ != NULL) delete lte_;
@@ -588,32 +582,29 @@ struct Iterator {
588582

589583
dbIterator_ = database_->NewIterator(options_);
590584

591-
if (start_ != NULL) {
592-
dbIterator_->Seek(*start_);
585+
if (!reverse_ && gte_ != NULL) {
586+
dbIterator_->Seek(*gte_);
587+
} else if (!reverse_ && gt_ != NULL) {
588+
dbIterator_->Seek(*gt_);
593589

594-
if (reverse_) {
595-
if (!dbIterator_->Valid()) {
596-
dbIterator_->SeekToLast();
597-
} else {
598-
leveldb::Slice key = dbIterator_->key();
599-
600-
if ((lt_ != NULL && key.compare(*lt_) >= 0) ||
601-
(lte_ != NULL && key.compare(*lte_) > 0) ||
602-
(start_ != NULL && key.compare(*start_) > 0)) {
603-
dbIterator_->Prev();
604-
}
605-
}
590+
if (dbIterator_->Valid() && dbIterator_->key().compare(*gt_) == 0) {
591+
dbIterator_->Next();
592+
}
593+
} else if (reverse_ && lte_ != NULL) {
594+
dbIterator_->Seek(*lte_);
606595

607-
// TODO: this looks like dead code. Remove it in a
608-
// next major release together with Level/community#86.
609-
if (dbIterator_->Valid() && lt_ != NULL) {
610-
if (dbIterator_->key().compare(*lt_) >= 0)
611-
dbIterator_->Prev();
612-
}
613-
} else {
614-
if (dbIterator_->Valid() && gt_ != NULL
615-
&& dbIterator_->key().compare(*gt_) == 0)
616-
dbIterator_->Next();
596+
if (!dbIterator_->Valid()) {
597+
dbIterator_->SeekToLast();
598+
} else if (dbIterator_->key().compare(*lte_) > 0) {
599+
dbIterator_->Prev();
600+
}
601+
} else if (reverse_ && lt_ != NULL) {
602+
dbIterator_->Seek(*lt_);
603+
604+
if (!dbIterator_->Valid()) {
605+
dbIterator_->SeekToLast();
606+
} else if (dbIterator_->key().compare(*lt_) >= 0) {
607+
dbIterator_->Prev();
617608
}
618609
} else if (reverse_) {
619610
dbIterator_->SeekToLast();
@@ -638,12 +629,8 @@ struct Iterator {
638629

639630
if (dbIterator_->Valid()) {
640631
std::string keyStr = dbIterator_->key().ToString();
641-
const int isEnd = end_ == NULL ? 1 : end_->compare(keyStr);
642632

643633
if ((limit_ < 0 || ++count_ <= limit_)
644-
&& (end_ == NULL
645-
|| (reverse_ && (isEnd <= 0))
646-
|| (!reverse_ && (isEnd >= 0)))
647634
&& ( lt_ != NULL ? (lt_->compare(keyStr) > 0)
648635
: lte_ != NULL ? (lte_->compare(keyStr) >= 0)
649636
: true )
@@ -665,20 +652,10 @@ struct Iterator {
665652
}
666653

667654
bool OutOfRange (leveldb::Slice& target) {
668-
if ((lt_ != NULL && target.compare(*lt_) >= 0) ||
669-
(lte_ != NULL && target.compare(*lte_) > 0) ||
670-
(start_ != NULL && reverse_ && target.compare(*start_) > 0)) {
671-
return true;
672-
}
673-
674-
if (end_ != NULL) {
675-
int d = target.compare(*end_);
676-
if (reverse_ ? d < 0 : d > 0) return true;
677-
}
678-
679-
return ((gt_ != NULL && target.compare(*gt_) <= 0) ||
680-
(gte_ != NULL && target.compare(*gte_) < 0) ||
681-
(start_ != NULL && !reverse_ && target.compare(*start_) < 0));
655+
return ((lt_ != NULL && target.compare(*lt_) >= 0) ||
656+
(lte_ != NULL && target.compare(*lte_) > 0) ||
657+
(gt_ != NULL && target.compare(*gt_) <= 0) ||
658+
(gte_ != NULL && target.compare(*gte_) < 0));
682659
}
683660

684661
bool IteratorNext (std::vector<std::pair<std::string, std::string> >& result) {
@@ -711,8 +688,6 @@ struct Iterator {
711688

712689
Database* database_;
713690
uint32_t id_;
714-
std::string* start_;
715-
std::string* end_;
716691
bool reverse_;
717692
bool keys_;
718693
bool values_;
@@ -1251,21 +1226,13 @@ NAPI_METHOD(iterator_init) {
12511226
uint32_t highWaterMark = Uint32Property(env, options, "highWaterMark",
12521227
16 * 1024);
12531228

1254-
std::string* start = NULL;
1255-
std::string* end = RangeOption(env, options, "end");
12561229
std::string* lt = RangeOption(env, options, "lt");
12571230
std::string* lte = RangeOption(env, options, "lte");
12581231
std::string* gt = RangeOption(env, options, "gt");
12591232
std::string* gte = RangeOption(env, options, "gte");
12601233

1261-
if (!reverse && gte != NULL) start = new std::string(*gte);
1262-
else if (!reverse && gt != NULL) start = new std::string(*gt);
1263-
else if (reverse && lte != NULL) start = new std::string(*lte);
1264-
else if (reverse && lt != NULL) start = new std::string(*lt);
1265-
else start = RangeOption(env, options, "start");
1266-
12671234
uint32_t id = database->currentIteratorId_++;
1268-
Iterator* iterator = new Iterator(database, id, start, end, reverse, keys,
1235+
Iterator* iterator = new Iterator(database, id, reverse, keys,
12691236
values, limit, lt, lte, gt, gte, fillCache,
12701237
keyAsBuffer, valueAsBuffer, highWaterMark);
12711238
napi_value result;

Diff for: package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
"prebuild-darwin-x64": "prebuildify -t 8.14.0 --napi --strip"
2525
},
2626
"dependencies": {
27-
"abstract-leveldown": "^6.3.0",
27+
"abstract-leveldown": "^7.0.0",
2828
"napi-macros": "~2.0.0",
2929
"node-gyp-build": "~4.2.1"
3030
},

Diff for: test/empty-range-option-test.js

+1-1
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()

Diff for: test/iterator-recursion-test.js

+4-2
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()

Diff for: test/stack-blower.js

+1-1
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)