fix ZRANGESTORE - should return 0 when src points to an empty key (#9089)

mistakenly it used to return an empty array rather than 0.

Co-authored-by: Oran Agra <oran@redislabs.com>
(cherry picked from commit 95274f1f8a3ef4cb4033beecfaa99ea1439ed170)
This commit is contained in:
Leibale Eidelman 2021-06-29 09:38:10 -04:00 committed by Oran Agra
parent 3b32512dc9
commit adc4748248
2 changed files with 19 additions and 1 deletions

View File

@ -3663,7 +3663,12 @@ void zrangeGenericCommand(zrange_result_handler *handler, int argc_start, int st
lookupKeyWrite(c->db,key) :
lookupKeyRead(c->db,key);
if (zobj == NULL) {
addReply(c,shared.emptyarray);
if (store) {
handler->beginResultEmission(handler);
handler->finalizeResultEmission(handler, 0);
} else {
addReply(c, shared.emptyarray);
}
goto cleanup;
}

View File

@ -1568,6 +1568,19 @@ start_server {tags {"zset"}} {
r zrange z1 5 0 BYSCORE REV LIMIT 0 2 WITHSCORES
} {d 4 c 3}
test {ZRANGESTORE - src key missing} {
set res [r zrangestore z2{t} missing{t} 0 -1]
assert_equal $res 0
r exists z2{t}
} {0}
test {ZRANGESTORE - src key wrong type} {
r zadd z2{t} 1 a
r set foo{t} bar
assert_error "*WRONGTYPE*" {r zrangestore z2{t} foo{t} 0 -1}
r zrange z2{t} 0 -1
} {a}
test {ZRANGESTORE - empty range} {
set res [r zrangestore z2 z1 5 6]
assert_equal $res 0