[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. // Cursor begins a new cursor over the given bucket.
// This method is part of the DataAccessor interface. // This method is part of the DataAccessor interface.
func (db *ffldb) Cursor(bucket *database.Bucket) (database.Cursor, error) { func (db *ffldb) Cursor(bucket *database.Bucket) (database.Cursor, error) {
ldbCursor := db.levelDB.Cursor(bucket.Path()) ldbCursor := db.levelDB.Cursor(bucket)
return ldbCursor, nil return ldbCursor, nil
} }

View File

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

View File

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