From 938c0526a08d7e39ace5e8c72822096a299d1832 Mon Sep 17 00:00:00 2001 From: DTrejo Date: Sat, 23 Feb 2013 22:04:46 -0500 Subject: [PATCH] EVAL: allow parameters as an array. Close #368. Signed-off-by: DTrejo --- examples/eval.js | 5 +++++ index.js | 4 ++++ test.js | 9 +++++++++ 3 files changed, 18 insertions(+) diff --git a/examples/eval.js b/examples/eval.js index f7ab0b0b7b..a3ff6b0793 100644 --- a/examples/eval.js +++ b/examples/eval.js @@ -7,3 +7,8 @@ client.eval("return 100.5", 0, function (err, res) { console.dir(err); console.dir(res); }); + +client.eval([ "return 100.5", 0 ], function (err, res) { + console.dir(err); + console.dir(res); +}); diff --git a/index.js b/index.js index 2dc86a9659..4f920bc427 100644 --- a/index.js +++ b/index.js @@ -1074,6 +1074,10 @@ RedisClient.prototype.eval = RedisClient.prototype.EVAL = function () { callback = args.pop(); } + if (Array.isArray(args[0])) { + args = args[0]; + } + // replace script source with sha value var source = args[0]; args[0] = crypto.createHash("sha1").update(source).digest("hex"); diff --git a/test.js b/test.js index 4a47dcfa47..033bef03a2 100644 --- a/test.js +++ b/test.js @@ -309,6 +309,15 @@ tests.EVAL_1 = function () { assert.strictEqual("d", res[3], name); }); + // test {EVAL - parameters in array format gives same result} + client.eval(["return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}", 2, "a", "b", "c", "d"], function (err, res) { + assert.strictEqual(4, res.length, name); + assert.strictEqual("a", res[0], name); + assert.strictEqual("b", res[1], name); + assert.strictEqual("c", res[2], name); + assert.strictEqual("d", res[3], name); + }); + // prepare sha sum for evalsha cache test var source = "return redis.call('get', 'sha test')", sha = crypto.createHash('sha1').update(source).digest('hex');