-
Notifications
You must be signed in to change notification settings - Fork 68
Description
Hi gents!
Currently, Query.Prefix
is used to do the initial seek when a Query
begins, and iteration only continues while that prefix holds. There needs to be a flag that basically says, hey, don't use Prefix
once iteration has begun. Otherwise, there's no way to effectively do a seek and do an arbitrary amount of scanning. This seems like a critical feature to leave behind, yikes.
Hopefully, I'm missing something!?
For example, in go-ds-badger
: (line 270+)
it := txn.NewIterator(opt)
it.Seek(prefix)
...
qrb.Process.Go(func(worker goprocess.Process) {
...
for sent := 0; it.ValidForPrefix(prefix); sent++ {
...
}
}
...
could be enhanced to:
it := txn.NewIterator(opt)
it.Seek(prefix)
if q.PrefixOnlySeeks {
prefix = nil
}
...
Adding this would be easy, but all the impls would need to be updated of course. So maybe it's done as a selectively available feature?
This is a dealbreaker for us, but we love Datastore and want to use and support it! If some at PL agrees to accept our pull requests in a timely fashion, we'll help do the work. I'm sad we're now in this position, and would take less than a few mins for dbs like leveldb, badger, and bolt. What do y'all think?
We kindly need resolution on this relatively soon one way or the other so that we know we need to pass on Datastore.
Thanks,
Drew