mirror of
http://github.com/valkey-io/valkey
synced 2024-11-22 00:52:38 +00:00
Partial qsort implemented in SORT command, only when both BY and LIMIT is used. minor fix for a warning compiling under Linux.
This commit is contained in:
parent
75fd597daf
commit
5f5b9840c3
2
Makefile
2
Makefile
@ -6,7 +6,7 @@ DEBUG?= -g
|
||||
CFLAGS?= -std=c99 -pedantic -O2 -Wall -W -DSDS_ABORT_ON_OOM
|
||||
CCOPT= $(CFLAGS)
|
||||
|
||||
OBJ = adlist.o ae.o anet.o dict.o redis.o sds.o zmalloc.o lzf_c.o lzf_d.o
|
||||
OBJ = adlist.o ae.o anet.o dict.o redis.o sds.o zmalloc.o lzf_c.o lzf_d.o pqsort.o
|
||||
BENCHOBJ = ae.o anet.o benchmark.o sds.o adlist.o zmalloc.o
|
||||
CLIOBJ = anet.o sds.o adlist.o redis-cli.o zmalloc.o
|
||||
|
||||
|
@ -28,6 +28,8 @@
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "fmacros.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
2
pqsort.h
2
pqsort.h
@ -10,6 +10,6 @@
|
||||
|
||||
void
|
||||
pqsort(void *a, size_t n, size_t es,
|
||||
int (*cmp) __P((const void *, const void *)), size_t lrange, size_t rrange)
|
||||
int (*cmp) __P((const void *, const void *)), size_t lrange, size_t rrange);
|
||||
|
||||
#endif
|
||||
|
8
redis.c
8
redis.c
@ -56,7 +56,8 @@
|
||||
#include "dict.h" /* Hash tables */
|
||||
#include "adlist.h" /* Linked lists */
|
||||
#include "zmalloc.h" /* total memory usage aware version of malloc/free */
|
||||
#include "lzf.h"
|
||||
#include "lzf.h" /* LZF compression library */
|
||||
#include "pqsort.h" /* Partial qsort for SORT+LIMIT */
|
||||
|
||||
/* Error codes */
|
||||
#define REDIS_OK 0
|
||||
@ -3426,7 +3427,10 @@ static void sortCommand(redisClient *c) {
|
||||
server.sort_desc = desc;
|
||||
server.sort_alpha = alpha;
|
||||
server.sort_bypattern = sortby ? 1 : 0;
|
||||
qsort(vector,vectorlen,sizeof(redisSortObject),sortCompare);
|
||||
if (sortby && (start != 0 || end != vectorlen-1))
|
||||
pqsort(vector,vectorlen,sizeof(redisSortObject),sortCompare, start,end);
|
||||
else
|
||||
qsort(vector,vectorlen,sizeof(redisSortObject),sortCompare);
|
||||
}
|
||||
|
||||
/* Send command output to the output buffer, performing the specified
|
||||
|
Loading…
Reference in New Issue
Block a user