]> git.saurik.com Git - redis.git/commitdiff
Test for ranges where min > max
authorPieter Noordhuis <pcnoordhuis@gmail.com>
Mon, 17 Jan 2011 10:10:30 +0000 (11:10 +0100)
committerPieter Noordhuis <pcnoordhuis@gmail.com>
Tue, 8 Mar 2011 09:57:39 +0000 (10:57 +0100)
src/t_zset.c
tests/unit/type/zset.tcl

index 0e7d726bfb388ede5e17ae3a0d478c6317abdadf..99fe6a8b3c5c5a782f4a7ebae22b5c2e47b46938 100644 (file)
@@ -196,6 +196,10 @@ static int zslValueInRange(double value, zrangespec *spec) {
 int zslIsInRange(zskiplist *zsl, zrangespec *range) {
     zskiplistNode *x;
 
+    /* Test for ranges that will always be empty. */
+    if (range->min > range->max ||
+            (range->min == range->max && (range->minex || range->maxex)))
+        return 0;
     x = zsl->tail;
     if (x == NULL || !zslValueInMinRange(x->score,range))
         return 0;
index a54ff37bb4e9daf173242f11d3b86d2fba691fac..fdeebd2fec3322772d5502b275a2bf81c95d132a 100644 (file)
@@ -233,12 +233,16 @@ start_server {tags {"zset"}} {
         r zrem zset g
 
         # inclusive
+        assert_equal {} [r zrangebyscore zset 4 2]
         assert_equal {} [r zrangebyscore zset 6 +inf]
         assert_equal {} [r zrangebyscore zset -inf -6]
         assert_equal {} [r zrevrangebyscore zset +inf 6]
         assert_equal {} [r zrevrangebyscore zset -6 -inf]
 
         # exclusive
+        assert_equal {} [r zrangebyscore zset (4 (2]
+        assert_equal {} [r zrangebyscore zset 2 (2]
+        assert_equal {} [r zrangebyscore zset (2 2]
         assert_equal {} [r zrangebyscore zset (6 (+inf]
         assert_equal {} [r zrangebyscore zset (-inf (-6]
         assert_equal {} [r zrevrangebyscore zset (+inf (6]