diff --git a/src/t_zset.c b/src/t_zset.c index 45699bb8..c65ec6d4 100644 --- a/src/t_zset.c +++ b/src/t_zset.c @@ -1308,6 +1308,7 @@ int zsetAdd(robj *zobj, double score, sds ele, int *flags, double *newscore) { zsetConvert(zobj,OBJ_ENCODING_SKIPLIST); if (sdslen(ele) > server.zset_max_ziplist_value) zsetConvert(zobj,OBJ_ENCODING_SKIPLIST); + if (newscore) *newscore = score; *flags |= ZADD_ADDED; return 1; } else { @@ -1359,6 +1360,7 @@ int zsetAdd(robj *zobj, double score, sds ele, int *flags, double *newscore) { znode = zslInsert(zs->zsl,score,ele); serverAssert(dictAdd(zs->dict,ele,&znode->score) == DICT_OK); *flags |= ZADD_ADDED; + if (newscore) *newscore = score; return 1; } else { *flags |= ZADD_NOP; diff --git a/tests/unit/type/zset.tcl b/tests/unit/type/zset.tcl index cc560143..82f76bef 100644 --- a/tests/unit/type/zset.tcl +++ b/tests/unit/type/zset.tcl @@ -290,6 +290,12 @@ start_server {tags {"zset"}} { assert_equal 6 [r zscore zset bar] } + test "ZINCRBY return value" { + r del ztmp + set retval [r zincrby ztmp 1.0 x] + assert {$retval == 1.0} + } + proc create_default_zset {} { create_zset zset {-inf a 1 b 2 c 3 d 4 e 5 f +inf g} }