fix(aof): fix RESP length encoding for SELECT command database index

This commit is contained in:
AI Engineer 2026-06-28 10:33:32 +08:00
parent 7c11581e11
commit 7c17874b41

View File

@ -148,7 +148,8 @@ func (store *Store) Write(database int, command []byte) error {
// log the SELECT command before logging the incoming command.
// This allows us to switch databases appropriately when restoring the state on startup.
if database != store.currentDatabase {
_, err := store.rw.Write([]byte(fmt.Sprintf("*2\r\n$6\r\nSELECT\r\n$1\r\n%s\r\n", strconv.Itoa(database))))
dbStr := strconv.Itoa(database)
_, err := store.rw.Write([]byte(fmt.Sprintf("*2\r\n$6\r\nSELECT\r\n$%d\r\n%s\r\n", len(dbStr), dbStr)))
if err != nil {
return fmt.Errorf("log select error: %+v", err)
}
@ -237,8 +238,9 @@ func (store *Store) Truncate() error {
}
// Add command to select the current database at the top of the file.
dbStr := strconv.Itoa(store.currentDatabase)
_, err := store.rw.Write([]byte(
fmt.Sprintf("*2\r\n$6\r\nSELECT\r\n$1\r\n%s\r\n", strconv.Itoa(store.currentDatabase))))
fmt.Sprintf("*2\r\n$6\r\nSELECT\r\n$%d\r\n%s\r\n", len(dbStr), dbStr)))
if err != nil {
return fmt.Errorf("truncate: log select error: %+v", err)
}