@@ -5856,14 +5856,16 @@ int redis_xpending_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
58565856}
58575857
58585858/* X[REV]RANGE key start end [COUNT count] */
5859- int redis_xrange_cmd (INTERNAL_FUNCTION_PARAMETERS , RedisSock * redis_sock ,
5860- char * kw , char * * cmd , int * cmd_len , short * slot ,
5861- void * * ctx )
5859+ static int
5860+ redis_xrange_generic_cmd (INTERNAL_FUNCTION_PARAMETERS , RedisSock * redis_sock ,
5861+ char * kw , zend_bool have_count_literal , char * * cmd ,
5862+ int * cmd_len , short * slot , void * * ctx )
58625863{
58635864 smart_string cmdstr = {0 };
58645865 char * key , * start , * end ;
58655866 size_t keylen , startlen , endlen ;
58665867 zend_long count = -1 ;
5868+ int argc ;
58675869
58685870 if (zend_parse_parameters (ZEND_NUM_ARGS (), "sss |l ", & key , & keylen ,
58695871 & start , & startlen , & end , & endlen , & count )
@@ -5872,13 +5874,16 @@ int redis_xrange_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
58725874 return FAILURE ;
58735875 }
58745876
5875- redis_cmd_init_sstr (& cmdstr , 3 + (2 * (count > -1 )), kw , strlen (kw ));
5877+ argc = 3 + ((have_count_literal ? 2 : 1 ) * (count > -1 ));
5878+ redis_cmd_init_sstr (& cmdstr , argc , kw , strlen (kw ));
5879+
58765880 redis_cmd_append_sstr_key (& cmdstr , key , keylen , redis_sock , slot );
58775881 redis_cmd_append_sstr (& cmdstr , start , startlen );
58785882 redis_cmd_append_sstr (& cmdstr , end , endlen );
58795883
58805884 if (count > -1 ) {
5881- redis_cmd_append_sstr (& cmdstr , ZEND_STRL ("COUNT "));
5885+ if (have_count_literal )
5886+ redis_cmd_append_sstr (& cmdstr , ZEND_STRL ("COUNT" ));
58825887 redis_cmd_append_sstr_long (& cmdstr , count );
58835888 }
58845889
@@ -5887,6 +5892,22 @@ int redis_xrange_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
58875892 return SUCCESS ;
58885893}
58895894
5895+ int redis_xrange_cmd (INTERNAL_FUNCTION_PARAMETERS , RedisSock * redis_sock ,
5896+ char * kw , char * * cmd , int * cmd_len , short * slot ,
5897+ void * * ctx )
5898+ {
5899+ return redis_xrange_generic_cmd (INTERNAL_FUNCTION_PARAM_PASSTHRU ,
5900+ redis_sock , kw , 1 , cmd , cmd_len , slot , ctx );
5901+ }
5902+
5903+ int redis_vrange_cmd (INTERNAL_FUNCTION_PARAMETERS , RedisSock * redis_sock ,
5904+ char * kw , char * * cmd , int * cmd_len , short * slot ,
5905+ void * * ctx )
5906+ {
5907+ return redis_xrange_generic_cmd (INTERNAL_FUNCTION_PARAM_PASSTHRU ,
5908+ redis_sock , kw , 0 , cmd , cmd_len , slot , ctx );
5909+ }
5910+
58905911/* Helper function to take an associative array and append the Redis
58915912 * STREAMS stream [stream...] id [id ...] arguments to a command string. */
58925913static int
0 commit comments