Skip to content

Commit 23a61a6

Browse files
committed
fix compile errors
1 parent 8d7cc0e commit 23a61a6

File tree

6 files changed

+31
-11
lines changed

6 files changed

+31
-11
lines changed

core/rawdb/table.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,11 @@ func (b *tableBatch) Delete(key []byte) error {
223223
return b.batch.Delete(append([]byte(b.prefix), key...))
224224
}
225225

226+
// DeleteRange removes all keys in the range [start, end) from the batch for later committing.
227+
func (b *tableBatch) DeleteRange(start, end []byte) error {
228+
return b.batch.DeleteRange(append([]byte(b.prefix), start...), append([]byte(b.prefix), end...))
229+
}
230+
226231
// ValueSize retrieves the amount of data queued up for writing.
227232
func (b *tableBatch) ValueSize() int {
228233
return b.batch.ValueSize()

ethdb/batch.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,7 @@ const IdealBatchSize = 100 * 1024
2424
// when Write is called. A batch cannot be used concurrently.
2525
type Batch interface {
2626
KeyValueWriter
27-
28-
// DeleteRange deletes all of the keys (and values) in the range [start,end)
29-
// (inclusive on start, exclusive on end).
30-
DeleteRange(start, end []byte) error
27+
KeyValueRangeDeleter
3128

3229
// ValueSize retrieves the amount of data queued up for writing.
3330
ValueSize() int

ethdb/database.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,19 @@ type KeyValueWriter interface {
3838

3939
// Delete removes the key from the key-value data store.
4040
Delete(key []byte) error
41+
}
42+
43+
var ErrTooManyKeys = errors.New("too many keys in deleted range")
4144

45+
// KeyValueRangeDeleter wraps the DeleteRange method of a backing data store.
46+
type KeyValueRangeDeleter interface {
4247
// DeleteRange deletes all of the keys (and values) in the range [start,end)
4348
// (inclusive on start, exclusive on end).
4449
// Some implementations of DeleteRange may return ErrTooManyKeys after
4550
// partially deleting entries in the given range.
4651
DeleteRange(start, end []byte) error
4752
}
4853

49-
var ErrTooManyKeys = errors.New("too many keys in deleted range")
50-
5154
// KeyValueStater wraps the Stat method of a backing data store.
5255
type KeyValueStater interface {
5356
// Stat returns the statistic data of the database.
@@ -80,6 +83,7 @@ type KeyValueStore interface {
8083
KeyValueWriter
8184
KeyValueStater
8285
KeyValueSyncer
86+
KeyValueRangeDeleter
8387
Batcher
8488
Iteratee
8589
Compacter

ethdb/leveldb/leveldb.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -574,7 +574,12 @@ func (r *replayer) DeleteRange(start, end []byte) {
574574
if r.failure != nil {
575575
return
576576
}
577-
r.failure = r.writer.DeleteRange(start, end)
577+
// Check if the writer also supports range deletion
578+
if rangeDeleter, ok := r.writer.(ethdb.KeyValueRangeDeleter); ok {
579+
r.failure = rangeDeleter.DeleteRange(start, end)
580+
} else {
581+
r.failure = fmt.Errorf("ethdb.KeyValueWriter does not implement DeleteRange")
582+
}
578583
}
579584

580585
// bytesPrefixRange returns key range that satisfy

ethdb/memorydb/memorydb.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package memorydb
1919

2020
import (
2121
"errors"
22+
"fmt"
2223
"sort"
2324
"strconv"
2425
"strings"
@@ -362,8 +363,12 @@ func (b *batch) Replay(w ethdb.KeyValueWriter) error {
362363
}
363364
} else if keyvalue.rangeFrom != "" || keyvalue.rangeTo != "" {
364365
// Range deletion
365-
if err := w.DeleteRange([]byte(keyvalue.rangeFrom), []byte(keyvalue.rangeTo)); err != nil {
366-
return err
366+
if rangeDeleter, ok := w.(ethdb.KeyValueRangeDeleter); ok {
367+
if err := rangeDeleter.DeleteRange([]byte(keyvalue.rangeFrom), []byte(keyvalue.rangeTo)); err != nil {
368+
return err
369+
}
370+
} else {
371+
return fmt.Errorf("ethdb.KeyValueWriter does not implement DeleteRange")
367372
}
368373
}
369374
continue

ethdb/pebble/pebble.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -670,8 +670,12 @@ func (b *batch) Replay(w ethdb.KeyValueWriter) error {
670670
}
671671
} else if kind == pebble.InternalKeyKindRangeDelete {
672672
// For range deletion, k is the start key and v is the end key
673-
if err = w.DeleteRange(k, v); err != nil {
674-
return err
673+
if rangeDeleter, ok := w.(ethdb.KeyValueRangeDeleter); ok {
674+
if err = rangeDeleter.DeleteRange(k, v); err != nil {
675+
return err
676+
}
677+
} else {
678+
return fmt.Errorf("ethdb.KeyValueWriter does not implement DeleteRange")
675679
}
676680
} else {
677681
return fmt.Errorf("unhandled operation, keytype: %v", kind)

0 commit comments

Comments
 (0)