Lines Matching refs:c
418 robj *hashTypeLookupWriteOrCreate(client *c, robj *key) { in hashTypeLookupWriteOrCreate() argument
419 robj *o = lookupKeyWrite(c->db,key); in hashTypeLookupWriteOrCreate()
422 dbAdd(c->db,key,o); in hashTypeLookupWriteOrCreate()
425 addReply(c,shared.wrongtypeerr); in hashTypeLookupWriteOrCreate()
486 void hsetCommand(client *c) { in hsetCommand() argument
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()
494 addReply(c, update ? shared.czero : shared.cone); in hsetCommand()
495 signalModifiedKey(c->db,c->argv[1]); in hsetCommand()
496 notifyKeyspaceEvent(NOTIFY_HASH,"hset",c->argv[1],c->db->id); in hsetCommand()
500 void hsetnxCommand(client *c) { in hsetnxCommand() argument
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()
506 addReply(c, shared.czero); in hsetnxCommand()
508 hashTypeTryObjectEncoding(o,&c->argv[2], &c->argv[3]); in hsetnxCommand()
509 hashTypeSet(o,c->argv[2],c->argv[3]); in hsetnxCommand()
510 addReply(c, shared.cone); in hsetnxCommand()
511 signalModifiedKey(c->db,c->argv[1]); in hsetnxCommand()
512 notifyKeyspaceEvent(NOTIFY_HASH,"hset",c->argv[1],c->db->id); in hsetnxCommand()
517 void hmsetCommand(client *c) { in hmsetCommand() argument
521 if ((c->argc % 2) == 1) { in hmsetCommand()
522 addReplyError(c,"wrong number of arguments for HMSET"); in hmsetCommand()
526 if ((o = hashTypeLookupWriteOrCreate(c,c->argv[1])) == NULL) return; in hmsetCommand()
527 hashTypeTryConversion(o,c->argv,2,c->argc-1); in hmsetCommand()
528 for (i = 2; i < c->argc; i += 2) { 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()
532 addReply(c, shared.ok); in hmsetCommand()
533 signalModifiedKey(c->db,c->argv[1]); in hmsetCommand()
534 notifyKeyspaceEvent(NOTIFY_HASH,"hset",c->argv[1],c->db->id); in hmsetCommand()
538 void hincrbyCommand(client *c) { in hincrbyCommand() argument
542 if (getLongLongFromObjectOrReply(c,c->argv[3],&incr,NULL) != C_OK) return; in hincrbyCommand()
543 if ((o = hashTypeLookupWriteOrCreate(c,c->argv[1])) == NULL) return; in hincrbyCommand()
544 if ((current = hashTypeGetObject(o,c->argv[2])) != NULL) { in hincrbyCommand()
545 if (getLongLongFromObjectOrReply(c,current,&value, in hincrbyCommand()
558 addReplyError(c,"increment or decrement would overflow"); in hincrbyCommand()
563 hashTypeTryObjectEncoding(o,&c->argv[2],NULL); in hincrbyCommand()
564 hashTypeSet(o,c->argv[2],new); in hincrbyCommand()
566 addReplyLongLong(c,value); in hincrbyCommand()
567 signalModifiedKey(c->db,c->argv[1]); in hincrbyCommand()
568 notifyKeyspaceEvent(NOTIFY_HASH,"hincrby",c->argv[1],c->db->id); in hincrbyCommand()
572 void hincrbyfloatCommand(client *c) { in hincrbyfloatCommand() argument
576 if (getLongDoubleFromObjectOrReply(c,c->argv[3],&incr,NULL) != C_OK) return; in hincrbyfloatCommand()
577 if ((o = hashTypeLookupWriteOrCreate(c,c->argv[1])) == NULL) return; in hincrbyfloatCommand()
578 if ((current = hashTypeGetObject(o,c->argv[2])) != NULL) { in hincrbyfloatCommand()
579 if (getLongDoubleFromObjectOrReply(c,current,&value, in hincrbyfloatCommand()
591 hashTypeTryObjectEncoding(o,&c->argv[2],NULL); in hincrbyfloatCommand()
592 hashTypeSet(o,c->argv[2],new); in hincrbyfloatCommand()
593 addReplyBulk(c,new); in hincrbyfloatCommand()
594 signalModifiedKey(c->db,c->argv[1]); in hincrbyfloatCommand()
595 notifyKeyspaceEvent(NOTIFY_HASH,"hincrbyfloat",c->argv[1],c->db->id); in hincrbyfloatCommand()
602 rewriteClientCommandArgument(c,0,aux); in hincrbyfloatCommand()
604 rewriteClientCommandArgument(c,3,new); in hincrbyfloatCommand()
608 static void addHashFieldToReply(client *c, robj *o, robj *field) { in addHashFieldToReply() argument
612 addReply(c, shared.nullbulk); in addHashFieldToReply()
623 addReply(c, shared.nullbulk); in addHashFieldToReply()
626 addReplyBulkCBuffer(c, vstr, vlen); in addHashFieldToReply()
628 addReplyBulkLongLong(c, vll); in addHashFieldToReply()
637 addReply(c, shared.nullbulk); in addHashFieldToReply()
639 addReplyBulk(c, value); in addHashFieldToReply()
647 void hgetCommand(client *c) { in hgetCommand() argument
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()
656 void hmgetCommand(client *c) { in hmgetCommand() argument
662 o = lookupKeyRead(c->db, c->argv[1]); in hmgetCommand()
664 addReply(c, shared.wrongtypeerr); in hmgetCommand()
668 addReplyMultiBulkLen(c, c->argc-2); in hmgetCommand()
669 for (i = 2; i < c->argc; i++) { in hmgetCommand()
670 addHashFieldToReply(c, o, c->argv[i]); in hmgetCommand()
674 void hdelCommand(client *c) { in hdelCommand() argument
678 if ((o = lookupKeyWriteOrReply(c,c->argv[1],shared.czero)) == NULL || in hdelCommand()
679 checkType(c,o,OBJ_HASH)) return; in hdelCommand()
681 for (j = 2; j < c->argc; j++) { in hdelCommand()
682 if (hashTypeDelete(o,c->argv[j])) { in hdelCommand()
685 dbDelete(c->db,c->argv[1]); in hdelCommand()
692 signalModifiedKey(c->db,c->argv[1]); in hdelCommand()
693 notifyKeyspaceEvent(NOTIFY_HASH,"hdel",c->argv[1],c->db->id); in hdelCommand()
695 notifyKeyspaceEvent(NOTIFY_GENERIC,"del",c->argv[1], in hdelCommand()
696 c->db->id); in hdelCommand()
699 addReplyLongLong(c,deleted); in hdelCommand()
702 void hlenCommand(client *c) { in hlenCommand() argument
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()
711 void hstrlenCommand(client *c) { in hstrlenCommand() argument
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()
719 static void addHashIteratorCursorToReply(client *c, hashTypeIterator *hi, int what) { in addHashIteratorCursorToReply() argument
727 addReplyBulkCBuffer(c, vstr, vlen); in addHashIteratorCursorToReply()
729 addReplyBulkLongLong(c, vll); in addHashIteratorCursorToReply()
736 addReplyBulk(c, value); in addHashIteratorCursorToReply()
743 void genericHgetallCommand(client *c, int flags) { in genericHgetallCommand() argument
749 if ((o = lookupKeyReadOrReply(c,c->argv[1],shared.emptymultibulk)) == NULL in genericHgetallCommand()
750 || checkType(c,o,OBJ_HASH)) return; in genericHgetallCommand()
756 addReplyMultiBulkLen(c, length); in genericHgetallCommand()
761 addHashIteratorCursorToReply(c, hi, OBJ_HASH_KEY); in genericHgetallCommand()
765 addHashIteratorCursorToReply(c, hi, OBJ_HASH_VALUE); in genericHgetallCommand()
774 void hkeysCommand(client *c) { in hkeysCommand() argument
775 genericHgetallCommand(c,OBJ_HASH_KEY); in hkeysCommand()
778 void hvalsCommand(client *c) { in hvalsCommand() argument
779 genericHgetallCommand(c,OBJ_HASH_VALUE); in hvalsCommand()
782 void hgetallCommand(client *c) { in hgetallCommand() argument
783 genericHgetallCommand(c,OBJ_HASH_KEY|OBJ_HASH_VALUE); in hgetallCommand()
786 void hexistsCommand(client *c) { in hexistsCommand() argument
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()
794 void hscanCommand(client *c) { in hscanCommand() argument
798 if (parseScanCursorOrReply(c,c->argv[2],&cursor) == C_ERR) return; in hscanCommand()
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()