Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
4774a53b
Commit
4774a53b
authored
Jun 15, 2010
by
Pieter Noordhuis
Browse files
fix behavior for out-of-range negative end index on ZREMRANGEBYRANK
parent
184d74ab
Changes
2
Hide whitespace changes
Inline
Side-by-side
redis.c
View file @
4774a53b
...
...
@@ -6409,9 +6409,9 @@ static void zremrangebyrankCommand(redisClient *c) {
if
(
start
<
0
)
start
=
llen
+
start
;
if
(
end
<
0
)
end
=
llen
+
end
;
if
(
start
<
0
)
start
=
0
;
if
(
end
<
0
)
end
=
0
;
/* indexes sanity checks */
/* Invariant: start >= 0, so this test will be true when end < 0.
* The range is empty when start > end or start >= length. */
if
(
start
>
end
||
start
>=
llen
)
{
addReply
(
c
,
shared
.
czero
);
return
;
...
...
tests/unit/type/zset.tcl
View file @
4774a53b
start_server
{
tags
{
"zset"
}}
{
proc create_zset
{
key items
}
{
r del $key
foreach
{
score entry
}
$items
{
r zadd $key $score $entry
}
}
test
{
ZSET basic ZADD and score update
}
{
r zadd ztmp 10 x
r zadd ztmp 20 y
...
...
@@ -339,15 +346,32 @@ start_server {tags {"zset"}} {
list
[
r zremrangebyscore zset -inf +inf
]
[
r zrange zset 0 -1
]
}
{
5
{}}
test
{
ZREMRANGEBYRANK basics
}
{
r del zset
r zadd zset 1 a
r zadd zset 2 b
r zadd zset 3 c
r zadd zset 4 d
r zadd zset 5 e
list
[
r zremrangebyrank zset 1 3
]
[
r zrange zset 0 -1
]
}
{
3
{
a e
}}
test
"ZREMRANGEBYRANK basics"
{
proc remrangebyrank
{
min max
}
{
create_zset zset
{
1 a 2 b 3 c 4 d 5 e
}
r zremrangebyrank zset $min $max
}
# inner range
assert_equal 3
[
remrangebyrank 1 3
]
assert_equal
{
a e
}
[
r zrange zset 0 -1
]
# start underflow
assert_equal 1
[
remrangebyrank -10 0
]
assert_equal
{
b c d e
}
[
r zrange zset 0 -1
]
# start overflow
assert_equal 0
[
remrangebyrank 10 -1
]
assert_equal
{
a b c d e
}
[
r zrange zset 0 -1
]
# end underflow
assert_equal 0
[
remrangebyrank 0 -10
]
assert_equal
{
a b c d e
}
[
r zrange zset 0 -1
]
# end overflow
assert_equal 5
[
remrangebyrank 0 10
]
assert_equal
{}
[
r zrange zset 0 -1
]
}
test
{
ZUNIONSTORE against non-existing key doesn't set destination
}
{
r del zseta
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment