93 Commits

Author SHA1 Message Date
antirez
d975bb587f ZLEXCOUNT implemented.
Like ZCOUNT for lexicographical ranges.
2014-04-16 15:26:28 +02:00
antirez
12d1d18b59 ZRANGEBYLEX and ZREVRANGEBYLEX implementation. 2014-04-16 15:26:09 +02:00
antirez
7f6743a581 Fixed grammar: before H the article is a, not an. 2013-12-05 16:37:21 +01:00
antirez
060d56e7eb SCAN code refactored to parse cursor first.
The previous implementation of SCAN parsed the cursor in the generic
function implementing SCAN, SSCAN, HSCAN and ZSCAN.

The actual higher-level command implementation only checked for empty
keys and return ASAP in that case. The result was that inverting the
arguments of, for instance, SSCAN for example and write:

    SSCAN 0 key

Instead of

    SSCAN key 0

Resulted into no error, since 0 is a non-existing key name very likely.
Just the iterator returned no elements at all.

In order to fix this issue the code was refactored to extract the
function to parse the cursor and return the error. Every higher level
command implementation now parses the cursor and later checks if the key
exist or not.
2013-11-05 17:25:29 +01:00
antirez
bb2df795e0 Aesthetic fix (missing space) into HSCAN and ZSCAN implementations.
Thanks to @badboy for reporting.
2013-10-29 16:21:21 +01:00
antirez
35816a2e4d ZSCAN implemented. 2013-10-29 16:21:18 +01:00
antirez
8368550733 Fix comments for correctness in zunionInterGenericCommand().
Related to issue #1240.
2013-08-19 15:02:06 +02:00
antirez
3ad87c652b Properly init/release iterators in zunionInterGenericCommand().
This commit does mainly two things:

1) It fixes zunionInterGenericCommand() by removing mass-initialization
of all the iterators used, so that we don't violate the unsafe iterator
API of dictionaries. This fixes issue #1240.

2) Since the zui* APIs required the allocator to be initialized in the
zsetopsrc structure in order to use non-iterator related APIs, this
commit fixes this strict requirement by accessing objects directly via
the op->subject->ptr pointer we have to the object.
2013-08-19 15:02:02 +02:00
antirez
8024de7eb0 Z*STORE event fixed: generate del only if resulting sorted set is empty. 2013-01-29 13:50:09 +01:00
antirez
b9bc4f9132 Keyspace events: it is now possible to select subclasses of events.
When keyspace events are enabled, the overhead is not sever but
noticeable, so this commit introduces the ability to select subclasses
of events in order to avoid to generate events the user is not
interested in.

The events can be selected using redis.conf or CONFIG SET / GET.
2013-01-28 13:18:36 +01:00
antirez
4ff138fbbe Keyspace events added for more commands. 2013-01-28 13:17:30 +01:00
guiquanz
1caf09399e Fixed many typos.
Conflicts fixed, mainly because 2.8 has no cluster support / files:
	00-RELEASENOTES
	src/cluster.c
	src/crc16.c
	src/redis-trib.rb
	src/redis.h
2013-01-19 11:03:19 +01:00
antirez
cc85ed41df Fix integer overflow in zunionInterGenericCommand().
This fixes issue #761.
2012-11-22 15:28:48 +01:00
antirez
8ddb23b90c BSD license added to every C source and header file. 2012-11-08 18:34:04 +01:00
antirez
4dada1b5bc Fixed issue #516 (ZINTERSTORE mixing sets and zsets).
Weeks ago trying to fix an harmless GCC warning I introduced a bug in
the ziplist-encoded implementations of sorted sets.

The bug completely broke zuiNext() iterator, that is used in the
ZINTERSTORE and ZUNIONSTORE implementation, so those two commands are no
longer reliable starting from Redis version 2.4.12 and latest 2.6.0-RC
releases.

This commit fixes the problem and adds a regression test.
2012-05-23 11:12:38 +02:00
antirez
9de5d4600a A few compiler warnings suppressed. 2012-04-24 19:35:03 +02:00
antirez
feb282883b zzlIsInRange() now is capable of handling empty sorted sets that may end inside the data set when loading very old RDB files produced by early-stage versions of Redis. 2012-02-22 09:52:10 +01:00
antirez
fe7be46025 bzero -> memset 2012-02-21 10:06:04 +01:00
antirez
7faa1f075b added a comment on top of the zslRandomLevel() function 2012-01-16 09:39:04 +01:00
antirez
d8bd12f984 error in comment fixed 2012-01-11 20:25:51 +01:00
antirez
256356ffd8 Prevent NaN scores in sorted sets resulting from calls to ZUNIONSTORE and ZINTERSTORE. 2011-12-23 09:27:31 +01:00
BigCat
706b32e0e0 Fix issue #247 : Accepting non-integer parameters when shouldn't
Using `getLongFromObjectOrReply` instead of `atoi` if possible.
The following functions are modified.

* lrangeCommand
* ltrimCommand
* lremCommand
* lindexCommand
* lsetCommand
* zunionInterGenericCommand
* genericZrangebyscoreCommand
* sortCommand
2011-12-19 19:48:35 +08:00
antirez
a244a13b4c added assertion in zslInsert() that ensures the inserted element score is not NaN 2011-12-18 11:12:58 +01:00
antirez
d93f9a8644 string to number API is now more strict not accepting spaces before or after the number. A few tests converted to match the new error messages using the word float instead of double. 2011-11-14 15:34:44 +01:00
antirez
c0ba9ebe13 dict.c API names modified to be more coincise and consistent. 2011-11-08 17:07:55 +01:00
antirez
f013f40003 Fixed a few warnings compiling on Linux. 2011-10-23 10:57:01 +02:00
antirez
eab0e26e03 replaced redisAssert() with redisAssertWithInfo() in a shitload of places. 2011-10-04 18:43:03 +02:00
Pieter Noordhuis
0cfc894066 Remove ZCOUNT branches from generic RANGEBYSCORE code 2011-10-03 14:23:31 +02:00
Pieter Noordhuis
62d774e5ba Use element rank instead of iterating in ZCOUNT 2011-10-03 14:14:43 +02:00
antirez
3f7b2b1f30 Variadic ZREM 2011-05-31 20:15:18 +02:00
antirez
ef231a7c56 Variadic ZADD 2011-05-31 17:47:34 +02:00
antirez
d200342ac2 Fixed typo in comment 2011-05-24 10:35:58 +02:00
antirez
521ddcce14 Fix for ZUNIONSTORE bug when there is an empty set among input sets. Regression test added. 2011-05-19 17:58:52 +02:00
antirez
cb16b6c389 Fixed misuse of the new iterator semantics in ZUNIONSTORE 2011-05-15 17:28:06 +02:00
antirez
d070abe44c Fix for a possible bug related to ZINTER/UNIONSTORE called with the same source set more than one time. 2011-05-15 15:33:01 +02:00
antirez
a5dce40726 if /dev/urandom is not available use rand() to get a random node name 2011-05-04 10:30:22 +02:00
antirez
c772d9c6e7 take a hashslot -> keys index, will be used for cluster rehasing 2011-04-28 19:00:33 +02:00
Pieter Noordhuis
02e6006532 Explicitly zero zval since it is stored on the stack 2011-04-06 16:39:22 +02:00
Pieter Noordhuis
100ed062c0 Test for ENCODING_SKIPLIST instead of ENCODING_RAW 2011-04-06 16:17:07 +02:00
Pieter Noordhuis
48991620f7 Remove sorted set when empty after ZREMRANGEBY* 2011-03-21 23:54:46 +01:00
Pieter Noordhuis
69298a05eb Offset should be size_t 2011-03-14 10:53:53 +01:00
Pieter Noordhuis
72690afdd2 Remove unused function 2011-03-14 10:53:14 +01:00
Pieter Noordhuis
e53ca04b50 Test for empty inner range when looking for elements in range 2011-03-11 18:18:02 +01:00
Pieter Noordhuis
8588bfa370 Make zzl API unaware of the robj where the ziplist is stored 2011-03-11 17:06:07 +01:00
Pieter Noordhuis
df26a0ae0b Encode sorted set after loading from dump 2011-03-10 17:50:13 +01:00
Pieter Noordhuis
255eebe221 Convert encoding of result when in limits 2011-03-10 17:02:05 +01:00
Pieter Noordhuis
dba3a153a7 Remove comment 2011-03-10 16:53:20 +01:00
Pieter Noordhuis
56ce42faf1 Generic iterator code for usage in ZUNIONSTORE/ZINTERSTORE 2011-03-10 16:34:52 +01:00
Pieter Noordhuis
bbfe232f60 Make zzlLength take a ziplist argument 2011-03-10 16:17:14 +01:00
Pieter Noordhuis
cc4c964b33 Fix used function in ZCARD 2011-03-09 16:13:39 +01:00