From: antirez Date: Mon, 2 May 2011 22:07:41 +0000 (+0200) Subject: Lua scripting: Honor SELECT command in both ways X-Git-Url: https://git.saurik.com/redis.git/commitdiff_plain/c2a7dd85ae007f157da3a5bedf1392a23fc38bc4 Lua scripting: Honor SELECT command in both ways --- diff --git a/src/scripting.c b/src/scripting.c index 65cbed62..26e33bc7 100644 --- a/src/scripting.c +++ b/src/scripting.c @@ -368,15 +368,20 @@ void evalCommand(redisClient *c) { * EVAL received. */ luaSetGlobalArray(lua,"KEYS",c->argv+3,numkeys); luaSetGlobalArray(lua,"ARGV",c->argv+3+numkeys,c->argc-3-numkeys); + + /* Select the right DB in the context of the Lua client */ + selectDb(server.lua_client,c->db->id); /* At this point whatever this script was never seen before or if it was * already defined, we can call it. We have zero arguments and expect * a single return value. */ if (lua_pcall(lua,0,1,0)) { + selectDb(c,server.lua_client->db->id); /* set DB ID from Lua client */ addReplyErrorFormat(c,"Error running script (call to %s): %s\n", funcname, lua_tostring(lua,-1)); lua_pop(lua,1); return; } + selectDb(c,server.lua_client->db->id); /* set DB ID from Lua client */ luaReplyToRedisReply(c,lua); }