mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
all: remove two iterator methods
This commit is contained in:
parent
573f62f0b0
commit
c138efe415
12 changed files with 39 additions and 93 deletions
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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).
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue