提交 a0bf8d0a 编写于 作者: M Michal Kwiatkowski

SORT with STORE removes key if result is empty. This fixes issue #227.

上级 6c294101
......@@ -367,9 +367,14 @@ void sortCommand(redisClient *c) {
}
}
}
if (outputlen) setKey(c->db,storekey,sobj);
if (outputlen) {
setKey(c->db,storekey,sobj);
server.dirty += outputlen;
} else if (dbDelete(c->db,storekey)) {
signalModifiedKey(c->db,storekey);
server.dirty++;
}
decrRefCount(sobj);
server.dirty += outputlen;
addReplyLongLong(c,outputlen);
}
......
......@@ -25,6 +25,16 @@ start_server {tags {"cas"}} {
r exec
} {}
test {EXEC fail on WATCHed key modified by SORT with STORE even if the result is empty} {
r flushdb
r lpush foo bar
r watch foo
r sort emptylist store foo
r multi
r ping
r exec
} {}
test {After successful EXEC key is no longer watched} {
r set x 30
r watch x
......
......@@ -150,6 +150,13 @@ start_server {
r exists zap
} {0}
test "SORT with STORE removes key if result is empty (github issue 227)" {
r flushdb
r lpush foo bar
r sort emptylist store foo
r exists foo
} {0}
tags {"slow"} {
set num 100
set res [create_random_dataset $num lpush]
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册