diff --git a/CHANGELOG.md b/CHANGELOG.md index 96c26c660..4d1c6ab1e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +- [\#134](https://github.com/tendermint/tm-db/pull/134) Improve GoLevelDB iterator performance by bounding underlying iterator range (@klim0v) + ## 0.6.2 **2020-08-27** diff --git a/goleveldb.go b/goleveldb.go index 8fde3e6ca..fd1bffd18 100644 --- a/goleveldb.go +++ b/goleveldb.go @@ -7,6 +7,7 @@ import ( "github.com/syndtr/goleveldb/leveldb" "github.com/syndtr/goleveldb/leveldb/errors" "github.com/syndtr/goleveldb/leveldb/opt" + "github.com/syndtr/goleveldb/leveldb/util" ) func init() { @@ -175,7 +176,7 @@ func (db *GoLevelDB) Iterator(start, end []byte) (Iterator, error) { if (start != nil && len(start) == 0) || (end != nil && len(end) == 0) { return nil, errKeyEmpty } - itr := db.db.NewIterator(nil, nil) + itr := db.db.NewIterator(&util.Range{Start: start, Limit: end}, nil) return newGoLevelDBIterator(itr, start, end, false), nil } @@ -184,6 +185,6 @@ func (db *GoLevelDB) ReverseIterator(start, end []byte) (Iterator, error) { if (start != nil && len(start) == 0) || (end != nil && len(end) == 0) { return nil, errKeyEmpty } - itr := db.db.NewIterator(nil, nil) + itr := db.db.NewIterator(&util.Range{Start: start, Limit: end}, nil) return newGoLevelDBIterator(itr, start, end, true), nil }