@@ -3810,15 +3810,16 @@ int redis_xadd_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
38103810 zend_string * arrkey ;
38113811 zval * z_fields , * value ;
38123812 zend_long maxlen = 0 ;
3813- zend_bool approx = 0 ;
3813+ zend_bool approx = 0 , nomkstream = 0 ;
38143814 zend_ulong idx ;
38153815 HashTable * ht_fields ;
38163816 int fcount , argc ;
38173817 char * key , * id ;
38183818 size_t keylen , idlen ;
38193819
3820- if (zend_parse_parameters (ZEND_NUM_ARGS (), "ssa|lb" , & key , & keylen ,
3821- & id , & idlen , & z_fields , & maxlen , & approx ) == FAILURE )
3820+ if (zend_parse_parameters (ZEND_NUM_ARGS (), "ssa|lbb" , & key , & keylen ,
3821+ & id , & idlen , & z_fields , & maxlen , & approx ,
3822+ & nomkstream ) == FAILURE )
38223823 {
38233824 return FAILURE ;
38243825 }
@@ -3838,12 +3839,16 @@ int redis_xadd_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
38383839 /* Calculate argc for XADD. It's a bit complex because we've got
38393840 * an optional MAXLEN argument which can either take the form MAXLEN N
38403841 * or MAXLEN ~ N */
3841- argc = 2 + (fcount * 2 ) + (maxlen > 0 ? (approx ? 3 : 2 ) : 0 );
3842+ argc = 2 + nomkstream + (fcount * 2 ) + (maxlen > 0 ? (approx ? 3 : 2 ) : 0 );
38423843
38433844 /* XADD key ID field string [field string ...] */
38443845 REDIS_CMD_INIT_SSTR_STATIC (& cmdstr , argc , "XADD" );
38453846 redis_cmd_append_sstr_key (& cmdstr , key , keylen , redis_sock , slot );
38463847
3848+ if (nomkstream ) {
3849+ REDIS_CMD_APPEND_SSTR_STATIC (& cmdstr , "NOMKSTREAM" );
3850+ }
3851+
38473852 /* Now append our MAXLEN bits if we've got them */
38483853 if (maxlen > 0 ) {
38493854 REDIS_CMD_APPEND_SSTR_STATIC (& cmdstr , "MAXLEN" );
0 commit comments