From 9aadac61be76b9f4d9e12bd9d491289bd5296e69 Mon Sep 17 00:00:00 2001 From: Zsolt Felfoldi Date: Fri, 17 Jan 2025 03:23:56 +0100 Subject: [PATCH] ethdb/memorydb: faster DeleteRange --- ethdb/memorydb/memorydb.go | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/ethdb/memorydb/memorydb.go b/ethdb/memorydb/memorydb.go index c6fba39cfd..4d932bb631 100644 --- a/ethdb/memorydb/memorydb.go +++ b/ethdb/memorydb/memorydb.go @@ -18,7 +18,6 @@ package memorydb import ( - "bytes" "errors" "sort" "strings" @@ -125,12 +124,12 @@ func (db *Database) Delete(key []byte) error { // DeleteRange deletes all of the keys (and values) in the range [start,end) // (inclusive on start, exclusive on end). func (db *Database) DeleteRange(start, end []byte) error { - it := db.NewIterator(nil, start) - defer it.Release() + db.lock.Lock() + defer db.lock.Unlock() - for it.Next() && bytes.Compare(end, it.Key()) > 0 { - if err := db.Delete(it.Key()); err != nil { - return err + for key := range db.db { + if key >= string(start) && key < string(end) { + delete(db.db, key) } } return nil