From: antirez Date: Thu, 18 Mar 2010 02:23:44 +0000 (+0100) Subject: zipmap fix for large values X-Git-Url: https://git.saurik.com/redis.git/commitdiff_plain/ad6de43c800b6511ca96a2ca17848fc6582d85d0?hp=db5946fc27be8721eac4c306639f94797c653074 zipmap fix for large values --- diff --git a/staticsymbols.h b/staticsymbols.h index 77053704..c6a42d07 100644 --- a/staticsymbols.h +++ b/staticsymbols.h @@ -3,10 +3,12 @@ static struct redisFunctionSym symsTable[] = { {"_redisAssert",(unsigned long)_redisAssert}, {"acceptHandler",(unsigned long)acceptHandler}, {"addReply",(unsigned long)addReply}, +{"addReplyBulk",(unsigned long)addReplyBulk}, {"addReplyBulkLen",(unsigned long)addReplyBulkLen}, {"addReplyDouble",(unsigned long)addReplyDouble}, {"addReplyLong",(unsigned long)addReplyLong}, {"addReplySds",(unsigned long)addReplySds}, +{"addReplyUlong",(unsigned long)addReplyUlong}, {"aofRemoveTempFile",(unsigned long)aofRemoveTempFile}, {"appendCommand",(unsigned long)appendCommand}, {"appendServerSaveParams",(unsigned long)appendServerSaveParams}, @@ -21,6 +23,7 @@ static struct redisFunctionSym symsTable[] = { {"brpopCommand",(unsigned long)brpopCommand}, {"bytesToHuman",(unsigned long)bytesToHuman}, {"call",(unsigned long)call}, +{"checkType",(unsigned long)checkType}, {"closeTimedoutClients",(unsigned long)closeTimedoutClients}, {"compareStringObjects",(unsigned long)compareStringObjects}, {"computeObjectSwappability",(unsigned long)computeObjectSwappability}, @@ -81,6 +84,7 @@ static struct redisFunctionSym symsTable[] = { {"fwriteBulkObject",(unsigned long)fwriteBulkObject}, {"fwriteBulkString",(unsigned long)fwriteBulkString}, {"genRedisInfoString",(unsigned long)genRedisInfoString}, +{"genericHgetallCommand",(unsigned long)genericHgetallCommand}, {"genericZrangebyscoreCommand",(unsigned long)genericZrangebyscoreCommand}, {"getCommand",(unsigned long)getCommand}, {"getDecodedObject",(unsigned long)getDecodedObject}, @@ -91,9 +95,15 @@ static struct redisFunctionSym symsTable[] = { {"glueReplyBuffersIfNeeded",(unsigned long)glueReplyBuffersIfNeeded}, {"handleClientsBlockedOnSwappedKey",(unsigned long)handleClientsBlockedOnSwappedKey}, {"handleClientsWaitingListPush",(unsigned long)handleClientsWaitingListPush}, +{"hdelCommand",(unsigned long)hdelCommand}, +{"hexistsCommand",(unsigned long)hexistsCommand}, {"hgetCommand",(unsigned long)hgetCommand}, +{"hgetallCommand",(unsigned long)hgetallCommand}, +{"hkeysCommand",(unsigned long)hkeysCommand}, +{"hlenCommand",(unsigned long)hlenCommand}, {"hsetCommand",(unsigned long)hsetCommand}, {"htNeedsResize",(unsigned long)htNeedsResize}, +{"hvalsCommand",(unsigned long)hvalsCommand}, {"incrCommand",(unsigned long)incrCommand}, {"incrDecrCommand",(unsigned long)incrDecrCommand}, {"incrRefCount",(unsigned long)incrRefCount}, @@ -112,7 +122,9 @@ static struct redisFunctionSym symsTable[] = { {"lookupKey",(unsigned long)lookupKey}, {"lookupKeyByPattern",(unsigned long)lookupKeyByPattern}, {"lookupKeyRead",(unsigned long)lookupKeyRead}, +{"lookupKeyReadOrReply",(unsigned long)lookupKeyReadOrReply}, {"lookupKeyWrite",(unsigned long)lookupKeyWrite}, +{"lookupKeyWriteOrReply",(unsigned long)lookupKeyWriteOrReply}, {"lpopCommand",(unsigned long)lpopCommand}, {"lpushCommand",(unsigned long)lpushCommand}, {"lrangeCommand",(unsigned long)lrangeCommand}, @@ -274,6 +286,7 @@ static struct redisFunctionSym symsTable[] = { {"zslInsert",(unsigned long)zslInsert}, {"zslRandomLevel",(unsigned long)zslRandomLevel}, {"zunionCommand",(unsigned long)zunionCommand}, +{"zunionInterBlockClientOnSwappedKeys",(unsigned long)zunionInterBlockClientOnSwappedKeys}, {"zunionInterGenericCommand",(unsigned long)zunionInterGenericCommand}, {NULL,0} }; diff --git a/test-redis.tcl b/test-redis.tcl index 3dd03fd2..acb1aced 100644 --- a/test-redis.tcl +++ b/test-redis.tcl @@ -152,6 +152,7 @@ proc createComplexDataset {r ops} { } { $r zadd $k $d $v } { + puts "hset $k $f $v" $r hset $k $f $v } set t [$r type $k] @@ -178,7 +179,7 @@ proc createComplexDataset {r ops} { } {hash} { randpath {$r hset $k $f $v} \ - {$r hdel $k $f} + {puts "$r hdel $k $f"; $r hdel $k $f} } } } diff --git a/zipmap.c b/zipmap.c index 5f024dfa..f45ef0dd 100644 --- a/zipmap.c +++ b/zipmap.c @@ -116,7 +116,7 @@ static unsigned int zipmapDecodeLength(unsigned char *p) { unsigned int len = *p; if (len < ZIPMAP_BIGLEN) return len; - memcpy(&len,p,sizeof(unsigned int)); + memcpy(&len,p+1,sizeof(unsigned int)); return len; } diff --git a/zipmap.h b/zipmap.h index 089472ed..e5f6c9f2 100644 --- a/zipmap.h +++ b/zipmap.h @@ -43,5 +43,6 @@ unsigned char *zipmapNext(unsigned char *zm, unsigned char **key, unsigned int * int zipmapGet(unsigned char *zm, unsigned char *key, unsigned int klen, unsigned char **value, unsigned int *vlen); int zipmapExists(unsigned char *zm, unsigned char *key, unsigned int klen); unsigned int zipmapLen(unsigned char *zm); +void zipmapRepr(unsigned char *p); #endif