Comments (7)
Ahhh, I see now. Thank you for that explanation. This might be a good explanation to add to the iterator documentation? I'll close this issue. Sorry for the trouble.
from abstract-leveldown.
The limit applies to the total number of items retrieved, not to what's on disk. It does a seek first, then from it where landed, retrieves items until the limit is reached.
from abstract-leveldown.
Following LevelDB logic, forwards seeks land on the target, or the key after it. In reverse mode, we reversed that logic: a backwards seek lands on the target or the key before it.
from abstract-leveldown.
@vweevers that makes sense, however, it also makes assumption 1 - items are stored in the order received. It seems problematic to impose this storage rule on the underlying persistence layer, no?
Also, in this case, the key provided to seek
doesn't exist at all, it was never put
.
from abstract-leveldown.
Also, in this case, the key provided to seek doesn't exist at all, it was never put.
I'll rephrase: seeks land on the target or - if that key does not exist - the key after/before it.
Items are sorted lexicographically. In this case, the inserted keys one
, two
, three
sort as one
, three
, two
. If you imagine the key three!
in between them, they sort as one
, three
, three!
, two
. Seeking backwards to three!
would land on three!
if that key existed, but it doesn't, so it lands on three
.
from abstract-leveldown.
No trouble at all.
from abstract-leveldown.
Wait, but doesn't limit: 1
mean that only two
would be retrieved in reverse
landing the seek on undefined
?
from abstract-leveldown.
Related Issues (20)
- Open Test - Regular expression is too strict. HOT 2
- Drop IE10
- Update changelog for v6
- Question: the proper way to pass some specific tests. HOT 7
- Reorder v6 upgrade guide
- Range tests on zero-length buffer+string are incompatible with bytewise, charwise & IDB HOT 2
- Enable abstract-leveldown stores to emit events for levelup HOT 13
- An in-range update of tape is breaking the build 🚨 HOT 1
- Release 6.0.2
- An in-range update of level-concat-iterator is breaking the build 🚨 HOT 3
- Return early and call back asynchronously if batch is empty
- Expose prev() ? HOT 1
- An in-range update of airtap is breaking the build 🚨 HOT 3
- Flag to disable iterator tests HOT 19
- Document which abstract methods must/should be implemented
- Expand binary key tests HOT 1
- Open to adding an optional "batched get" capability? HOT 5
- API design: `getMany()`, key & value iterators, `iterator.nextv()` HOT 3
- Check likely false positive vulnerabilities in devDependencies HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from abstract-leveldown.