Regression tests for SETNX and MSETNX bugs added
This commit is contained in:
parent
906573e78d
commit
5acdc75d66
2
redis.c
2
redis.c
@ -2978,7 +2978,7 @@ static void echoCommand(redisClient *c) {
|
||||
static void setGenericCommand(redisClient *c, int nx) {
|
||||
int retval;
|
||||
|
||||
lookupKeyWrite(c->db,c->argv[1]);
|
||||
deleteIfVolatile(c->db,c->argv[1]);
|
||||
retval = dictAdd(c->db->dict,c->argv[1],c->argv[2]);
|
||||
if (retval == DICT_ERR) {
|
||||
if (!nx) {
|
||||
|
@ -165,6 +165,13 @@ proc main {server port} {
|
||||
$r get novar2
|
||||
} {foobared}
|
||||
|
||||
test {SETNX will overwrite EXPIREing key} {
|
||||
$r set x 10
|
||||
$r expire x 10000
|
||||
$r setnx x 20
|
||||
$r get x
|
||||
} {20}
|
||||
|
||||
test {EXISTS} {
|
||||
set res {}
|
||||
$r set newkey test
|
||||
@ -901,6 +908,13 @@ proc main {server port} {
|
||||
list [$r msetnx x1 xxx y2 yyy] [$r get x1] [$r get y2]
|
||||
} {1 xxx yyy}
|
||||
|
||||
test {MSETNX should remove all the volatile keys even on failure} {
|
||||
$r mset x 1 y 2 z 3
|
||||
$r expire y 10000
|
||||
$r expire z 10000
|
||||
list [$r msetnx x A y B z C] [$r mget x y z]
|
||||
} {0 {1 {} {}}}
|
||||
|
||||
test {ZSET basic ZADD and score update} {
|
||||
$r zadd ztmp 10 x
|
||||
$r zadd ztmp 20 y
|
||||
|
Loading…
x
Reference in New Issue
Block a user