bugfix: execCommand

This commit is contained in:
finley
2023-05-20 16:13:06 +08:00
parent edfbe75dfd
commit c7dda00118
3 changed files with 16 additions and 18 deletions

View File

@@ -24,24 +24,22 @@ const (
)
func execCommand(args [][]byte) redis.Reply {
n := len(args)
if n > 1 {
subCommand := strings.ToLower(string(args[1]))
if subCommand == "info" {
return getCommands(args[2:])
} else if subCommand == "count" {
return protocol.MakeIntReply(int64(len(cmdTable)))
} else if subCommand == "getkeys" {
if n < 2 {
return protocol.MakeErrReply("Unknown subcommand or wrong number of arguments for '" + subCommand + "'")
}
return getKeys(args[2:])
} else {
return protocol.MakeErrReply("Unknown subcommand or wrong number of arguments for '" + subCommand + "'")
}
} else {
if len(args) == 0 {
return getAllGodisCommandReply()
}
subCommand := strings.ToLower(string(args[0]))
if subCommand == "info" {
return getCommands(args[1:])
} else if subCommand == "count" {
return protocol.MakeIntReply(int64(len(cmdTable)))
} else if subCommand == "getkeys" {
if len(args) < 2 {
return protocol.MakeErrReply("wrong number of arguments for 'command|" + subCommand + "'")
}
return getKeys(args[1:])
} else {
return protocol.MakeErrReply("Unknown subcommand '" + subCommand + "'")
}
}
func getKeys(args [][]byte) redis.Reply {

View File

@@ -16,5 +16,5 @@ func TestCommandInfo(t *testing.T) {
ret = testServer.Exec(c, utils.ToCmdLine("command", "getkeys", "mset", "a", "a", "b", "b"))
asserts.AssertMultiBulkReply(t, ret, []string{"a", "b"})
ret = testServer.Exec(c, utils.ToCmdLine("command", "foobar"))
asserts.AssertErrReply(t, ret, "Unknown subcommand or wrong number of arguments for 'foobar'")
asserts.AssertErrReply(t, ret, "Unknown subcommand 'foobar'")
}

View File

@@ -122,7 +122,7 @@ func (server *Server) Exec(c redis.Connection, cmdLine [][]byte) (result redis.R
}
return server.execSlaveOf(c, cmdLine[1:])
} else if cmdName == "command" {
return execCommand(cmdLine)
return execCommand(cmdLine[1:])
}
// read only slave