mirror of
https://github.com/fluencelabs/redis
synced 2025-03-16 15:40:49 +00:00
SORT with STORE removes key if result is empty. This fixes issue #227.
This commit is contained in:
parent
6c29410117
commit
a0bf8d0ad8
@ -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]
|
||||
|
Loading…
x
Reference in New Issue
Block a user