From: antirez Date: Mon, 14 Jun 2010 08:22:38 +0000 (+0200) Subject: Merge branch 'ltrim-tests' of git://github.com/pietern/redis X-Git-Url: https://git.saurik.com/redis.git/commitdiff_plain/d52e5888694cb65918f2b0d00691c198deb5643f?hp=-c Merge branch 'ltrim-tests' of git://github.com/pietern/redis --- d52e5888694cb65918f2b0d00691c198deb5643f diff --combined redis.c index 3fe9af1c,544bc6a8..f6a765da --- a/redis.c +++ b/redis.c @@@ -77,6 -77,7 +77,6 @@@ #include "zipmap.h" /* Compact dictionary-alike data structure */ #include "ziplist.h" /* Compact list data structure */ #include "sha1.h" /* SHA1 is used for DEBUG DIGEST */ -#include "release.h" /* Release and/or git repository information */ /* Error codes */ #define REDIS_OK 0 @@@ -129,11 -130,11 +129,11 @@@ #define REDIS_ENCODING_INT 1 /* Encoded as integer */ #define REDIS_ENCODING_HT 2 /* Encoded as hash table */ #define REDIS_ENCODING_ZIPMAP 3 /* Encoded as zipmap */ - #define REDIS_ENCODING_LIST 4 /* Encoded as zipmap */ + #define REDIS_ENCODING_LINKEDLIST 4 /* Encoded as regular linked list */ #define REDIS_ENCODING_ZIPLIST 5 /* Encoded as ziplist */ static char* strencoding[] = { - "raw", "int", "hashtable", "zipmap", "list", "ziplist" + "raw", "int", "hashtable", "zipmap", "linkedlist", "ziplist" }; /* Object types only used for dumping to disk */ @@@ -574,8 -575,6 +574,8 @@@ typedef struct iojob } iojob; /*================================ Prototypes =============================== */ +char *redisGitSHA1(void); +char *redisGitDirty(void); static void freeStringObject(robj *o); static void freeListObject(robj *o); @@@ -3059,7 -3058,7 +3059,7 @@@ static robj *createListObject(void) list *l = listCreate(); robj *o = createObject(REDIS_LIST,l); listSetFreeMethod(l,decrRefCount); - o->encoding = REDIS_ENCODING_LIST; + o->encoding = REDIS_ENCODING_LINKEDLIST; return o; } @@@ -3101,7 -3100,7 +3101,7 @@@ static void freeStringObject(robj *o) static void freeListObject(robj *o) { switch (o->encoding) { - case REDIS_ENCODING_LIST: + case REDIS_ENCODING_LINKEDLIST: listRelease((list*) o->ptr); break; case REDIS_ENCODING_ZIPLIST: @@@ -3777,7 -3776,7 +3777,7 @@@ static int rdbSaveObject(FILE *fp, rob } p = ziplistNext(o->ptr,p); } - } else if (o->encoding == REDIS_ENCODING_LIST) { + } else if (o->encoding == REDIS_ENCODING_LINKEDLIST) { list *list = o->ptr; listIter li; listNode *ln; @@@ -4187,7 -4186,7 +4187,7 @@@ static robj *rdbLoadObject(int type, FI if (o->encoding == REDIS_ENCODING_ZIPLIST && ele->encoding == REDIS_ENCODING_RAW && sdslen(ele->ptr) > server.list_max_ziplist_value) - listTypeConvert(o,REDIS_ENCODING_LIST); + listTypeConvert(o,REDIS_ENCODING_LINKEDLIST); if (o->encoding == REDIS_ENCODING_ZIPLIST) { dec = getDecodedObject(ele); @@@ -4927,7 -4926,7 +4927,7 @@@ static void listTypeTryConversion(robj if (subject->encoding != REDIS_ENCODING_ZIPLIST) return; if (value->encoding == REDIS_ENCODING_RAW && sdslen(value->ptr) > server.list_max_ziplist_value) - listTypeConvert(subject,REDIS_ENCODING_LIST); + listTypeConvert(subject,REDIS_ENCODING_LINKEDLIST); } static void listTypePush(robj *subject, robj *value, int where) { @@@ -4935,14 -4934,14 +4935,14 @@@ listTypeTryConversion(subject,value); if (subject->encoding == REDIS_ENCODING_ZIPLIST && ziplistLen(subject->ptr) >= server.list_max_ziplist_entries) - listTypeConvert(subject,REDIS_ENCODING_LIST); + listTypeConvert(subject,REDIS_ENCODING_LINKEDLIST); if (subject->encoding == REDIS_ENCODING_ZIPLIST) { int pos = (where == REDIS_HEAD) ? ZIPLIST_HEAD : ZIPLIST_TAIL; value = getDecodedObject(value); subject->ptr = ziplistPush(subject->ptr,value->ptr,sdslen(value->ptr),pos); decrRefCount(value); - } else if (subject->encoding == REDIS_ENCODING_LIST) { + } else if (subject->encoding == REDIS_ENCODING_LINKEDLIST) { if (where == REDIS_HEAD) { listAddNodeHead(subject->ptr,value); } else { @@@ -4972,7 -4971,7 +4972,7 @@@ static robj *listTypePop(robj *subject /* We only need to delete an element when it exists */ subject->ptr = ziplistDelete(subject->ptr,&p); } - } else if (subject->encoding == REDIS_ENCODING_LIST) { + } else if (subject->encoding == REDIS_ENCODING_LINKEDLIST) { list *list = subject->ptr; listNode *ln; if (where == REDIS_HEAD) { @@@ -4994,7 -4993,7 +4994,7 @@@ static unsigned long listTypeLength(robj *subject) { if (subject->encoding == REDIS_ENCODING_ZIPLIST) { return ziplistLen(subject->ptr); - } else if (subject->encoding == REDIS_ENCODING_LIST) { + } else if (subject->encoding == REDIS_ENCODING_LINKEDLIST) { return listLength((list*)subject->ptr); } else { redisPanic("Unknown list encoding"); @@@ -5025,7 -5024,7 +5025,7 @@@ static listTypeIterator *listTypeInitIt li->direction = direction; if (li->encoding == REDIS_ENCODING_ZIPLIST) { li->zi = ziplistIndex(subject->ptr,index); - } else if (li->encoding == REDIS_ENCODING_LIST) { + } else if (li->encoding == REDIS_ENCODING_LINKEDLIST) { li->ln = listIndex(subject->ptr,index); } else { redisPanic("Unknown list encoding"); @@@ -5055,7 -5054,7 +5055,7 @@@ static int listTypeNext(listTypeIterato li->zi = ziplistPrev(li->subject->ptr,li->zi); return 1; } - } else if (li->encoding == REDIS_ENCODING_LIST) { + } else if (li->encoding == REDIS_ENCODING_LINKEDLIST) { entry->ln = li->ln; if (entry->ln != NULL) { if (li->direction == REDIS_TAIL) @@@ -5086,7 -5085,7 +5086,7 @@@ static robj *listTypeGet(listTypeEntry value = createStringObjectFromLongLong(vlong); } } - } else if (li->encoding == REDIS_ENCODING_LIST) { + } else if (li->encoding == REDIS_ENCODING_LINKEDLIST) { redisAssert(entry->ln != NULL); value = listNodeValue(entry->ln); incrRefCount(value); @@@ -5114,7 -5113,7 +5114,7 @@@ static void listTypeInsert(listTypeEntr subject->ptr = ziplistInsert(subject->ptr,entry->zi,value->ptr,sdslen(value->ptr)); } decrRefCount(value); - } else if (entry->li->encoding == REDIS_ENCODING_LIST) { + } else if (entry->li->encoding == REDIS_ENCODING_LINKEDLIST) { if (where == REDIS_TAIL) { listInsertNode(subject->ptr,entry->ln,value,AL_START_TAIL); } else { @@@ -5132,7 -5131,7 +5132,7 @@@ static int listTypeEqual(listTypeEntry if (li->encoding == REDIS_ENCODING_ZIPLIST) { redisAssert(o->encoding == REDIS_ENCODING_RAW); return ziplistCompare(entry->zi,o->ptr,sdslen(o->ptr)); - } else if (li->encoding == REDIS_ENCODING_LIST) { + } else if (li->encoding == REDIS_ENCODING_LINKEDLIST) { return equalStringObjects(o,listNodeValue(entry->ln)); } else { redisPanic("Unknown list encoding"); @@@ -5151,7 -5150,7 +5151,7 @@@ static void listTypeDelete(listTypeEntr li->zi = p; else li->zi = ziplistPrev(li->subject->ptr,p); - } else if (entry->li->encoding == REDIS_ENCODING_LIST) { + } else if (entry->li->encoding == REDIS_ENCODING_LINKEDLIST) { listNode *next; if (li->direction == REDIS_TAIL) next = entry->ln->next; @@@ -5169,7 -5168,7 +5169,7 @@@ static void listTypeConvert(robj *subje listTypeEntry entry; redisAssert(subject->type == REDIS_LIST); - if (enc == REDIS_ENCODING_LIST) { + if (enc == REDIS_ENCODING_LINKEDLIST) { list *l = listCreate(); listSetFreeMethod(l,decrRefCount); @@@ -5178,7 -5177,7 +5178,7 @@@ while (listTypeNext(li,&entry)) listAddNodeTail(l,listTypeGet(&entry)); listTypeReleaseIterator(li); - subject->encoding = REDIS_ENCODING_LIST; + subject->encoding = REDIS_ENCODING_LINKEDLIST; zfree(subject->ptr); subject->ptr = l; } else { @@@ -5254,7 -5253,7 +5254,7 @@@ static void pushxGenericCommand(redisCl /* Check if the length exceeds the ziplist length threshold. */ if (subject->encoding == REDIS_ENCODING_ZIPLIST && ziplistLen(subject->ptr) > server.list_max_ziplist_entries) - listTypeConvert(subject,REDIS_ENCODING_LIST); + listTypeConvert(subject,REDIS_ENCODING_LINKEDLIST); server.dirty++; } else { /* Notify client of a failed insert */ @@@ -5316,7 -5315,7 +5316,7 @@@ static void lindexCommand(redisClient * } else { addReply(c,shared.nullbulk); } - } else if (o->encoding == REDIS_ENCODING_LIST) { + } else if (o->encoding == REDIS_ENCODING_LINKEDLIST) { listNode *ln = listIndex(o->ptr,index); if (ln != NULL) { value = listNodeValue(ln); @@@ -5349,7 -5348,7 +5349,7 @@@ static void lsetCommand(redisClient *c addReply(c,shared.ok); server.dirty++; } - } else if (o->encoding == REDIS_ENCODING_LIST) { + } else if (o->encoding == REDIS_ENCODING_LINKEDLIST) { listNode *ln = listIndex(o->ptr,index); if (ln == NULL) { addReply(c,shared.outofrangeerr); @@@ -5461,7 -5460,7 +5461,7 @@@ static void ltrimCommand(redisClient *c if (o->encoding == REDIS_ENCODING_ZIPLIST) { o->ptr = ziplistDeleteRange(o->ptr,0,ltrim); o->ptr = ziplistDeleteRange(o->ptr,-rtrim,rtrim); - } else if (o->encoding == REDIS_ENCODING_LIST) { + } else if (o->encoding == REDIS_ENCODING_LINKEDLIST) { list = o->ptr; for (j = 0; j < ltrim; j++) { ln = listFirst(list); @@@ -7761,8 -7760,8 +7761,8 @@@ static sds genRedisInfoString(void) "vm_enabled:%d\r\n" "role:%s\r\n" ,REDIS_VERSION, - REDIS_GIT_SHA1, - strtol(REDIS_GIT_DIRTY,NULL,10) > 0, + redisGitSHA1(), + strtol(redisGitDirty(),NULL,10) > 0, (sizeof(long) == 8) ? "64" : "32", aeGetApiName(), (long) getpid(), @@@ -9151,7 -9150,7 +9151,7 @@@ static int rewriteAppendOnlyFile(char * } p = ziplistNext(zl,p); } - } else if (o->encoding == REDIS_ENCODING_LIST) { + } else if (o->encoding == REDIS_ENCODING_LINKEDLIST) { list *list = o->ptr; listNode *ln; listIter li; @@@ -11443,7 -11442,7 +11443,7 @@@ static void daemonize(void) static void version() { printf("Redis server version %s (%s:%d)\n", REDIS_VERSION, - REDIS_GIT_SHA1, atoi(REDIS_GIT_DIRTY) > 0); + redisGitSHA1(), atoi(redisGitDirty()) > 0); exit(0); }