mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-24 21:56:43 +00:00
fix compile errors
This commit is contained in:
parent
8d7cc0e5aa
commit
6f76fec4c5
7 changed files with 32 additions and 11 deletions
|
|
@ -223,6 +223,11 @@ func (b *tableBatch) Delete(key []byte) error {
|
|||
return b.batch.Delete(append([]byte(b.prefix), key...))
|
||||
}
|
||||
|
||||
// DeleteRange removes all keys in the range [start, end) from the batch for later committing.
|
||||
func (b *tableBatch) DeleteRange(start, end []byte) error {
|
||||
return b.batch.DeleteRange(append([]byte(b.prefix), start...), append([]byte(b.prefix), end...))
|
||||
}
|
||||
|
||||
// ValueSize retrieves the amount of data queued up for writing.
|
||||
func (b *tableBatch) ValueSize() int {
|
||||
return b.batch.ValueSize()
|
||||
|
|
|
|||
|
|
@ -24,10 +24,7 @@ const IdealBatchSize = 100 * 1024
|
|||
// when Write is called. A batch cannot be used concurrently.
|
||||
type Batch interface {
|
||||
KeyValueWriter
|
||||
|
||||
// DeleteRange deletes all of the keys (and values) in the range [start,end)
|
||||
// (inclusive on start, exclusive on end).
|
||||
DeleteRange(start, end []byte) error
|
||||
KeyValueRangeDeleter
|
||||
|
||||
// ValueSize retrieves the amount of data queued up for writing.
|
||||
ValueSize() int
|
||||
|
|
|
|||
|
|
@ -38,7 +38,12 @@ type KeyValueWriter interface {
|
|||
|
||||
// Delete removes the key from the key-value data store.
|
||||
Delete(key []byte) error
|
||||
}
|
||||
|
||||
var ErrTooManyKeys = errors.New("too many keys in deleted range")
|
||||
|
||||
// KeyValueRangeDeleter wraps the DeleteRange method of a backing data store.
|
||||
type KeyValueRangeDeleter interface {
|
||||
// DeleteRange deletes all of the keys (and values) in the range [start,end)
|
||||
// (inclusive on start, exclusive on end).
|
||||
// Some implementations of DeleteRange may return ErrTooManyKeys after
|
||||
|
|
@ -46,8 +51,6 @@ type KeyValueWriter interface {
|
|||
DeleteRange(start, end []byte) error
|
||||
}
|
||||
|
||||
var ErrTooManyKeys = errors.New("too many keys in deleted range")
|
||||
|
||||
// KeyValueStater wraps the Stat method of a backing data store.
|
||||
type KeyValueStater interface {
|
||||
// Stat returns the statistic data of the database.
|
||||
|
|
@ -80,6 +83,7 @@ type KeyValueStore interface {
|
|||
KeyValueWriter
|
||||
KeyValueStater
|
||||
KeyValueSyncer
|
||||
KeyValueRangeDeleter
|
||||
Batcher
|
||||
Iteratee
|
||||
Compacter
|
||||
|
|
|
|||
|
|
@ -574,7 +574,12 @@ func (r *replayer) DeleteRange(start, end []byte) {
|
|||
if r.failure != nil {
|
||||
return
|
||||
}
|
||||
r.failure = r.writer.DeleteRange(start, end)
|
||||
// Check if the writer also supports range deletion
|
||||
if rangeDeleter, ok := r.writer.(ethdb.KeyValueRangeDeleter); ok {
|
||||
r.failure = rangeDeleter.DeleteRange(start, end)
|
||||
} else {
|
||||
r.failure = fmt.Errorf("ethdb.KeyValueWriter does not implement DeleteRange")
|
||||
}
|
||||
}
|
||||
|
||||
// bytesPrefixRange returns key range that satisfy
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ package memorydb
|
|||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
|
@ -362,8 +363,12 @@ func (b *batch) Replay(w ethdb.KeyValueWriter) error {
|
|||
}
|
||||
} else if keyvalue.rangeFrom != "" || keyvalue.rangeTo != "" {
|
||||
// Range deletion
|
||||
if err := w.DeleteRange([]byte(keyvalue.rangeFrom), []byte(keyvalue.rangeTo)); err != nil {
|
||||
return err
|
||||
if rangeDeleter, ok := w.(ethdb.KeyValueRangeDeleter); ok {
|
||||
if err := rangeDeleter.DeleteRange([]byte(keyvalue.rangeFrom), []byte(keyvalue.rangeTo)); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
return fmt.Errorf("ethdb.KeyValueWriter does not implement DeleteRange")
|
||||
}
|
||||
}
|
||||
continue
|
||||
|
|
|
|||
|
|
@ -670,8 +670,12 @@ func (b *batch) Replay(w ethdb.KeyValueWriter) error {
|
|||
}
|
||||
} else if kind == pebble.InternalKeyKindRangeDelete {
|
||||
// For range deletion, k is the start key and v is the end key
|
||||
if err = w.DeleteRange(k, v); err != nil {
|
||||
return err
|
||||
if rangeDeleter, ok := w.(ethdb.KeyValueRangeDeleter); ok {
|
||||
if err = rangeDeleter.DeleteRange(k, v); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
return fmt.Errorf("ethdb.KeyValueWriter does not implement DeleteRange")
|
||||
}
|
||||
} else {
|
||||
return fmt.Errorf("unhandled operation, keytype: %v", kind)
|
||||
|
|
|
|||
|
|
@ -876,6 +876,7 @@ func (b *spongeBatch) Put(key, value []byte) error {
|
|||
return nil
|
||||
}
|
||||
func (b *spongeBatch) Delete(key []byte) error { panic("implement me") }
|
||||
func (b *spongeBatch) DeleteRange(start, end []byte) error { panic("implement me") }
|
||||
func (b *spongeBatch) ValueSize() int { return 100 }
|
||||
func (b *spongeBatch) Write() error { return nil }
|
||||
func (b *spongeBatch) Reset() {}
|
||||
|
|
|
|||
Loading…
Reference in a new issue