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()
}
// Iterate over the preimages and export them
it := db.NewIteratorWithPrefix([]byte("secure-key-"))
it := db.NewIteratorWith([]byte("secure-key-"), nil)
defer it.Release()
for it.Next() {

View file

@ -69,7 +69,7 @@ func ReadAllHashes(db ethdb.Iteratee, number uint64) []common.Hash {
prefix := headerKeyPrefix(number)
hashes := make([]common.Hash, 0, 1)
it := db.NewIteratorWithPrefix(prefix)
it := db.NewIteratorWith(prefix, nil)
defer it.Release()
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
// space of a specific account.
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

View file

@ -106,20 +106,7 @@ func (t *table) Delete(key []byte) error {
// NewIterator creates a binary-alphabetical iterator over the entire keyspace
// contained within the database.
func (t *table) NewIterator() ethdb.Iterator {
return t.NewIteratorWithPrefix(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)
return t.NewIteratorWith(nil, nil)
}
// NewIteratorWith creates a binary-alphabetical iterator over a subset

View file

@ -18,7 +18,6 @@ package snapshot
import (
"bytes"
"github.com/ethereum/go-ethereum/ethdb/leveldb"
"io/ioutil"
"testing"
@ -26,6 +25,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/rawdb"
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/ethdb/leveldb"
"github.com/ethereum/go-ethereum/ethdb/memorydb"
)
@ -454,9 +454,9 @@ func tempDB() (ethdb.Database, error) {
func TestDiskSeek(t *testing.T) {
// Create some accounts in the disk layer
//db := memorydb.New()
db ,err := tempDB()
db, err := tempDB()
if err != nil {
t.Fatal( err)
t.Fatal(err)
}
// Fill even keys [0,2,4...]
for i := 0; i < 0xff; i += 2 {

View file

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

View file

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

View file

@ -32,32 +32,32 @@ func TestDatabaseSuite(t *testing.T, New func() ethdb.KeyValueStore) {
tests := []struct {
content map[string]string
prefix string
start string
start string
order []string
}{
// Empty databases should be iterable
{map[string]string{}, "","", nil},
{map[string]string{}, "non-existent-prefix","", nil},
{map[string]string{}, "", "", nil},
{map[string]string{}, "non-existent-prefix", "", nil},
// Single-item databases should be iterable
{map[string]string{"key": "val"}, "","", []string{"key"}},
{map[string]string{"key": "val"}, "k","", []string{"key"}},
{map[string]string{"key": "val"}, "l","", nil},
{map[string]string{"key": "val"}, "", "", []string{"key"}},
{map[string]string{"key": "val"}, "k", "", []string{"key"}},
{map[string]string{"key": "val"}, "l", "", nil},
// Multi-item databases should be fully iterable
{
map[string]string{"k1": "v1", "k5": "v5", "k2": "v2", "k4": "v4", "k3": "v3"},
"","",
"", "",
[]string{"k1", "k2", "k3", "k4", "k5"},
},
{
map[string]string{"k1": "v1", "k5": "v5", "k2": "v2", "k4": "v4", "k3": "v3"},
"k","",
"k", "",
[]string{"k1", "k2", "k3", "k4", "k5"},
},
{
map[string]string{"k1": "v1", "k5": "v5", "k2": "v2", "k4": "v4", "k3": "v3"},
"l","",
"l", "",
nil,
},
// Multi-item databases should be prefix-iterable
@ -66,7 +66,7 @@ func TestDatabaseSuite(t *testing.T, New func() ethdb.KeyValueStore) {
"ka1": "va1", "ka5": "va5", "ka2": "va2", "ka4": "va4", "ka3": "va3",
"kb1": "vb1", "kb5": "vb5", "kb2": "vb2", "kb4": "vb4", "kb3": "vb3",
},
"ka","",
"ka", "",
[]string{"ka1", "ka2", "ka3", "ka4", "ka5"},
},
{
@ -74,7 +74,7 @@ func TestDatabaseSuite(t *testing.T, New func() ethdb.KeyValueStore) {
"ka1": "va1", "ka5": "va5", "ka2": "va2", "ka4": "va4", "ka3": "va3",
"kb1": "vb1", "kb5": "vb5", "kb2": "vb2", "kb4": "vb4", "kb3": "vb3",
},
"kc","",
"kc", "",
nil,
},
// Multi-item databases should be prefix-iterable with start position
@ -83,7 +83,7 @@ func TestDatabaseSuite(t *testing.T, New func() ethdb.KeyValueStore) {
"ka1": "va1", "ka5": "va5", "ka2": "va2", "ka4": "va4", "ka3": "va3",
"kb1": "vb1", "kb5": "vb5", "kb2": "vb2", "kb4": "vb4", "kb3": "vb3",
},
"ka","3",
"ka", "3",
[]string{"ka3", "ka4", "ka5"},
},
{
@ -91,7 +91,7 @@ func TestDatabaseSuite(t *testing.T, New func() ethdb.KeyValueStore) {
"ka1": "va1", "ka5": "va5", "ka2": "va2", "ka4": "va4", "ka3": "va3",
"kb1": "vb1", "kb5": "vb5", "kb2": "vb2", "kb4": "vb4", "kb3": "vb3",
},
"ka","8",
"ka", "8",
nil,
},
}
@ -147,57 +147,52 @@ func TestDatabaseSuite(t *testing.T, New func() ethdb.KeyValueStore) {
if err := it.Error(); err != nil {
t.Fatal(err)
}
it.Release()
if !reflect.DeepEqual(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"}
if err := it.Error(); err != nil {
t.Fatal(err)
}
it.Release()
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{}
if err := it.Error(); err != nil {
t.Fatal(err)
}
it.Release()
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"}
if err := it.Error(); err != nil {
t.Fatal(err)
}
it.Release()
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"}
if err := it.Error(); err != nil {
t.Fatal(err)
}
it.Release()
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) {
t.Errorf("got: %s; want: %s", got, want)
}
it.Release()
}
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) {
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) {
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()))
}
sort.Strings(keys)
it.Release()
return keys
}

View file

@ -55,17 +55,8 @@ type Iteratee interface {
// contained within the key-value database.
NewIterator() Iterator
// 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).
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
// NewIteratorWith creates a binary-alphabetical iterator over a subset
// 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
}

View file

@ -189,19 +189,6 @@ func (db *Database) NewIterator() ethdb.Iterator {
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
// of database content with a particular key prefix, starting at a particular
// 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
// contained within the memory database.
func (db *Database) NewIterator() ethdb.Iterator {
return db.NewIteratorWithStart(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)
return db.NewIteratorWith(nil, nil)
}
// NewIteratorWith creates a binary-alphabetical iterator over a subset

View file

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