Skip to content
This repository was archived by the owner on Jan 20, 2026. It is now read-only.
Open
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions ss/pebbledb/db.go
Original file line number Diff line number Diff line change
Expand Up @@ -514,6 +514,7 @@ func (db *Database) Iterator(storeKey string, version int64, start, end []byte)
}

func (db *Database) ReverseIterator(storeKey string, version int64, start, end []byte) (types.DBIterator, error) {
fmt.Printf("[Debug] Creating reverset iterator for storeKey %s, version %d, start %X, end %X\n", storeKey, version, start, end)
if (start != nil && len(start) == 0) || (end != nil && len(end) == 0) {
return nil, errorutils.ErrKeyEmpty
}
Expand Down
1 change: 1 addition & 0 deletions tools/cmd/seidb/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ func main() {
operations.PruneCmd(),
operations.DumpIAVLCmd(),
operations.StateSizeCmd(),
operations.TestIteratorCmd(),
operations.ReplayChangelogCmd())
if err := rootCmd.Execute(); err != nil {
fmt.Println(err)
Expand Down
61 changes: 61 additions & 0 deletions tools/cmd/seidb/operations/test_iterator.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package operations

import (
"encoding/hex"
"fmt"

"github.com/sei-protocol/sei-db/common/logger"
"github.com/sei-protocol/sei-db/config"
"github.com/sei-protocol/sei-db/ss"
"github.com/spf13/cobra"
)

func TestIteratorCmd() *cobra.Command {
iteratorCmd := &cobra.Command{
Use: "test-iterator",
Short: "Test forward or reverse iterator",
Run: executeIterator,
}

iteratorCmd.PersistentFlags().StringP("home-dir", "d", "/root/.sei", "Database Directory")
iteratorCmd.PersistentFlags().StringP("start", "s", "07", "Start key")
iteratorCmd.PersistentFlags().StringP("end", "e", "08", "End key")

return iteratorCmd
}

func executeIterator(cmd *cobra.Command, _ []string) {
homeDir, _ := cmd.Flags().GetString("home-dir")
start, _ := cmd.Flags().GetString("start")
end, _ := cmd.Flags().GetString("end")
IterateDbData(homeDir, start, end)
}

func IterateDbData(homeDir string, start string, end string) {
ssConfig := config.DefaultStateStoreConfig()
ssConfig.KeepRecent = 0
ssStore, err := ss.NewStateStore(logger.NewNopLogger(), homeDir, ssConfig)
defer ssStore.Close()
if err != nil {
panic(err)
}
fmt.Printf("Start forward iteration\n")
forwardIter, err := ssStore.Iterator("oracle", 98350313, nil, nil)
Comment thread Fixed
for ; forwardIter.Valid(); forwardIter.Next() {
fmt.Printf("key: %X, value %X\n", forwardIter.Key(), forwardIter.Value())
}
forwardIter.Close()
fmt.Printf("Finished forward iteration\n")
fmt.Printf("Start reverse iteration\n")
startPos, _ := hex.DecodeString(start)
endPos, _ := hex.DecodeString(end)
iter, err := ssStore.ReverseIterator("oracle", 98350313, startPos, endPos)
if err != nil {
panic(err)
}
for ; iter.Valid(); iter.Next() {
fmt.Printf("key: %X, value %X\n", iter.Key(), iter.Value())
}
iter.Close()
fmt.Printf("Complete reverse iteration\n")
}