all: remove two iterator methods

This commit is contained in:
Martin Holst Swende 2020-03-25 13:48:39 +01:00
parent 573f62f0b0
commit c138efe415
No known key found for this signature in database
GPG key ID: 683B438C05A5DDF0
12 changed files with 39 additions and 93 deletions

View file

@ -301,7 +301,7 @@ func ExportPreimages(db ethdb.Database, fn string) error {
defer writer.(*gzip.Writer).Close() defer writer.(*gzip.Writer).Close()
} }
// Iterate over the preimages and export them // Iterate over the preimages and export them
it := db.NewIteratorWithPrefix([]byte("secure-key-")) it := db.NewIteratorWith([]byte("secure-key-"), nil)
defer it.Release() defer it.Release()
for it.Next() { for it.Next() {

View file

@ -69,7 +69,7 @@ func ReadAllHashes(db ethdb.Iteratee, number uint64) []common.Hash {
prefix := headerKeyPrefix(number) prefix := headerKeyPrefix(number)
hashes := make([]common.Hash, 0, 1) hashes := make([]common.Hash, 0, 1)
it := db.NewIteratorWithPrefix(prefix) it := db.NewIteratorWith(prefix, nil)
defer it.Release() defer it.Release()
for it.Next() { for it.Next() {

View file

@ -93,7 +93,7 @@ func DeleteStorageSnapshot(db ethdb.KeyValueWriter, accountHash, storageHash com
// IterateStorageSnapshots returns an iterator for walking the entire storage // IterateStorageSnapshots returns an iterator for walking the entire storage
// space of a specific account. // space of a specific account.
func IterateStorageSnapshots(db ethdb.Iteratee, accountHash common.Hash) ethdb.Iterator { func IterateStorageSnapshots(db ethdb.Iteratee, accountHash common.Hash) ethdb.Iterator {
return db.NewIteratorWithPrefix(storageSnapshotsKey(accountHash)) return db.NewIteratorWith(storageSnapshotsKey(accountHash), nil)
} }
// ReadSnapshotJournal retrieves the serialized in-memory diff layers saved at // ReadSnapshotJournal retrieves the serialized in-memory diff layers saved at

View file

@ -106,20 +106,7 @@ func (t *table) Delete(key []byte) error {
// NewIterator creates a binary-alphabetical iterator over the entire keyspace // NewIterator creates a binary-alphabetical iterator over the entire keyspace
// contained within the database. // contained within the database.
func (t *table) NewIterator() ethdb.Iterator { func (t *table) NewIterator() ethdb.Iterator {
return t.NewIteratorWithPrefix(nil) return t.NewIteratorWith(nil, nil)
}
// NewIteratorWithStart creates a binary-alphabetical iterator over a subset of
// database content starting at a particular initial key (or after, if it does
// not exist).
func (t *table) NewIteratorWithStart(start []byte) ethdb.Iterator {
return t.NewIteratorWith(nil, start)
}
// NewIteratorWithPrefix creates a binary-alphabetical iterator over a subset
// of database content with a particular key prefix.
func (t *table) NewIteratorWithPrefix(prefix []byte) ethdb.Iterator {
return t.NewIteratorWith(prefix, nil)
} }
// NewIteratorWith creates a binary-alphabetical iterator over a subset // NewIteratorWith creates a binary-alphabetical iterator over a subset

View file

@ -18,7 +18,6 @@ package snapshot
import ( import (
"bytes" "bytes"
"github.com/ethereum/go-ethereum/ethdb/leveldb"
"io/ioutil" "io/ioutil"
"testing" "testing"
@ -26,6 +25,7 @@ import (
"github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/core/rawdb"
"github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/ethdb/leveldb"
"github.com/ethereum/go-ethereum/ethdb/memorydb" "github.com/ethereum/go-ethereum/ethdb/memorydb"
) )

View file

@ -60,7 +60,7 @@ func TestWipe(t *testing.T) {
// Sanity check that all the keys are present // Sanity check that all the keys are present
var items int var items int
it := db.NewIteratorWithPrefix(rawdb.SnapshotAccountPrefix) it := db.NewIteratorWith(rawdb.SnapshotAccountPrefix, nil)
defer it.Release() defer it.Release()
for it.Next() { for it.Next() {
@ -69,7 +69,7 @@ func TestWipe(t *testing.T) {
items++ items++
} }
} }
it = db.NewIteratorWithPrefix(rawdb.SnapshotStoragePrefix) it = db.NewIteratorWith(rawdb.SnapshotStoragePrefix, nil)
defer it.Release() defer it.Release()
for it.Next() { for it.Next() {
@ -88,7 +88,7 @@ func TestWipe(t *testing.T) {
<-wipeSnapshot(db, true) <-wipeSnapshot(db, true)
// Iterate over the database end ensure no snapshot information remains // Iterate over the database end ensure no snapshot information remains
it = db.NewIteratorWithPrefix(rawdb.SnapshotAccountPrefix) it = db.NewIteratorWith(rawdb.SnapshotAccountPrefix, nil)
defer it.Release() defer it.Release()
for it.Next() { for it.Next() {
@ -97,7 +97,7 @@ func TestWipe(t *testing.T) {
t.Errorf("snapshot entry remained after wipe: %x", key) t.Errorf("snapshot entry remained after wipe: %x", key)
} }
} }
it = db.NewIteratorWithPrefix(rawdb.SnapshotStoragePrefix) it = db.NewIteratorWith(rawdb.SnapshotStoragePrefix, nil)
defer it.Release() defer it.Release()
for it.Next() { for it.Next() {

View file

@ -147,7 +147,7 @@ var bloomBitsPrefix = []byte("bloomBits-")
func clearBloomBits(db ethdb.Database) { func clearBloomBits(db ethdb.Database) {
fmt.Println("Clearing bloombits data...") fmt.Println("Clearing bloombits data...")
it := db.NewIteratorWithPrefix(bloomBitsPrefix) it := db.NewIteratorWith(bloomBitsPrefix, nil)
for it.Next() { for it.Next() {
db.Delete(it.Key()) db.Delete(it.Key())
} }

View file

@ -147,57 +147,52 @@ func TestDatabaseSuite(t *testing.T, New func() ethdb.KeyValueStore) {
if err := it.Error(); err != nil { if err := it.Error(); err != nil {
t.Fatal(err) t.Fatal(err)
} }
it.Release()
if !reflect.DeepEqual(got, want) { if !reflect.DeepEqual(got, want) {
t.Errorf("Iterator: got: %s; want: %s", got, want) t.Errorf("Iterator: got: %s; want: %s", got, want)
} }
} }
{ {
it := db.NewIteratorWithPrefix([]byte("1")) it := db.NewIteratorWith([]byte("1"), nil)
got, want := iterateKeys(it), []string{"1", "10", "11", "12"} got, want := iterateKeys(it), []string{"1", "10", "11", "12"}
if err := it.Error(); err != nil { if err := it.Error(); err != nil {
t.Fatal(err) t.Fatal(err)
} }
it.Release()
if !reflect.DeepEqual(got, want) { if !reflect.DeepEqual(got, want) {
t.Errorf("IteratorWithPrefix(1): got: %s; want: %s", got, want) t.Errorf("IteratorWith(1,nil): got: %s; want: %s", got, want)
} }
} }
{ {
it := db.NewIteratorWithPrefix([]byte("5")) it := db.NewIteratorWith([]byte("5"), nil)
got, want := iterateKeys(it), []string{} got, want := iterateKeys(it), []string{}
if err := it.Error(); err != nil { if err := it.Error(); err != nil {
t.Fatal(err) t.Fatal(err)
} }
it.Release()
if !reflect.DeepEqual(got, want) { if !reflect.DeepEqual(got, want) {
t.Errorf("IteratorWithPrefix(1): got: %s; want: %s", got, want) t.Errorf("IteratorWith(5,nil): got: %s; want: %s", got, want)
} }
} }
{ {
it := db.NewIteratorWithStart([]byte("2")) it := db.NewIteratorWith(nil, []byte("2"))
got, want := iterateKeys(it), []string{"2", "20", "21", "22", "3", "4", "6"} got, want := iterateKeys(it), []string{"2", "20", "21", "22", "3", "4", "6"}
if err := it.Error(); err != nil { if err := it.Error(); err != nil {
t.Fatal(err) t.Fatal(err)
} }
it.Release()
if !reflect.DeepEqual(got, want) { if !reflect.DeepEqual(got, want) {
t.Errorf("IteratorWithStart(2): got: %s; want: %s", got, want) t.Errorf("IteratorWith(nil,2): got: %s; want: %s", got, want)
} }
} }
{ {
it := db.NewIteratorWithStart([]byte("5")) it := db.NewIteratorWith(nil, []byte("5"))
got, want := iterateKeys(it), []string{"6"} got, want := iterateKeys(it), []string{"6"}
if err := it.Error(); err != nil { if err := it.Error(); err != nil {
t.Fatal(err) t.Fatal(err)
} }
it.Release()
if !reflect.DeepEqual(got, want) { if !reflect.DeepEqual(got, want) {
t.Errorf("IteratorWithStart(2): got: %s; want: %s", got, want) t.Errorf("IteratorWith(nil,5): got: %s; want: %s", got, want)
} }
} }
}) })
@ -268,7 +263,6 @@ func TestDatabaseSuite(t *testing.T, New func() ethdb.KeyValueStore) {
if got, want := iterateKeys(it), []string{"1", "2", "3", "4"}; !reflect.DeepEqual(got, want) { if got, want := iterateKeys(it), []string{"1", "2", "3", "4"}; !reflect.DeepEqual(got, want) {
t.Errorf("got: %s; want: %s", got, want) t.Errorf("got: %s; want: %s", got, want)
} }
it.Release()
} }
b.Reset() b.Reset()
@ -289,7 +283,6 @@ func TestDatabaseSuite(t *testing.T, New func() ethdb.KeyValueStore) {
if got, want := iterateKeys(it), []string{"2", "3", "4", "5", "6"}; !reflect.DeepEqual(got, want) { if got, want := iterateKeys(it), []string{"2", "3", "4", "5", "6"}; !reflect.DeepEqual(got, want) {
t.Errorf("got: %s; want: %s", got, want) t.Errorf("got: %s; want: %s", got, want)
} }
it.Release()
} }
}) })
@ -318,7 +311,6 @@ func TestDatabaseSuite(t *testing.T, New func() ethdb.KeyValueStore) {
if got := iterateKeys(it); !reflect.DeepEqual(got, want) { if got := iterateKeys(it); !reflect.DeepEqual(got, want) {
t.Errorf("got: %s; want: %s", got, want) t.Errorf("got: %s; want: %s", got, want)
} }
it.Release()
}) })
} }
@ -329,5 +321,6 @@ func iterateKeys(it ethdb.Iterator) []string {
keys = append(keys, string(it.Key())) keys = append(keys, string(it.Key()))
} }
sort.Strings(keys) sort.Strings(keys)
it.Release()
return keys return keys
} }

View file

@ -55,16 +55,7 @@ type Iteratee interface {
// contained within the key-value database. // contained within the key-value database.
NewIterator() Iterator NewIterator() Iterator
// NewIteratorWithStart creates a binary-alphabetical iterator over a subset of // NewIteratorWith creates a binary-alphabetical iterator over a subset
// database content starting at a particular initial key (or after, if it does
// not exist).
NewIteratorWithStart(start []byte) Iterator
// NewIteratorWithPrefix creates a binary-alphabetical iterator over a subset
// of database content with a particular key prefix.
NewIteratorWithPrefix(prefix []byte) Iterator
// NewIteratorWithPrefix creates a binary-alphabetical iterator over a subset
// of database content with a particular key prefix, starting at a particular // of database content with a particular key prefix, starting at a particular
// initial key (or after, if it does not exist). // initial key (or after, if it does not exist).
NewIteratorWith(prefix []byte, start []byte) Iterator NewIteratorWith(prefix []byte, start []byte) Iterator

View file

@ -189,19 +189,6 @@ func (db *Database) NewIterator() ethdb.Iterator {
return db.db.NewIterator(new(util.Range), nil) return db.db.NewIterator(new(util.Range), nil)
} }
// NewIteratorWithStart creates a binary-alphabetical iterator over a subset of
// database content starting at a particular initial key (or after, if it does
// not exist).
func (db *Database) NewIteratorWithStart(start []byte) ethdb.Iterator {
return db.db.NewIterator(&util.Range{Start: start}, nil)
}
// NewIteratorWithPrefix creates a binary-alphabetical iterator over a subset
// of database content with a particular key prefix.
func (db *Database) NewIteratorWithPrefix(prefix []byte) ethdb.Iterator {
return db.db.NewIterator(util.BytesPrefix(prefix), nil)
}
// NewIteratorWith creates a binary-alphabetical iterator over a subset // NewIteratorWith creates a binary-alphabetical iterator over a subset
// of database content with a particular key prefix, starting at a particular // of database content with a particular key prefix, starting at a particular
// initial key (or after, if it does not exist). // initial key (or after, if it does not exist).

