]> git.saurik.com Git - redis.git/commitdiff
Fix for ZUNIONSTORE bug when there is an empty set among input sets. Regression test...
authorantirez <antirez@gmail.com>
Thu, 19 May 2011 15:58:29 +0000 (17:58 +0200)
committerantirez <antirez@gmail.com>
Thu, 19 May 2011 15:58:29 +0000 (17:58 +0200)
src/t_zset.c
tests/unit/type/zset.tcl

index 1c55cb97a575e3a7ae3819cb64dcb29533767ad4..19aac3d50a3792cfa0bb4d0ce3839039466bde61 100644 (file)
@@ -1550,7 +1550,7 @@ void zunionInterGenericCommand(redisClient *c, robj *dstkey, int op) {
         }
     } else if (op == REDIS_OP_UNION) {
         for (i = 0; i < setnum; i++) {
         }
     } else if (op == REDIS_OP_UNION) {
         for (i = 0; i < setnum; i++) {
-            if (zuiLength(&src[0]) == 0)
+            if (zuiLength(&src[i]) == 0)
                 continue;
 
             while (zuiNext(&src[i],&zval)) {
                 continue;
 
             while (zuiNext(&src[i],&zval)) {
index 37668cfe2d949ba051f016de6588dec2517b2e38..761cac49cc77a6553cfb7a0ca829729f125fbf25 100644 (file)
@@ -353,6 +353,14 @@ start_server {tags {"zset"}} {
             assert_equal 0 [r exists dst_key]
         }
 
             assert_equal 0 [r exists dst_key]
         }
 
+        test "ZUNIONSTORE with empty set - $encoding" {
+            r del zseta zsetb
+            r zadd zseta 1 a
+            r zadd zseta 2 b
+            r zunionstore zsetc 2 zseta zsetb
+            r zrange zsetc 0 -1 withscores
+        } {a 1 b 2}
+
         test "ZUNIONSTORE basics - $encoding" {
             r del zseta zsetb zsetc
             r zadd zseta 1 a
         test "ZUNIONSTORE basics - $encoding" {
             r del zseta zsetb zsetc
             r zadd zseta 1 a