Skip to content

Commit

Permalink
e
Browse files Browse the repository at this point in the history
  • Loading branch information
zsfelfoldi committed Sep 14, 2024
1 parent bb4ad24 commit 9a05680
Showing 1 changed file with 16 additions and 2 deletions.
18 changes: 16 additions & 2 deletions core/rawdb/accessors_indexes.go
Original file line number Diff line number Diff line change
Expand Up @@ -184,8 +184,8 @@ func DeleteBloombits(db ethdb.Database, bit uint, from uint64, to uint64) {

var emptyRow = []uint32{}

// ReadFilterMapRow retrieves a binary encoded filter map row at the given
// mapRowIndex (see filtermaps.mapRowIndex for the storage index encoding).
// ReadFilterMapRow retrieves a filter map row at the given mapRowIndex
// (see filtermaps.mapRowIndex for the storage index encoding).
// Note that zero length rows are not stored in the database and therefore all
// non-existent entries are interpreted as empty rows and return no error.
// Also note that the mapRowIndex indexing scheme is the same as the one
Expand Down Expand Up @@ -296,13 +296,18 @@ func DeleteBlockLvPointer(db ethdb.KeyValueWriter, blockNumber uint64) {
}
}

// FilterMapsRange is a storage representation of the block range covered by the
// filter maps structure and the corresponting log value index range.
type FilterMapsRange struct {
Initialized bool
HeadLvPointer, TailLvPointer uint64
HeadBlockNumber, TailBlockNumber uint64
HeadBlockHash, TailParentHash common.Hash
}

// ReadFilterMapsRange retrieves the filter maps range data. Note that if the
// database entry is not present, that is interpreted as a valid non-initialized
// state and returns a blank range structure and no error.
func ReadFilterMapsRange(db ethdb.KeyValueReader) (FilterMapsRange, error) {
if has, err := db.Has(filterMapsRangeKey); !has || err != nil {
return FilterMapsRange{}, err
Expand All @@ -318,6 +323,7 @@ func ReadFilterMapsRange(db ethdb.KeyValueReader) (FilterMapsRange, error) {
return fmRange, err
}

// WriteFilterMapsRange stores the filter maps range data.
func WriteFilterMapsRange(db ethdb.KeyValueWriter, fmRange FilterMapsRange) {
encRange, err := rlp.EncodeToBytes(&fmRange)
if err != nil {
Expand All @@ -328,18 +334,24 @@ func WriteFilterMapsRange(db ethdb.KeyValueWriter, fmRange FilterMapsRange) {
}
}

// DeleteFilterMapsRange deletes the filter maps range data which is interpreted
// as reverting to the un-initialized state.
func DeleteFilterMapsRange(db ethdb.KeyValueWriter) {
if err := db.Delete(filterMapsRangeKey); err != nil {
log.Crit("Failed to delete filter maps range", "err", err)
}
}

// RevertPoint is the storage representation of a filter maps revert point.
type RevertPoint struct {
BlockHash common.Hash
MapIndex uint32
RowLength []uint
}

// ReadRevertPoint retrieves the revert point for the given block number if
// present. Note that revert points may or may not exist for any block number
// and a non-existent entry causes no error.
func ReadRevertPoint(db ethdb.KeyValueReader, blockNumber uint64) (*RevertPoint, error) {
key := revertPointKey(blockNumber)
if has, err := db.Has(key); !has || err != nil {
Expand All @@ -356,6 +368,7 @@ func ReadRevertPoint(db ethdb.KeyValueReader, blockNumber uint64) (*RevertPoint,
return rp, nil
}

// WriteRevertPoint stores a revert point for the given block number.
func WriteRevertPoint(db ethdb.KeyValueWriter, blockNumber uint64, rp *RevertPoint) {
enc, err := rlp.EncodeToBytes(rp)
if err != nil {
Expand All @@ -366,6 +379,7 @@ func WriteRevertPoint(db ethdb.KeyValueWriter, blockNumber uint64, rp *RevertPoi
}
}

// DeleteRevertPoint deletes the given revert point.
func DeleteRevertPoint(db ethdb.KeyValueWriter, blockNumber uint64) {
if err := db.Delete(revertPointKey(blockNumber)); err != nil {
log.Crit("Failed to delete revert point", "err", err)
Expand Down

0 comments on commit 9a05680

Please sign in to comment.