Lines Matching refs:o

40 void hashTypeTryConversion(robj *o, robj **argv, int start, int end) {  in hashTypeTryConversion()  argument
43 if (o->encoding != OBJ_ENCODING_ZIPLIST) return; in hashTypeTryConversion()
49 hashTypeConvert(o, OBJ_ENCODING_HT); in hashTypeTryConversion()
65 int hashTypeGetFromZiplist(robj *o, robj *field, in hashTypeGetFromZiplist() argument
73 serverAssert(o->encoding == OBJ_ENCODING_ZIPLIST); in hashTypeGetFromZiplist()
77 zl = o->ptr; in hashTypeGetFromZiplist()
101 int hashTypeGetFromHashTable(robj *o, robj *field, robj **value) { in hashTypeGetFromHashTable() argument
104 serverAssert(o->encoding == OBJ_ENCODING_HT); in hashTypeGetFromHashTable()
106 de = dictFind(o->ptr, field); in hashTypeGetFromHashTable()
118 robj *hashTypeGetObject(robj *o, robj *field) { in hashTypeGetObject() argument
121 if (o->encoding == OBJ_ENCODING_ZIPLIST) { in hashTypeGetObject()
126 if (hashTypeGetFromZiplist(o, field, &vstr, &vlen, &vll) == 0) { in hashTypeGetObject()
133 } else if (o->encoding == OBJ_ENCODING_HT) { in hashTypeGetObject()
136 if (hashTypeGetFromHashTable(o, field, &aux) == 0) { in hashTypeGetObject()
149 size_t hashTypeGetValueLength(robj *o, robj *field) { in hashTypeGetValueLength() argument
151 if (o->encoding == OBJ_ENCODING_ZIPLIST) { in hashTypeGetValueLength()
156 if (hashTypeGetFromZiplist(o, field, &vstr, &vlen, &vll) == 0) in hashTypeGetValueLength()
158 } else if (o->encoding == OBJ_ENCODING_HT) { in hashTypeGetValueLength()
161 if (hashTypeGetFromHashTable(o, field, &aux) == 0) in hashTypeGetValueLength()
171 int hashTypeExists(robj *o, robj *field) { in hashTypeExists() argument
172 if (o->encoding == OBJ_ENCODING_ZIPLIST) { in hashTypeExists()
177 if (hashTypeGetFromZiplist(o, field, &vstr, &vlen, &vll) == 0) return 1; in hashTypeExists()
178 } else if (o->encoding == OBJ_ENCODING_HT) { in hashTypeExists()
181 if (hashTypeGetFromHashTable(o, field, &aux) == 0) return 1; in hashTypeExists()
192 int hashTypeSet(robj *o, robj *field, robj *value) { in hashTypeSet() argument
195 if (o->encoding == OBJ_ENCODING_ZIPLIST) { in hashTypeSet()
201 zl = o->ptr; in hashTypeSet()
224 o->ptr = zl; in hashTypeSet()
229 if (hashTypeLength(o) > server.hash_max_ziplist_entries) in hashTypeSet()
230 hashTypeConvert(o, OBJ_ENCODING_HT); in hashTypeSet()
231 } else if (o->encoding == OBJ_ENCODING_HT) { in hashTypeSet()
232 if (dictReplace(o->ptr, field, value)) { /* Insert */ in hashTypeSet()
246 int hashTypeDelete(robj *o, robj *field) { in hashTypeDelete() argument
249 if (o->encoding == OBJ_ENCODING_ZIPLIST) { in hashTypeDelete()
254 zl = o->ptr; in hashTypeDelete()
261 o->ptr = zl; in hashTypeDelete()
268 } else if (o->encoding == OBJ_ENCODING_HT) { in hashTypeDelete()
269 if (dictDelete((dict*)o->ptr, field) == C_OK) { in hashTypeDelete()
273 if (htNeedsResize(o->ptr)) dictResize(o->ptr); in hashTypeDelete()
284 unsigned long hashTypeLength(robj *o) { in hashTypeLength() argument
287 if (o->encoding == OBJ_ENCODING_ZIPLIST) { in hashTypeLength()
288 length = ziplistLen(o->ptr) / 2; in hashTypeLength()
289 } else if (o->encoding == OBJ_ENCODING_HT) { in hashTypeLength()
290 length = dictSize((dict*)o->ptr); in hashTypeLength()
419 robj *o = lookupKeyWrite(c->db,key); in hashTypeLookupWriteOrCreate() local
420 if (o == NULL) { in hashTypeLookupWriteOrCreate()
421 o = createHashObject(); in hashTypeLookupWriteOrCreate()
422 dbAdd(c->db,key,o); in hashTypeLookupWriteOrCreate()
424 if (o->type != OBJ_HASH) { in hashTypeLookupWriteOrCreate()
429 return o; in hashTypeLookupWriteOrCreate()
432 void hashTypeConvertZiplist(robj *o, int enc) { in hashTypeConvertZiplist() argument
433 serverAssert(o->encoding == OBJ_ENCODING_ZIPLIST); in hashTypeConvertZiplist()
443 hi = hashTypeInitIterator(o); in hashTypeConvertZiplist()
456 o->ptr,ziplistBlobLen(o->ptr)); in hashTypeConvertZiplist()
462 zfree(o->ptr); in hashTypeConvertZiplist()
464 o->encoding = OBJ_ENCODING_HT; in hashTypeConvertZiplist()
465 o->ptr = dict; in hashTypeConvertZiplist()
472 void hashTypeConvert(robj *o, int enc) { in hashTypeConvert() argument
473 if (o->encoding == OBJ_ENCODING_ZIPLIST) { in hashTypeConvert()
474 hashTypeConvertZiplist(o, enc); in hashTypeConvert()
475 } else if (o->encoding == OBJ_ENCODING_HT) { in hashTypeConvert()
488 robj *o; in hsetCommand() local
490 if ((o = hashTypeLookupWriteOrCreate(c,c->argv[1])) == NULL) return; in hsetCommand()
491 hashTypeTryConversion(o,c->argv,2,3); in hsetCommand()
492 hashTypeTryObjectEncoding(o,&c->argv[2], &c->argv[3]); in hsetCommand()
493 update = hashTypeSet(o,c->argv[2],c->argv[3]); in hsetCommand()
501 robj *o; in hsetnxCommand() local
502 if ((o = hashTypeLookupWriteOrCreate(c,c->argv[1])) == NULL) return; in hsetnxCommand()
503 hashTypeTryConversion(o,c->argv,2,3); in hsetnxCommand()
505 if (hashTypeExists(o, c->argv[2])) { in hsetnxCommand()
508 hashTypeTryObjectEncoding(o,&c->argv[2], &c->argv[3]); in hsetnxCommand()
509 hashTypeSet(o,c->argv[2],c->argv[3]); in hsetnxCommand()
519 robj *o; in hmsetCommand() local
526 if ((o = hashTypeLookupWriteOrCreate(c,c->argv[1])) == NULL) return; in hmsetCommand()
527 hashTypeTryConversion(o,c->argv,2,c->argc-1); in hmsetCommand()
529 hashTypeTryObjectEncoding(o,&c->argv[i], &c->argv[i+1]); in hmsetCommand()
530 hashTypeSet(o,c->argv[i],c->argv[i+1]); in hmsetCommand()
540 robj *o, *current, *new; in hincrbyCommand() local
543 if ((o = hashTypeLookupWriteOrCreate(c,c->argv[1])) == NULL) return; in hincrbyCommand()
544 if ((current = hashTypeGetObject(o,c->argv[2])) != NULL) { in hincrbyCommand()
563 hashTypeTryObjectEncoding(o,&c->argv[2],NULL); in hincrbyCommand()
564 hashTypeSet(o,c->argv[2],new); in hincrbyCommand()
574 robj *o, *current, *new, *aux; in hincrbyfloatCommand() local
577 if ((o = hashTypeLookupWriteOrCreate(c,c->argv[1])) == NULL) return; in hincrbyfloatCommand()
578 if ((current = hashTypeGetObject(o,c->argv[2])) != NULL) { in hincrbyfloatCommand()
591 hashTypeTryObjectEncoding(o,&c->argv[2],NULL); in hincrbyfloatCommand()
592 hashTypeSet(o,c->argv[2],new); in hincrbyfloatCommand()
608 static void addHashFieldToReply(client *c, robj *o, robj *field) { in addHashFieldToReply() argument
611 if (o == NULL) { in addHashFieldToReply()
616 if (o->encoding == OBJ_ENCODING_ZIPLIST) { in addHashFieldToReply()
621 ret = hashTypeGetFromZiplist(o, field, &vstr, &vlen, &vll); in addHashFieldToReply()
632 } else if (o->encoding == OBJ_ENCODING_HT) { in addHashFieldToReply()
635 ret = hashTypeGetFromHashTable(o, field, &value); in addHashFieldToReply()
648 robj *o; in hgetCommand() local
650 if ((o = lookupKeyReadOrReply(c,c->argv[1],shared.nullbulk)) == NULL || in hgetCommand()
651 checkType(c,o,OBJ_HASH)) return; in hgetCommand()
653 addHashFieldToReply(c, o, c->argv[2]); in hgetCommand()
657 robj *o; in hmgetCommand() local
662 o = lookupKeyRead(c->db, c->argv[1]); in hmgetCommand()
663 if (o != NULL && o->type != OBJ_HASH) { in hmgetCommand()
670 addHashFieldToReply(c, o, c->argv[i]); in hmgetCommand()
675 robj *o; in hdelCommand() local
678 if ((o = lookupKeyWriteOrReply(c,c->argv[1],shared.czero)) == NULL || in hdelCommand()
679 checkType(c,o,OBJ_HASH)) return; in hdelCommand()
682 if (hashTypeDelete(o,c->argv[j])) { in hdelCommand()
684 if (hashTypeLength(o) == 0) { in hdelCommand()
703 robj *o; in hlenCommand() local
705 if ((o = lookupKeyReadOrReply(c,c->argv[1],shared.czero)) == NULL || in hlenCommand()
706 checkType(c,o,OBJ_HASH)) return; in hlenCommand()
708 addReplyLongLong(c,hashTypeLength(o)); in hlenCommand()
712 robj *o; in hstrlenCommand() local
714 if ((o = lookupKeyReadOrReply(c,c->argv[1],shared.czero)) == NULL || in hstrlenCommand()
715 checkType(c,o,OBJ_HASH)) return; in hstrlenCommand()
716 addReplyLongLong(c,hashTypeGetValueLength(o,c->argv[2])); in hstrlenCommand()
744 robj *o; in genericHgetallCommand() local
749 if ((o = lookupKeyReadOrReply(c,c->argv[1],shared.emptymultibulk)) == NULL in genericHgetallCommand()
750 || checkType(c,o,OBJ_HASH)) return; in genericHgetallCommand()
755 length = hashTypeLength(o) * multiplier; in genericHgetallCommand()
758 hi = hashTypeInitIterator(o); in genericHgetallCommand()
787 robj *o; in hexistsCommand() local
788 if ((o = lookupKeyReadOrReply(c,c->argv[1],shared.czero)) == NULL || in hexistsCommand()
789 checkType(c,o,OBJ_HASH)) return; in hexistsCommand()
791 addReply(c, hashTypeExists(o,c->argv[2]) ? shared.cone : shared.czero); in hexistsCommand()
795 robj *o; in hscanCommand() local
799 if ((o = lookupKeyReadOrReply(c,c->argv[1],shared.emptyscan)) == NULL || in hscanCommand()
800 checkType(c,o,OBJ_HASH)) return; in hscanCommand()
801 scanGenericCommand(c,o,cursor); in hscanCommand()