View file

@ -132,20 +132,7 @@ func (db *Database) NewBatch() ethdb.Batch {
// NewIterator creates a binary-alphabetical iterator over the entire keyspace // NewIterator creates a binary-alphabetical iterator over the entire keyspace
// contained within the memory database. // contained within the memory database.
func (db *Database) NewIterator() ethdb.Iterator { func (db *Database) NewIterator() ethdb.Iterator {
return db.NewIteratorWithStart(nil) return db.NewIteratorWith(nil, nil)
}
// NewIteratorWithStart creates a binary-alphabetical iterator over a subset of
// database content starting at a particular initial key (or after, if it does
// not exist).
func (db *Database) NewIteratorWithStart(start []byte) ethdb.Iterator {
return db.NewIteratorWith(nil, start)
}
// NewIteratorWithPrefix creates a binary-alphabetical iterator over a subset
// of database content with a particular key prefix.
func (db *Database) NewIteratorWithPrefix(prefix []byte) ethdb.Iterator {
return db.NewIteratorWith(prefix, nil)
} }
// NewIteratorWith creates a binary-alphabetical iterator over a subset // NewIteratorWith creates a binary-alphabetical iterator over a subset

View file

@ -849,8 +849,9 @@ func (db *nodeDB) expireNodes() {
visited int visited int
deleted int deleted int
start = time.Now() start = time.Now()
prefix = db.getPrefix(true)
) )
iter := db.db.NewIteratorWithPrefix(append(db.verbuf[:], negativeBalancePrefix...)) iter := db.db.NewIteratorWith(prefix, nil)
for iter.Next() { for iter.Next() {
visited += 1 visited += 1
var balance negBalance var balance negBalance