Commit 54a5a7df authored by antirez's avatar antirez
Browse files

HSCAN/ZSCAN: skip value when matching.

This fixes issue #1360 and #1362.
parent bebbc7f9
...@@ -495,11 +495,16 @@ void scanGenericCommand(redisClient *c, robj *o) { ...@@ -495,11 +495,16 @@ void scanGenericCommand(redisClient *c, robj *o) {
if (filter) { if (filter) {
decrRefCount(kobj); decrRefCount(kobj);
listDelNode(keys, node); listDelNode(keys, node);
/* Also remove the value for hashes and sorted sets. */ }
if (o && (o->type == REDIS_ZSET || o->type == REDIS_HASH)) {
node = nextnode; /* If this is an hash or a sorted set, we have a flat list of
* key-value elements, so if this element was filtered, remove the
* value, or skip it if it was not filtered: we only match keys. */
if (o && (o->type == REDIS_ZSET || o->type == REDIS_HASH)) {
node = nextnode;
nextnode = listNextNode(node);
if (filter) {
kobj = listNodeValue(node); kobj = listNodeValue(node);
nextnode = listNextNode(node);
decrRefCount(kobj); decrRefCount(kobj);
listDelNode(keys, node); listDelNode(keys, node);
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment