diff options
author | antirez <antirez@gmail.com> | 2015-08-04 09:20:55 +0200 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2015-10-01 13:02:24 +0200 |
commit | a7c5be18a81c120b4bdeb139072f27c899fe1a4d (patch) | |
tree | c7cf812a74ee27d575607a116b6c3fb4cbf91146 /src/sort.c | |
parent | 86d48efbfd40cba447025c36ac6b0c5507b032fd (diff) | |
download | redis-a7c5be18a81c120b4bdeb139072f27c899fe1a4d.tar.gz |
Lazyfree: Sorted sets convereted to plain SDS. (several commits squashed)
Diffstat (limited to 'src/sort.c')
-rw-r--r-- | src/sort.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/sort.c b/src/sort.c index af185dbd4..536302bda 100644 --- a/src/sort.c +++ b/src/sort.c @@ -399,7 +399,7 @@ void sortCommand(client *c) { zset *zs = sortval->ptr; zskiplist *zsl = zs->zsl; zskiplistNode *ln; - robj *ele; + sds sdsele; int rangelen = vectorlen; /* Check if starting point is trivial, before doing log(N) lookup. */ @@ -417,8 +417,8 @@ void sortCommand(client *c) { while(rangelen--) { serverAssertWithInfo(c,sortval,ln != NULL); - ele = ln->obj; - vector[j].obj = ele; + sdsele = ln->ele; + vector[j].obj = createStringObject(sdsele,sdslen(sdsele)); vector[j].u.score = 0; vector[j].u.cmpobj = NULL; j++; @@ -431,9 +431,11 @@ void sortCommand(client *c) { dict *set = ((zset*)sortval->ptr)->dict; dictIterator *di; dictEntry *setele; + sds sdsele; di = dictGetIterator(set); while((setele = dictNext(di)) != NULL) { - vector[j].obj = dictGetKey(setele); + sdsele = dictGetKey(setele); + vector[j].obj = createStringObject(sdsele,sdslen(sdsele)); vector[j].u.score = 0; vector[j].u.cmpobj = NULL; j++; |