]> git.saurik.com Git - redis.git/commitdiff
Merge branch 'ltrim-tests' of git://github.com/pietern/redis
authorantirez <antirez@gmail.com>
Mon, 14 Jun 2010 08:22:38 +0000 (10:22 +0200)
committerantirez <antirez@gmail.com>
Mon, 14 Jun 2010 08:22:38 +0000 (10:22 +0200)
1  2 
redis.c

diff --combined redis.c
index 3fe9af1c7ca45229694cdf2f95e5b28138651be6,544bc6a813240138fd6087fbb0ce5979bcef9ab1..f6a765dad4299c86900449b8c78f1864fd806198
+++ 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
  #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) {
      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) {
  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);
  
          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);
  }