[NOD-914] Make LevelDB.Cursor receive bucket instead of prefix (#696)

This commit is contained in:
Ori Newman 2020-04-12 09:25:40 +03:00 committed by GitHub
parent 7609c50641
commit fe91b4c878
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 9 additions and 10 deletions

View File

@ -156,7 +156,7 @@ func (db *ffldb) RetrieveFromStore(storeName string, location []byte) ([]byte, e
// Cursor begins a new cursor over the given bucket.
// This method is part of the DataAccessor interface.
func (db *ffldb) Cursor(bucket *database.Bucket) (database.Cursor, error) {
ldbCursor := db.levelDB.Cursor(bucket.Path())
ldbCursor := db.levelDB.Cursor(bucket)
return ldbCursor, nil
}

View File

@ -18,8 +18,7 @@ func (db *ffldb) initialize() error {
}
func (db *ffldb) flatFiles() (map[string][]byte, error) {
flatFilesBucketPath := flatFilesBucket.Path()
flatFilesCursor := db.levelDB.Cursor(flatFilesBucketPath)
flatFilesCursor := db.levelDB.Cursor(flatFilesBucket)
defer func() {
err := flatFilesCursor.Close()
if err != nil {

View File

@ -11,17 +11,17 @@ import (
// LevelDBCursor is a thin wrapper around native leveldb iterators.
type LevelDBCursor struct {
ldbIterator iterator.Iterator
prefix []byte
bucket *database.Bucket
isClosed bool
}
// Cursor begins a new cursor over the given prefix.
func (db *LevelDB) Cursor(prefix []byte) *LevelDBCursor {
ldbIterator := db.ldb.NewIterator(util.BytesPrefix(prefix), nil)
func (db *LevelDB) Cursor(bucket *database.Bucket) *LevelDBCursor {
ldbIterator := db.ldb.NewIterator(util.BytesPrefix(bucket.Path()), nil)
return &LevelDBCursor{
ldbIterator: ldbIterator,
prefix: prefix,
bucket: bucket,
isClosed: false,
}
}
@ -84,8 +84,8 @@ func (c *LevelDBCursor) Key() (*database.Key, error) {
return nil, errors.Wrapf(database.ErrNotFound, "cannot get the "+
"key of a done cursor")
}
suffix := bytes.TrimPrefix(fullKeyPath, c.prefix)
return database.MakeBucket(c.prefix).Key(suffix), nil
suffix := bytes.TrimPrefix(fullKeyPath, c.bucket.Path())
return c.bucket.Key(suffix), nil
}
// Value returns the value of the current key/value pair, or ErrNotFound if done.

View File

@ -135,5 +135,5 @@ func (tx *LevelDBTransaction) Cursor(bucket *database.Bucket) (*LevelDBCursor, e
return nil, errors.New("cannot open a cursor from a closed transaction")
}
return tx.db.Cursor(bucket.Path()), nil
return tx.db.Cursor(bucket), nil
}