[Pkg-javascript-commits] [node-leveldown] 300/492: iterator: Start on correct value when reverse=true
Andrew Kelley
andrewrk-guest at moszumanska.debian.org
Sun Jul 6 17:14:11 UTC 2014
This is an automated email from the git hooks/post-receive script.
andrewrk-guest pushed a commit to annotated tag rocksdb-0.10.1
in repository node-leveldown.
commit 701b3c037a54fc5b4f41f556c47db3545426340c
Author: David Björklund <david.bjorklund at gmail.com>
Date: Fri Mar 29 22:20:36 2013 +0100
iterator: Start on correct value when reverse=true
Closes #27
---
src/iterator.cc | 9 ++++++++-
test/iterator-test.js | 22 ++++++++++++++++++++--
2 files changed, 28 insertions(+), 3 deletions(-)
diff --git a/src/iterator.cc b/src/iterator.cc
index e5fdd22..424782b 100644
--- a/src/iterator.cc
+++ b/src/iterator.cc
@@ -59,8 +59,15 @@ Iterator::~Iterator () {
bool Iterator::GetIterator () {
if (dbIterator == NULL) {
dbIterator = database->NewIterator(options);
- if (start != NULL)
+ if (start != NULL) {
dbIterator->Seek(*start);
+ if (reverse) {
+ if (!dbIterator->Valid())
+ dbIterator->SeekToLast();
+ else if (start->compare(dbIterator->key()))
+ dbIterator->Prev();
+ }
+ }
else if (reverse)
dbIterator->SeekToLast();
else
diff --git a/test/iterator-test.js b/test/iterator-test.js
index 3a4e1a6..3938545 100644
--- a/test/iterator-test.js
+++ b/test/iterator-test.js
@@ -230,8 +230,8 @@ module.exports.iterator = function (leveldown) {
test('test iterator with start being a midway key and reverse=true', function (t) {
collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, start: '49.5', reverse: true }), function (err, data) {
t.notOk(err, 'no error')
- t.equal(data.length, 51, 'correct number of entries')
- var expected = sourceData.slice().reverse().slice(49).map(transformSource)
+ t.equal(data.length, 50, 'correct number of entries')
+ var expected = sourceData.slice().reverse().slice(50).map(transformSource)
t.deepEqual(data, expected)
t.end()
})
@@ -365,6 +365,24 @@ module.exports.iterator = function (leveldown) {
t.end()
})
})
+
+ test('test iterator with start after database end and reverse=true', function (t) {
+ collectEntries(db.iterator({ keyAsBuffer: false, valueAsBuffer: false, start: '9a', reverse: true }), function (err, data) {
+ t.notOk(err, 'no error')
+ t.equal(data.length, sourceData.length, 'correct number of entries')
+ var expected = sourceData.slice().reverse().map(transformSource)
+ t.deepEqual(data, expected)
+ t.end()
+ })
+ })
+
+ test('test iterator with start and end after database and and reverse=true', function (t) {
+ collectEntries(db.iterator({ start: '9b', end: '9a', reverse: true }), function (err, data) {
+ t.notOk(err, 'no error')
+ t.equal(data.length, 0, 'correct number of entries')
+ t.end()
+ })
+ })
}
module.exports.tearDown = function () {
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/node-leveldown.git
More information about the Pkg-javascript-commits
mailing list