diff --git a/datastore.go b/datastore.go index 66e21b5..3096527 100644 --- a/datastore.go +++ b/datastore.go @@ -1,7 +1,6 @@ package badger import ( - "bytes" "sync" badger "github.com/dgraph-io/badger" @@ -77,25 +76,19 @@ func (d *datastore) QueryNew(q dsq.Query) (dsq.Results, error) { opt := badger.DefaultIteratorOptions opt.FetchValues = !q.KeysOnly it := d.DB.NewIterator(opt) - it.Rewind() - it.Seek([]byte(q.Prefix)) var closer sync.Once return dsq.ResultsFromIterator(q, dsq.Iterator{ Next: func() (dsq.Result, bool) { - if !it.Valid() { + if !it.ValidForPrefix(q.Prefix) { return dsq.Result{}, false } item := it.Item() k := string(item.Key()) e := dsq.Entry{Key: k} - if !bytes.HasPrefix(item.Key(), []byte(q.Prefix)) { - return dsq.Result{}, false - } - if !q.KeysOnly { buf := make([]byte, len(item.Value())) copy(buf, item.Value())