diff --git a/src/commands.c b/src/commands.c index 2514c51b6..8933fa247 100644 --- a/src/commands.c +++ b/src/commands.c @@ -10,7 +10,7 @@ /* BITCOUNT history */ commandHistory BITCOUNT_History[] = { -{"7.0","Added the `BYTE|BIT` option."}, +{"7.0.0","Added the `BYTE|BIT` option."}, {0} }; @@ -28,7 +28,7 @@ struct redisCommandArg BITCOUNT_index_index_unit_Subargs[] = { struct redisCommandArg BITCOUNT_index_Subargs[] = { {"start",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE}, {"end",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE}, -{"index_unit",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=BITCOUNT_index_index_unit_Subargs}, +{"index_unit",ARG_TYPE_ONEOF,-1,NULL,NULL,"7.0.0",CMD_ARG_OPTIONAL,.subargs=BITCOUNT_index_index_unit_Subargs}, {0} }; @@ -130,7 +130,7 @@ struct redisCommandArg BITOP_Args[] = { /* BITPOS history */ commandHistory BITPOS_History[] = { -{"7.0","Added the `BYTE|BIT` option."}, +{"7.0.0","Added the `BYTE|BIT` option."}, {0} }; @@ -147,7 +147,7 @@ struct redisCommandArg BITPOS_index_end_index_index_unit_Subargs[] = { /* BITPOS index end_index argument table */ struct redisCommandArg BITPOS_index_end_index_Subargs[] = { {"end",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE}, -{"index_unit",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=BITPOS_index_end_index_index_unit_Subargs}, +{"index_unit",ARG_TYPE_ONEOF,-1,NULL,NULL,"7.0.0",CMD_ARG_OPTIONAL,.subargs=BITPOS_index_end_index_index_unit_Subargs}, {0} }; @@ -533,11 +533,25 @@ struct redisCommandArg CLUSTER_SETSLOT_Args[] = { {0} }; +/********** CLUSTER SLAVES ********************/ + +/* CLUSTER SLAVES history */ +#define CLUSTER_SLAVES_History NULL + +/* CLUSTER SLAVES hints */ +#define CLUSTER_SLAVES_Hints NULL + +/* CLUSTER SLAVES argument table */ +struct redisCommandArg CLUSTER_SLAVES_Args[] = { +{"node-id",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, +{0} +}; + /********** CLUSTER SLOTS ********************/ /* CLUSTER SLOTS history */ commandHistory CLUSTER_SLOTS_History[] = { -{"4.0","Added node IDs."}, +{"4.0.0","Added node IDs."}, {0} }; @@ -570,6 +584,7 @@ struct redisCommand CLUSTER_Subcommands[] = { {"saveconfig","Forces the node to save cluster state on disk","O(1)","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_SAVECONFIG_History,CLUSTER_SAVECONFIG_Hints,clusterCommand,2,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_RANDOM|CMD_STALE,0}, {"set-config-epoch","Set the configuration epoch in a new node","O(1)","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_SET_CONFIG_EPOCH_History,CLUSTER_SET_CONFIG_EPOCH_Hints,clusterCommand,3,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_RANDOM|CMD_STALE,0,.args=CLUSTER_SET_CONFIG_EPOCH_Args}, {"setslot","Bind a hash slot to a specific node","O(1)","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_SETSLOT_History,CLUSTER_SETSLOT_Hints,clusterCommand,-4,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_RANDOM|CMD_STALE,0,.args=CLUSTER_SETSLOT_Args}, +{"slaves","List replica nodes of the specified master node","O(1)","3.0.0",CMD_DOC_NONE,"`CLUSTER REPLICAS`","5.0.0",COMMAND_GROUP_CLUSTER,CLUSTER_SLAVES_History,CLUSTER_SLAVES_Hints,clusterCommand,3,CMD_ADMIN|CMD_RANDOM|CMD_STALE,0,.args=CLUSTER_SLAVES_Args}, {"slots","Get array of Cluster slot to node mappings","O(N) where N is the total number of Cluster nodes","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_SLOTS_History,CLUSTER_SLOTS_Hints,clusterCommand,2,CMD_RANDOM|CMD_STALE,0}, {0} }; @@ -611,7 +626,7 @@ commandHistory AUTH_History[] = { /* AUTH argument table */ struct redisCommandArg AUTH_Args[] = { -{"username",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL}, +{"username",ARG_TYPE_STRING,-1,NULL,NULL,"6.0.0",CMD_ARG_OPTIONAL}, {"password",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, {0} }; @@ -681,11 +696,11 @@ struct redisCommandArg CLIENT_CACHING_Args[] = { /* CLIENT KILL history */ commandHistory CLIENT_KILL_History[] = { -{"2.8.12","Added new filter format. "}, +{"2.8.12","Added new filter format."}, {"2.8.12","`ID` option."}, -{"3.2","Added `master` type in for `TYPE` option."}, -{"5","Replaced `slave` `TYPE` with `replica`. `slave` still supported for backward compatibility."}, -{"6.2","`LADDR` option."}, +{"3.2.0","Added `master` type in for `TYPE` option."}, +{"5.0.0","Replaced `slave` `TYPE` with `replica`. `slave` still supported for backward compatibility."}, +{"6.2.0","`LADDR` option."}, {0} }; @@ -695,8 +710,9 @@ commandHistory CLIENT_KILL_History[] = { /* CLIENT KILL normal_master_slave_pubsub argument table */ struct redisCommandArg CLIENT_KILL_normal_master_slave_pubsub_Subargs[] = { {"normal",ARG_TYPE_PURE_TOKEN,-1,"NORMAL",NULL,NULL,CMD_ARG_NONE}, -{"master",ARG_TYPE_PURE_TOKEN,-1,"MASTER",NULL,NULL,CMD_ARG_NONE}, +{"master",ARG_TYPE_PURE_TOKEN,-1,"MASTER",NULL,"3.2.0",CMD_ARG_NONE}, {"slave",ARG_TYPE_PURE_TOKEN,-1,"SLAVE",NULL,NULL,CMD_ARG_NONE}, +{"replica",ARG_TYPE_PURE_TOKEN,-1,"REPLICA",NULL,"5.0.0",CMD_ARG_NONE}, {"pubsub",ARG_TYPE_PURE_TOKEN,-1,"PUBSUB",NULL,NULL,CMD_ARG_NONE}, {0} }; @@ -704,11 +720,11 @@ struct redisCommandArg CLIENT_KILL_normal_master_slave_pubsub_Subargs[] = { /* CLIENT KILL argument table */ struct redisCommandArg CLIENT_KILL_Args[] = { {"ip:port",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL}, -{"client-id",ARG_TYPE_INTEGER,-1,"ID",NULL,NULL,CMD_ARG_OPTIONAL}, -{"normal_master_slave_pubsub",ARG_TYPE_ONEOF,-1,"TYPE",NULL,NULL,CMD_ARG_OPTIONAL,.subargs=CLIENT_KILL_normal_master_slave_pubsub_Subargs}, +{"client-id",ARG_TYPE_INTEGER,-1,"ID",NULL,"2.8.12",CMD_ARG_OPTIONAL}, +{"normal_master_slave_pubsub",ARG_TYPE_ONEOF,-1,"TYPE",NULL,"2.8.12",CMD_ARG_OPTIONAL,.subargs=CLIENT_KILL_normal_master_slave_pubsub_Subargs}, {"username",ARG_TYPE_STRING,-1,"USER",NULL,NULL,CMD_ARG_OPTIONAL}, {"ip:port",ARG_TYPE_STRING,-1,"ADDR",NULL,NULL,CMD_ARG_OPTIONAL}, -{"ip:port",ARG_TYPE_STRING,-1,"LADDR",NULL,NULL,CMD_ARG_OPTIONAL}, +{"ip:port",ARG_TYPE_STRING,-1,"LADDR",NULL,"6.2.0",CMD_ARG_OPTIONAL}, {"yes/no",ARG_TYPE_STRING,-1,"SKIPME",NULL,NULL,CMD_ARG_OPTIONAL}, {0} }; @@ -718,8 +734,8 @@ struct redisCommandArg CLIENT_KILL_Args[] = { /* CLIENT LIST history */ commandHistory CLIENT_LIST_History[] = { {"2.8.12","Added unique client `id` field."}, -{"5.0","Added optional `TYPE` filter."}, -{"6.2","Added `laddr` field and the optional `ID` filter."}, +{"5.0.0","Added optional `TYPE` filter."}, +{"6.2.0","Added `laddr` field and the optional `ID` filter."}, {0} }; @@ -743,8 +759,8 @@ struct redisCommandArg CLIENT_LIST_id_Subargs[] = { /* CLIENT LIST argument table */ struct redisCommandArg CLIENT_LIST_Args[] = { -{"normal_master_replica_pubsub",ARG_TYPE_ONEOF,-1,"TYPE",NULL,NULL,CMD_ARG_OPTIONAL,.subargs=CLIENT_LIST_normal_master_replica_pubsub_Subargs}, -{"id",ARG_TYPE_BLOCK,-1,"ID",NULL,NULL,CMD_ARG_OPTIONAL,.subargs=CLIENT_LIST_id_Subargs}, +{"normal_master_replica_pubsub",ARG_TYPE_ONEOF,-1,"TYPE",NULL,"5.0.0",CMD_ARG_OPTIONAL,.subargs=CLIENT_LIST_normal_master_replica_pubsub_Subargs}, +{"id",ARG_TYPE_BLOCK,-1,"ID",NULL,"6.2.0",CMD_ARG_OPTIONAL,.subargs=CLIENT_LIST_id_Subargs}, {0} }; @@ -774,7 +790,7 @@ struct redisCommandArg CLIENT_NO_EVICT_Args[] = { /* CLIENT PAUSE history */ commandHistory CLIENT_PAUSE_History[] = { {"3.2.10","Client pause prevents client pause and key eviction as well."}, -{"6.2","CLIENT PAUSE WRITE mode added along with the `mode` option."}, +{"6.2.0","`CLIENT PAUSE WRITE` mode added along with the `mode` option."}, {0} }; @@ -791,7 +807,7 @@ struct redisCommandArg CLIENT_PAUSE_mode_Subargs[] = { /* CLIENT PAUSE argument table */ struct redisCommandArg CLIENT_PAUSE_Args[] = { {"timeout",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE}, -{"mode",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=CLIENT_PAUSE_mode_Subargs}, +{"mode",ARG_TYPE_ONEOF,-1,NULL,NULL,"6.2.0",CMD_ARG_OPTIONAL,.subargs=CLIENT_PAUSE_mode_Subargs}, {0} }; @@ -943,7 +959,7 @@ struct redisCommandArg ECHO_Args[] = { /* HELLO history */ commandHistory HELLO_History[] = { -{"6.2","`protover` made optional; when called without arguments the command reports the current connection's context."}, +{"6.2.0","`protover` made optional; when called without arguments the command reports the current connection's context."}, {0} }; @@ -1063,7 +1079,10 @@ struct redisCommandArg DUMP_Args[] = { /********** EXISTS ********************/ /* EXISTS history */ -#define EXISTS_History NULL +commandHistory EXISTS_History[] = { +{"3.0.3","Accepts multiple `key` arguments."}, +{0} +}; /* EXISTS hints */ #define EXISTS_Hints NULL @@ -1078,7 +1097,7 @@ struct redisCommandArg EXISTS_Args[] = { /* EXPIRE history */ commandHistory EXPIRE_History[] = { -{"7.0","Added options: `NX`, `XX`, `GT` and `LT`."}, +{"7.0.0","Added options: `NX`, `XX`, `GT` and `LT`."}, {0} }; @@ -1098,7 +1117,7 @@ struct redisCommandArg EXPIRE_condition_Subargs[] = { struct redisCommandArg EXPIRE_Args[] = { {"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE}, {"seconds",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE}, -{"condition",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=EXPIRE_condition_Subargs}, +{"condition",ARG_TYPE_ONEOF,-1,NULL,NULL,"7.0.0",CMD_ARG_OPTIONAL,.subargs=EXPIRE_condition_Subargs}, {0} }; @@ -1106,7 +1125,7 @@ struct redisCommandArg EXPIRE_Args[] = { /* EXPIREAT history */ commandHistory EXPIREAT_History[] = { -{"7.0","Added options: `NX`, `XX`, `GT` and `LT`."}, +{"7.0.0","Added options: `NX`, `XX`, `GT` and `LT`."}, {0} }; @@ -1126,7 +1145,7 @@ struct redisCommandArg EXPIREAT_condition_Subargs[] = { struct redisCommandArg EXPIREAT_Args[] = { {"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE}, {"timestamp",ARG_TYPE_UNIX_TIME,-1,NULL,NULL,NULL,CMD_ARG_NONE}, -{"condition",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=EXPIREAT_condition_Subargs}, +{"condition",ARG_TYPE_ONEOF,-1,NULL,NULL,"7.0.0",CMD_ARG_OPTIONAL,.subargs=EXPIREAT_condition_Subargs}, {0} }; @@ -1193,11 +1212,11 @@ struct redisCommandArg MIGRATE_Args[] = { {"key_or_empty_string",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=MIGRATE_key_or_empty_string_Subargs}, {"destination-db",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE}, {"timeout",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE}, -{"copy",ARG_TYPE_PURE_TOKEN,-1,"COPY",NULL,NULL,CMD_ARG_OPTIONAL}, -{"replace",ARG_TYPE_PURE_TOKEN,-1,"REPLACE",NULL,NULL,CMD_ARG_OPTIONAL}, -{"password",ARG_TYPE_STRING,-1,"AUTH",NULL,NULL,CMD_ARG_OPTIONAL}, -{"username_password",ARG_TYPE_BLOCK,-1,"AUTH2",NULL,NULL,CMD_ARG_OPTIONAL,.subargs=MIGRATE_username_password_Subargs}, -{"key",ARG_TYPE_KEY,1,"KEYS",NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE}, +{"copy",ARG_TYPE_PURE_TOKEN,-1,"COPY",NULL,"3.0.0",CMD_ARG_OPTIONAL}, +{"replace",ARG_TYPE_PURE_TOKEN,-1,"REPLACE",NULL,"3.0.0",CMD_ARG_OPTIONAL}, +{"password",ARG_TYPE_STRING,-1,"AUTH",NULL,"4.0.7",CMD_ARG_OPTIONAL}, +{"username_password",ARG_TYPE_BLOCK,-1,"AUTH2",NULL,"6.0.0",CMD_ARG_OPTIONAL,.subargs=MIGRATE_username_password_Subargs}, +{"key",ARG_TYPE_KEY,1,"KEYS",NULL,"3.0.6",CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE}, {0} }; @@ -1316,7 +1335,7 @@ struct redisCommandArg PERSIST_Args[] = { /* PEXPIRE history */ commandHistory PEXPIRE_History[] = { -{"7.0","Added options: `NX`, `XX`, `GT` and `LT`."}, +{"7.0.0","Added options: `NX`, `XX`, `GT` and `LT`."}, {0} }; @@ -1336,7 +1355,7 @@ struct redisCommandArg PEXPIRE_condition_Subargs[] = { struct redisCommandArg PEXPIRE_Args[] = { {"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE}, {"milliseconds",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE}, -{"condition",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=PEXPIRE_condition_Subargs}, +{"condition",ARG_TYPE_ONEOF,-1,NULL,NULL,"7.0.0",CMD_ARG_OPTIONAL,.subargs=PEXPIRE_condition_Subargs}, {0} }; @@ -1344,7 +1363,7 @@ struct redisCommandArg PEXPIRE_Args[] = { /* PEXPIREAT history */ commandHistory PEXPIREAT_History[] = { -{"7.0","Added options: `NX`, `XX`, `GT` and `LT`."}, +{"7.0.0","Added options: `NX`, `XX`, `GT` and `LT`."}, {0} }; @@ -1364,7 +1383,7 @@ struct redisCommandArg PEXPIREAT_condition_Subargs[] = { struct redisCommandArg PEXPIREAT_Args[] = { {"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE}, {"milliseconds-timestamp",ARG_TYPE_UNIX_TIME,-1,NULL,NULL,NULL,CMD_ARG_NONE}, -{"condition",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=PEXPIREAT_condition_Subargs}, +{"condition",ARG_TYPE_ONEOF,-1,NULL,NULL,"7.0.0",CMD_ARG_OPTIONAL,.subargs=PEXPIREAT_condition_Subargs}, {0} }; @@ -1385,7 +1404,10 @@ struct redisCommandArg PEXPIRETIME_Args[] = { /********** PTTL ********************/ /* PTTL history */ -#define PTTL_History NULL +commandHistory PTTL_History[] = { +{"2.8.0","Added the -2 reply."}, +{0} +}; /* PTTL hints */ #define PTTL_Hints NULL @@ -1407,7 +1429,10 @@ struct redisCommandArg PTTL_Args[] = { /********** RENAME ********************/ /* RENAME history */ -#define RENAME_History NULL +commandHistory RENAME_History[] = { +{"3.2.0","The command no longer returns an error when source and destination names are the same."}, +{0} +}; /* RENAME hints */ #define RENAME_Hints NULL @@ -1422,7 +1447,10 @@ struct redisCommandArg RENAME_Args[] = { /********** RENAMENX ********************/ /* RENAMENX history */ -#define RENAMENX_History NULL +commandHistory RENAMENX_History[] = { +{"3.2.0","The command no longer returns an error when source and destination names are the same."}, +{0} +}; /* RENAMENX hints */ #define RENAMENX_Hints NULL @@ -1437,7 +1465,12 @@ struct redisCommandArg RENAMENX_Args[] = { /********** RESTORE ********************/ /* RESTORE history */ -#define RESTORE_History NULL +commandHistory RESTORE_History[] = { +{"3.0.0","Added the `REPLACE` modifier."}, +{"5.0.0","Added the `ABSTTL` modifier."}, +{"5.0.0","Added the `IDLETIME` and `FREQ` options."}, +{0} +}; /* RESTORE hints */ #define RESTORE_Hints NULL @@ -1447,17 +1480,20 @@ struct redisCommandArg RESTORE_Args[] = { {"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE}, {"ttl",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE}, {"serialized-value",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, -{"replace",ARG_TYPE_PURE_TOKEN,-1,"REPLACE",NULL,NULL,CMD_ARG_OPTIONAL}, -{"absttl",ARG_TYPE_PURE_TOKEN,-1,"ABSTTL",NULL,NULL,CMD_ARG_OPTIONAL}, -{"seconds",ARG_TYPE_INTEGER,-1,"IDLETIME",NULL,NULL,CMD_ARG_OPTIONAL}, -{"frequency",ARG_TYPE_INTEGER,-1,"FREQ",NULL,NULL,CMD_ARG_OPTIONAL}, +{"replace",ARG_TYPE_PURE_TOKEN,-1,"REPLACE",NULL,"3.0.0",CMD_ARG_OPTIONAL}, +{"absttl",ARG_TYPE_PURE_TOKEN,-1,"ABSTTL",NULL,"5.0.0",CMD_ARG_OPTIONAL}, +{"seconds",ARG_TYPE_INTEGER,-1,"IDLETIME",NULL,"5.0.0",CMD_ARG_OPTIONAL}, +{"frequency",ARG_TYPE_INTEGER,-1,"FREQ",NULL,"5.0.0",CMD_ARG_OPTIONAL}, {0} }; /********** SCAN ********************/ /* SCAN history */ -#define SCAN_History NULL +commandHistory SCAN_History[] = { +{"6.0.0","Added the `TYPE` subcommand."}, +{0} +}; /* SCAN hints */ #define SCAN_Hints NULL @@ -1467,7 +1503,7 @@ struct redisCommandArg SCAN_Args[] = { {"cursor",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE}, {"pattern",ARG_TYPE_PATTERN,-1,"MATCH",NULL,NULL,CMD_ARG_OPTIONAL}, {"count",ARG_TYPE_INTEGER,-1,"COUNT",NULL,NULL,CMD_ARG_OPTIONAL}, -{"type",ARG_TYPE_STRING,-1,"TYPE",NULL,NULL,CMD_ARG_OPTIONAL}, +{"type",ARG_TYPE_STRING,-1,"TYPE",NULL,"6.0.0",CMD_ARG_OPTIONAL}, {0} }; @@ -1555,7 +1591,10 @@ struct redisCommandArg TOUCH_Args[] = { /********** TTL ********************/ /* TTL history */ -#define TTL_History NULL +commandHistory TTL_History[] = { +{"2.8.0","Added the -2 reply."}, +{0} +}; /* TTL hints */ #define TTL_Hints NULL @@ -1613,7 +1652,7 @@ struct redisCommandArg WAIT_Args[] = { /* GEOADD history */ commandHistory GEOADD_History[] = { -{"6.2","Added the `CH`, `NX` and `XX` options."}, +{"6.2.0","Added the `CH`, `NX` and `XX` options."}, {0} }; @@ -1638,8 +1677,8 @@ struct redisCommandArg GEOADD_longitude_latitude_member_Subargs[] = { /* GEOADD argument table */ struct redisCommandArg GEOADD_Args[] = { {"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE}, -{"condition",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=GEOADD_condition_Subargs}, -{"change",ARG_TYPE_PURE_TOKEN,-1,"CH",NULL,NULL,CMD_ARG_OPTIONAL}, +{"condition",ARG_TYPE_ONEOF,-1,NULL,NULL,"6.2.0",CMD_ARG_OPTIONAL,.subargs=GEOADD_condition_Subargs}, +{"change",ARG_TYPE_PURE_TOKEN,-1,"CH",NULL,"6.2.0",CMD_ARG_OPTIONAL}, {"longitude_latitude_member",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE,.subargs=GEOADD_longitude_latitude_member_Subargs}, {0} }; @@ -1704,7 +1743,7 @@ struct redisCommandArg GEOPOS_Args[] = { /* GEORADIUS history */ commandHistory GEORADIUS_History[] = { -{"6.2","Added the `ANY` option for `COUNT`."}, +{"6.2.0","Added the `ANY` option for `COUNT`."}, {0} }; @@ -1723,7 +1762,7 @@ struct redisCommandArg GEORADIUS_unit_Subargs[] = { /* GEORADIUS count argument table */ struct redisCommandArg GEORADIUS_count_Subargs[] = { {"count",ARG_TYPE_INTEGER,-1,"COUNT",NULL,NULL,CMD_ARG_NONE}, -{"any",ARG_TYPE_PURE_TOKEN,-1,"ANY",NULL,NULL,CMD_ARG_OPTIONAL}, +{"any",ARG_TYPE_PURE_TOKEN,-1,"ANY",NULL,"6.2.0",CMD_ARG_OPTIONAL}, {0} }; @@ -2045,7 +2084,10 @@ struct redisCommandArg GEOSEARCHSTORE_Args[] = { /********** HDEL ********************/ /* HDEL history */ -#define HDEL_History NULL +commandHistory HDEL_History[] = { +{"2.4.0","Accepts multiple `field` arguments."}, +{0} +}; /* HDEL hints */ #define HDEL_Hints NULL @@ -2240,7 +2282,10 @@ struct redisCommandArg HSCAN_Args[] = { /********** HSET ********************/ /* HSET history */ -#define HSET_History NULL +commandHistory HSET_History[] = { +{"4.0.0","Accepts multiple `field` and `value` arguments."}, +{0} +}; /* HSET hints */ #define HSET_Hints NULL @@ -2425,7 +2470,7 @@ struct redisCommandArg BLMPOP_Args[] = { /* BLPOP history */ commandHistory BLPOP_History[] = { -{"6.0","`timeout` is interpreted as a double instead of an integer."}, +{"6.0.0","`timeout` is interpreted as a double instead of an integer."}, {0} }; @@ -2443,7 +2488,7 @@ struct redisCommandArg BLPOP_Args[] = { /* BRPOP history */ commandHistory BRPOP_History[] = { -{"6.0","`timeout` is interpreted as a double instead of an integer."}, +{"6.0.0","`timeout` is interpreted as a double instead of an integer."}, {0} }; @@ -2461,7 +2506,7 @@ struct redisCommandArg BRPOP_Args[] = { /* BRPOPLPUSH history */ commandHistory BRPOPLPUSH_History[] = { -{"6.0","`timeout` is interpreted as a double instead of an integer."}, +{"6.0.0","`timeout` is interpreted as a double instead of an integer."}, {0} }; @@ -2588,7 +2633,7 @@ struct redisCommandArg LMPOP_Args[] = { /* LPOP history */ commandHistory LPOP_History[] = { -{"6.2","Added the `count` argument."}, +{"6.2.0","Added the `count` argument."}, {0} }; @@ -2598,7 +2643,7 @@ commandHistory LPOP_History[] = { /* LPOP argument table */ struct redisCommandArg LPOP_Args[] = { {"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE}, -{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL}, +{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,"6.2.0",CMD_ARG_OPTIONAL}, {0} }; @@ -2624,7 +2669,7 @@ struct redisCommandArg LPOS_Args[] = { /* LPUSH history */ commandHistory LPUSH_History[] = { -{"2.4","Accepts multiple `element` arguments."}, +{"2.4.0","Accepts multiple `element` arguments."}, {0} }; @@ -2642,7 +2687,7 @@ struct redisCommandArg LPUSH_Args[] = { /* LPUSHX history */ commandHistory LPUSHX_History[] = { -{"4.0","Accepts multiple `element` arguments."}, +{"4.0.0","Accepts multiple `element` arguments."}, {0} }; @@ -2724,7 +2769,7 @@ struct redisCommandArg LTRIM_Args[] = { /* RPOP history */ commandHistory RPOP_History[] = { -{"6.2","Added the `count` argument."}, +{"6.2.0","Added the `count` argument."}, {0} }; @@ -2734,7 +2779,7 @@ commandHistory RPOP_History[] = { /* RPOP argument table */ struct redisCommandArg RPOP_Args[] = { {"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE}, -{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL}, +{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,"6.2.0",CMD_ARG_OPTIONAL}, {0} }; @@ -2757,7 +2802,7 @@ struct redisCommandArg RPOPLPUSH_Args[] = { /* RPUSH history */ commandHistory RPUSH_History[] = { -{"2.4","Accepts multiple `element` arguments."}, +{"2.4.0","Accepts multiple `element` arguments."}, {0} }; @@ -2775,7 +2820,7 @@ struct redisCommandArg RPUSH_Args[] = { /* RPUSHX history */ commandHistory RPUSHX_History[] = { -{"4.0","Accepts multiple `element` arguments."}, +{"4.0.0","Accepts multiple `element` arguments."}, {0} }; @@ -2903,7 +2948,7 @@ struct redisCommandArg PUNSUBSCRIBE_Args[] = { /* SUBSCRIBE history */ commandHistory SUBSCRIBE_History[] = { -{"6.2","`RESET` can be called to exit subscribed state."}, +{"6.2.0","`RESET` can be called to exit subscribed state."}, {0} }; @@ -3242,7 +3287,7 @@ struct redisCommandArg SCRIPT_FLUSH_async_Subargs[] = { /* SCRIPT FLUSH argument table */ struct redisCommandArg SCRIPT_FLUSH_Args[] = { -{"async",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=SCRIPT_FLUSH_async_Subargs}, +{"async",ARG_TYPE_ONEOF,-1,NULL,NULL,"6.2.0",CMD_ARG_OPTIONAL,.subargs=SCRIPT_FLUSH_async_Subargs}, {0} }; @@ -3534,7 +3579,7 @@ struct redisCommandArg ACL_GENPASS_Args[] = { /* ACL GETUSER history */ commandHistory ACL_GETUSER_History[] = { -{"6.2","Added Pub/Sub channel patterns."}, +{"6.2.0","Added Pub/Sub channel patterns."}, {0} }; @@ -3604,7 +3649,7 @@ struct redisCommandArg ACL_LOG_Args[] = { /* ACL SETUSER history */ commandHistory ACL_SETUSER_History[] = { -{"6.2","Added Pub/Sub channel patterns."}, +{"6.2.0","Added Pub/Sub channel patterns."}, {0} }; @@ -3680,7 +3725,7 @@ commandHistory BGSAVE_History[] = { /* BGSAVE argument table */ struct redisCommandArg BGSAVE_Args[] = { -{"schedule",ARG_TYPE_PURE_TOKEN,-1,"SCHEDULE",NULL,NULL,CMD_ARG_OPTIONAL}, +{"schedule",ARG_TYPE_PURE_TOKEN,-1,"SCHEDULE",NULL,"3.2.2",CMD_ARG_OPTIONAL}, {0} }; @@ -3905,8 +3950,8 @@ commandHistory FLUSHALL_History[] = { /* FLUSHALL async argument table */ struct redisCommandArg FLUSHALL_async_Subargs[] = { -{"async",ARG_TYPE_PURE_TOKEN,-1,"ASYNC",NULL,NULL,CMD_ARG_NONE}, -{"sync",ARG_TYPE_PURE_TOKEN,-1,"SYNC",NULL,NULL,CMD_ARG_NONE}, +{"async",ARG_TYPE_PURE_TOKEN,-1,"ASYNC",NULL,"4.0.0",CMD_ARG_NONE}, +{"sync",ARG_TYPE_PURE_TOKEN,-1,"SYNC",NULL,"6.2.0",CMD_ARG_NONE}, {0} }; @@ -3919,15 +3964,19 @@ struct redisCommandArg FLUSHALL_Args[] = { /********** FLUSHDB ********************/ /* FLUSHDB history */ -#define FLUSHDB_History NULL +commandHistory FLUSHDB_History[] = { +{"4.0.0","Added the `ASYNC` flushing mode modifier."}, +{"6.2.0","Added the `SYNC` flushing mode modifier and the **lazyfree-lazy-user-flush** configuration directive."}, +{0} +}; /* FLUSHDB hints */ #define FLUSHDB_Hints NULL /* FLUSHDB async argument table */ struct redisCommandArg FLUSHDB_async_Subargs[] = { -{"async",ARG_TYPE_PURE_TOKEN,-1,"ASYNC",NULL,NULL,CMD_ARG_NONE}, -{"sync",ARG_TYPE_PURE_TOKEN,-1,"SYNC",NULL,NULL,CMD_ARG_NONE}, +{"async",ARG_TYPE_PURE_TOKEN,-1,"ASYNC",NULL,"4.0.0",CMD_ARG_NONE}, +{"sync",ARG_TYPE_PURE_TOKEN,-1,"SYNC",NULL,"6.2.0",CMD_ARG_NONE}, {0} }; @@ -4198,8 +4247,8 @@ struct redisCommand MODULE_Subcommands[] = { /* MONITOR history */ commandHistory MONITOR_History[] = { -{"6.0","`AUTH` excluded from the command's output."}, -{"6.2","`RESET` can be called to exit monitor mode."}, +{"6.0.0","`AUTH` excluded from the command's output."}, +{"6.2.0","`RESET` can be called to exit monitor mode."}, {"6.2.4","`AUTH`, `HELLO`, `EVAL`, `EVAL_RO`, `EVALSHA` and `EVALSHA_RO` included in the command's output."}, {0} }; @@ -4309,7 +4358,7 @@ struct redisCommandArg SLAVEOF_Args[] = { /* SLOWLOG GET history */ commandHistory SLOWLOG_GET_History[] = { -{"4.0","Added client IP address, port and name to the reply."}, +{"4.0.0","Added client IP address, port and name to the reply."}, {0} }; @@ -4398,7 +4447,7 @@ struct redisCommandArg SWAPDB_Args[] = { /* SADD history */ commandHistory SADD_History[] = { -{"2.4","Accepts multiple `member` arguments."}, +{"2.4.0","Accepts multiple `member` arguments."}, {0} }; @@ -4564,7 +4613,7 @@ struct redisCommandArg SMOVE_Args[] = { /* SPOP history */ commandHistory SPOP_History[] = { -{"3.2","Added the `count` argument."}, +{"3.2.0","Added the `count` argument."}, {0} }; @@ -4574,7 +4623,7 @@ commandHistory SPOP_History[] = { /* SPOP argument table */ struct redisCommandArg SPOP_Args[] = { {"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE}, -{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL}, +{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,"3.2.0",CMD_ARG_OPTIONAL}, {0} }; @@ -4592,7 +4641,7 @@ commandHistory SRANDMEMBER_History[] = { /* SRANDMEMBER argument table */ struct redisCommandArg SRANDMEMBER_Args[] = { {"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE}, -{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL}, +{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,"2.6.0",CMD_ARG_OPTIONAL}, {0} }; @@ -4600,7 +4649,7 @@ struct redisCommandArg SRANDMEMBER_Args[] = { /* SREM history */ commandHistory SREM_History[] = { -{"2.4","Accepts multiple `member` arguments."}, +{"2.4.0","Accepts multiple `member` arguments."}, {0} }; @@ -4689,7 +4738,7 @@ struct redisCommandArg BZMPOP_Args[] = { /* BZPOPMAX history */ commandHistory BZPOPMAX_History[] = { -{"6.0","`timeout` is interpreted as a double instead of an integer."}, +{"6.0.0","`timeout` is interpreted as a double instead of an integer."}, {0} }; @@ -4707,7 +4756,7 @@ struct redisCommandArg BZPOPMAX_Args[] = { /* BZPOPMIN history */ commandHistory BZPOPMIN_History[] = { -{"6.0","`timeout` is interpreted as a double instead of an integer."}, +{"6.0.0","`timeout` is interpreted as a double instead of an integer."}, {0} }; @@ -4725,9 +4774,9 @@ struct redisCommandArg BZPOPMIN_Args[] = { /* ZADD history */ commandHistory ZADD_History[] = { -{"2.4","Accepts multiple elements."}, +{"2.4.0","Accepts multiple elements."}, {"3.0.2","Added the `XX`, `NX`, `CH` and `INCR` options."}, -{"6.2","Added the `GT` and `LT` options."}, +{"6.2.0","Added the `GT` and `LT` options."}, {0} }; @@ -4758,10 +4807,10 @@ struct redisCommandArg ZADD_score_member_Subargs[] = { /* ZADD argument table */ struct redisCommandArg ZADD_Args[] = { {"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE}, -{"condition",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=ZADD_condition_Subargs}, -{"comparison",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=ZADD_comparison_Subargs}, -{"change",ARG_TYPE_PURE_TOKEN,-1,"CH",NULL,NULL,CMD_ARG_OPTIONAL}, -{"increment",ARG_TYPE_PURE_TOKEN,-1,"INCR",NULL,NULL,CMD_ARG_OPTIONAL}, +{"condition",ARG_TYPE_ONEOF,-1,NULL,NULL,"6.2.0",CMD_ARG_OPTIONAL,.subargs=ZADD_condition_Subargs}, +{"comparison",ARG_TYPE_ONEOF,-1,NULL,NULL,"3.0.2",CMD_ARG_OPTIONAL,.subargs=ZADD_comparison_Subargs}, +{"change",ARG_TYPE_PURE_TOKEN,-1,"CH",NULL,"3.0.2",CMD_ARG_OPTIONAL}, +{"increment",ARG_TYPE_PURE_TOKEN,-1,"INCR",NULL,"3.0.2",CMD_ARG_OPTIONAL}, {"score_member",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE,.subargs=ZADD_score_member_Subargs}, {0} }; @@ -5023,7 +5072,7 @@ struct redisCommandArg ZRANDMEMBER_Args[] = { /* ZRANGE history */ commandHistory ZRANGE_History[] = { -{"6.2","Added the `REV`, `BYSCORE`, `BYLEX` and `LIMIT` options."}, +{"6.2.0","Added the `REV`, `BYSCORE`, `BYLEX` and `LIMIT` options."}, {0} }; @@ -5049,9 +5098,9 @@ struct redisCommandArg ZRANGE_Args[] = { {"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE}, {"min",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, {"max",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, -{"sortby",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=ZRANGE_sortby_Subargs}, -{"rev",ARG_TYPE_PURE_TOKEN,-1,"REV",NULL,NULL,CMD_ARG_OPTIONAL}, -{"offset_count",ARG_TYPE_BLOCK,-1,"LIMIT",NULL,NULL,CMD_ARG_OPTIONAL,.subargs=ZRANGE_offset_count_Subargs}, +{"sortby",ARG_TYPE_ONEOF,-1,NULL,NULL,"6.2.0",CMD_ARG_OPTIONAL,.subargs=ZRANGE_sortby_Subargs}, +{"rev",ARG_TYPE_PURE_TOKEN,-1,"REV",NULL,"6.2.0",CMD_ARG_OPTIONAL}, +{"offset_count",ARG_TYPE_BLOCK,-1,"LIMIT",NULL,"6.2.0",CMD_ARG_OPTIONAL,.subargs=ZRANGE_offset_count_Subargs}, {"withscores",ARG_TYPE_PURE_TOKEN,-1,"WITHSCORES",NULL,NULL,CMD_ARG_OPTIONAL}, {0} }; @@ -5083,7 +5132,10 @@ struct redisCommandArg ZRANGEBYLEX_Args[] = { /********** ZRANGEBYSCORE ********************/ /* ZRANGEBYSCORE history */ -#define ZRANGEBYSCORE_History NULL +commandHistory ZRANGEBYSCORE_History[] = { +{"2.0.0","Added the `WITHSCORES` modifier."}, +{0} +}; /* ZRANGEBYSCORE hints */ #define ZRANGEBYSCORE_Hints NULL @@ -5100,7 +5152,7 @@ struct redisCommandArg ZRANGEBYSCORE_Args[] = { {"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE}, {"min",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE}, {"max",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE}, -{"withscores",ARG_TYPE_PURE_TOKEN,-1,"WITHSCORES",NULL,NULL,CMD_ARG_OPTIONAL}, +{"withscores",ARG_TYPE_PURE_TOKEN,-1,"WITHSCORES",NULL,"2.0.0",CMD_ARG_OPTIONAL}, {"offset_count",ARG_TYPE_BLOCK,-1,"LIMIT",NULL,NULL,CMD_ARG_OPTIONAL,.subargs=ZRANGEBYSCORE_offset_count_Subargs}, {0} }; @@ -5158,7 +5210,7 @@ struct redisCommandArg ZRANK_Args[] = { /* ZREM history */ commandHistory ZREM_History[] = { -{"2.4","Accepts multiple elements."}, +{"2.4.0","Accepts multiple elements."}, {0} }; @@ -5264,7 +5316,10 @@ struct redisCommandArg ZREVRANGEBYLEX_Args[] = { /********** ZREVRANGEBYSCORE ********************/ /* ZREVRANGEBYSCORE history */ -#define ZREVRANGEBYSCORE_History NULL +commandHistory ZREVRANGEBYSCORE_History[] = { +{"2.1.6","`min` and `max` can be exclusive."}, +{0} +}; /* ZREVRANGEBYSCORE hints */ #define ZREVRANGEBYSCORE_Hints NULL @@ -5405,8 +5460,8 @@ struct redisCommandArg XACK_Args[] = { /* XADD history */ commandHistory XADD_History[] = { -{"6.2","Added the `NOMKSTREAM` option, `MINID` trimming strategy and the `LIMIT` option."}, -{"7.0","Added support for the `-*` explicit ID form."}, +{"6.2.0","Added the `NOMKSTREAM` option, `MINID` trimming strategy and the `LIMIT` option."}, +{"7.0.0","Added support for the `-*` explicit ID form."}, {0} }; @@ -5416,7 +5471,7 @@ commandHistory XADD_History[] = { /* XADD trim strategy argument table */ struct redisCommandArg XADD_trim_strategy_Subargs[] = { {"maxlen",ARG_TYPE_PURE_TOKEN,-1,"MAXLEN",NULL,NULL,CMD_ARG_NONE}, -{"minid",ARG_TYPE_PURE_TOKEN,-1,"MINID",NULL,"6.2",CMD_ARG_NONE}, +{"minid",ARG_TYPE_PURE_TOKEN,-1,"MINID",NULL,"6.2.0",CMD_ARG_NONE}, {0} }; @@ -5432,7 +5487,7 @@ struct redisCommandArg XADD_trim_Subargs[] = { {"strategy",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=XADD_trim_strategy_Subargs}, {"operator",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=XADD_trim_operator_Subargs}, {"threshold",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, -{"count",ARG_TYPE_INTEGER,-1,"LIMIT",NULL,"6.2",CMD_ARG_OPTIONAL}, +{"count",ARG_TYPE_INTEGER,-1,"LIMIT",NULL,"6.2.0",CMD_ARG_OPTIONAL}, {0} }; @@ -5453,7 +5508,7 @@ struct redisCommandArg XADD_field_value_Subargs[] = { /* XADD argument table */ struct redisCommandArg XADD_Args[] = { {"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE}, -{"nomkstream",ARG_TYPE_PURE_TOKEN,-1,"NOMKSTREAM",NULL,"6.2",CMD_ARG_OPTIONAL}, +{"nomkstream",ARG_TYPE_PURE_TOKEN,-1,"NOMKSTREAM",NULL,"6.2.0",CMD_ARG_OPTIONAL}, {"trim",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=XADD_trim_Subargs}, {"id_or_auto",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=XADD_id_or_auto_Subargs}, {"field_value",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE,.subargs=XADD_field_value_Subargs}, @@ -5741,7 +5796,7 @@ commandHistory XPENDING_History[] = { /* XPENDING filters argument table */ struct redisCommandArg XPENDING_filters_Subargs[] = { -{"min-idle-time",ARG_TYPE_INTEGER,-1,"IDLE",NULL,NULL,CMD_ARG_OPTIONAL}, +{"min-idle-time",ARG_TYPE_INTEGER,-1,"IDLE",NULL,"6.2.0",CMD_ARG_OPTIONAL}, {"start",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, {"end",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, {"count",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE}, @@ -5760,7 +5815,10 @@ struct redisCommandArg XPENDING_Args[] = { /********** XRANGE ********************/ /* XRANGE history */ -#define XRANGE_History NULL +commandHistory XRANGE_History[] = { +{"6.2.0","Added exclusive ranges."}, +{0} +}; /* XRANGE hints */ #define XRANGE_Hints NULL @@ -5832,7 +5890,10 @@ struct redisCommandArg XREADGROUP_Args[] = { /********** XREVRANGE ********************/ /* XREVRANGE history */ -#define XREVRANGE_History NULL +commandHistory XREVRANGE_History[] = { +{"6.2.0","Added exclusive ranges."}, +{0} +}; /* XREVRANGE hints */ #define XREVRANGE_Hints NULL @@ -5865,7 +5926,7 @@ struct redisCommandArg XSETID_Args[] = { /* XTRIM history */ commandHistory XTRIM_History[] = { -{"6.2","Added the `MINID` trimming strategy and the `LIMIT` option."}, +{"6.2.0","Added the `MINID` trimming strategy and the `LIMIT` option."}, {0} }; @@ -5875,7 +5936,7 @@ commandHistory XTRIM_History[] = { /* XTRIM trim strategy argument table */ struct redisCommandArg XTRIM_trim_strategy_Subargs[] = { {"maxlen",ARG_TYPE_PURE_TOKEN,-1,"MAXLEN",NULL,NULL,CMD_ARG_NONE}, -{"minid",ARG_TYPE_PURE_TOKEN,-1,"MINID",NULL,NULL,CMD_ARG_NONE}, +{"minid",ARG_TYPE_PURE_TOKEN,-1,"MINID",NULL,"6.2.0",CMD_ARG_NONE}, {0} }; @@ -5891,7 +5952,7 @@ struct redisCommandArg XTRIM_trim_Subargs[] = { {"strategy",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=XTRIM_trim_strategy_Subargs}, {"operator",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=XTRIM_trim_operator_Subargs}, {"threshold",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, -{"count",ARG_TYPE_INTEGER,-1,"LIMIT",NULL,NULL,CMD_ARG_OPTIONAL}, +{"count",ARG_TYPE_INTEGER,-1,"LIMIT",NULL,"6.2.0",CMD_ARG_OPTIONAL}, {0} }; @@ -6170,9 +6231,9 @@ struct redisCommandArg PSETEX_Args[] = { /* SET history */ commandHistory SET_History[] = { {"2.6.12","Added the `EX`, `PX`, `NX` and `XX` options."}, -{"6.0","Added the `KEEPTTL` option."}, -{"6.2","Added the `GET`, `EXAT` and `PXAT` option."}, -{"7.0","Allowed the `NX` and `GET` options to be used together."}, +{"6.0.0","Added the `KEEPTTL` option."}, +{"6.2.0","Added the `GET`, `EXAT` and `PXAT` option."}, +{"7.0.0","Allowed the `NX` and `GET` options to be used together."}, {0} }; @@ -6181,11 +6242,11 @@ commandHistory SET_History[] = { /* SET expiration argument table */ struct redisCommandArg SET_expiration_Subargs[] = { -{"seconds",ARG_TYPE_INTEGER,-1,"EX",NULL,NULL,CMD_ARG_NONE}, -{"milliseconds",ARG_TYPE_INTEGER,-1,"PX",NULL,NULL,CMD_ARG_NONE}, -{"unix-time-seconds",ARG_TYPE_UNIX_TIME,-1,"EXAT",NULL,NULL,CMD_ARG_NONE}, -{"unix-time-milliseconds",ARG_TYPE_UNIX_TIME,-1,"PXAT",NULL,NULL,CMD_ARG_NONE}, -{"keepttl",ARG_TYPE_PURE_TOKEN,-1,"KEEPTTL",NULL,NULL,CMD_ARG_NONE}, +{"seconds",ARG_TYPE_INTEGER,-1,"EX",NULL,"2.6.12",CMD_ARG_NONE}, +{"milliseconds",ARG_TYPE_INTEGER,-1,"PX",NULL,"2.6.12",CMD_ARG_NONE}, +{"unix-time-seconds",ARG_TYPE_UNIX_TIME,-1,"EXAT",NULL,"6.2.0",CMD_ARG_NONE}, +{"unix-time-milliseconds",ARG_TYPE_UNIX_TIME,-1,"PXAT",NULL,"6.2.0",CMD_ARG_NONE}, +{"keepttl",ARG_TYPE_PURE_TOKEN,-1,"KEEPTTL",NULL,"6.0.0",CMD_ARG_NONE}, {0} }; @@ -6201,7 +6262,7 @@ struct redisCommandArg SET_Args[] = { {"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE}, {"value",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, {"expiration",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=SET_expiration_Subargs}, -{"condition",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=SET_condition_Subargs}, +{"condition",ARG_TYPE_ONEOF,-1,NULL,NULL,"2.6.12",CMD_ARG_OPTIONAL,.subargs=SET_condition_Subargs}, {"get",ARG_TYPE_PURE_TOKEN,-1,"GET",NULL,NULL,CMD_ARG_OPTIONAL}, {0} }; @@ -6391,8 +6452,8 @@ struct redisCommand redisCommandTable[] = { {"georadiusbymember","Query a sorted set representing a geospatial index to fetch members matching a given maximum distance from a member","O(N+log(M)) where N is the number of elements inside the bounding box of the circular area delimited by center and radius and M is the number of items inside the index.","3.2.0",CMD_DOC_DEPRECATED,"`GEOSEARCH` and `GEOSEARCHSTORE` with the `BYRADIUS` and `FROMMEMBER` arguments","6.2.0",COMMAND_GROUP_GEO,GEORADIUSBYMEMBER_History,GEORADIUSBYMEMBER_Hints,georadiusbymemberCommand,-5,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_GEO,{{CMD_KEY_READ,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}},{CMD_KEY_WRITE,KSPEC_BS_KEYWORD,.bs.keyword={"STORE",5},KSPEC_FK_RANGE,.fk.range={0,1,0}},{CMD_KEY_WRITE,KSPEC_BS_KEYWORD,.bs.keyword={"STOREDIST",5},KSPEC_FK_RANGE,.fk.range={0,1,0}}},georadiusGetKeys,.args=GEORADIUSBYMEMBER_Args}, {"georadiusbymember_ro","A read-only variant for GEORADIUSBYMEMBER","O(N+log(M)) where N is the number of elements inside the bounding box of the circular area delimited by center and radius and M is the number of items inside the index.","5.0.0",CMD_DOC_DEPRECATED,"`GEOSEARCH` with the `BYRADIUS` and `FROMMEMBER` arguments","6.2.0",COMMAND_GROUP_GEO,GEORADIUSBYMEMBER_RO_History,GEORADIUSBYMEMBER_RO_Hints,georadiusbymemberroCommand,-5,CMD_READONLY,ACL_CATEGORY_GEO,{{CMD_KEY_READ,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=GEORADIUSBYMEMBER_RO_Args}, {"georadius_ro","A read-only variant for GEORADIUS","O(N+log(M)) where N is the number of elements inside the bounding box of the circular area delimited by center and radius and M is the number of items inside the index.","5.0.0",CMD_DOC_DEPRECATED,"`GEOSEARCH` with the `BYRADIUS` argument","6.2.0",COMMAND_GROUP_GEO,GEORADIUS_RO_History,GEORADIUS_RO_Hints,georadiusroCommand,-6,CMD_READONLY,ACL_CATEGORY_GEO,{{CMD_KEY_READ,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=GEORADIUS_RO_Args}, -{"geosearch","Query a sorted set representing a geospatial index to fetch members inside an area of a box or a circle.","O(N+log(M)) where N is the number of elements in the grid-aligned bounding box area around the shape provided as the filter and M is the number of items inside the shape","6.2",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GEO,GEOSEARCH_History,GEOSEARCH_Hints,geosearchCommand,-7,CMD_READONLY,ACL_CATEGORY_GEO,{{CMD_KEY_READ,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=GEOSEARCH_Args}, -{"geosearchstore","Query a sorted set representing a geospatial index to fetch members inside an area of a box or a circle, and store the result in another key.","O(N+log(M)) where N is the number of elements in the grid-aligned bounding box area around the shape provided as the filter and M is the number of items inside the shape","6.2",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GEO,GEOSEARCHSTORE_History,GEOSEARCHSTORE_Hints,geosearchstoreCommand,-8,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_GEO,{{CMD_KEY_WRITE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}},{CMD_KEY_READ,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=GEOSEARCHSTORE_Args}, +{"geosearch","Query a sorted set representing a geospatial index to fetch members inside an area of a box or a circle.","O(N+log(M)) where N is the number of elements in the grid-aligned bounding box area around the shape provided as the filter and M is the number of items inside the shape","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GEO,GEOSEARCH_History,GEOSEARCH_Hints,geosearchCommand,-7,CMD_READONLY,ACL_CATEGORY_GEO,{{CMD_KEY_READ,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=GEOSEARCH_Args}, +{"geosearchstore","Query a sorted set representing a geospatial index to fetch members inside an area of a box or a circle, and store the result in another key.","O(N+log(M)) where N is the number of elements in the grid-aligned bounding box area around the shape provided as the filter and M is the number of items inside the shape","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GEO,GEOSEARCHSTORE_History,GEOSEARCHSTORE_Hints,geosearchstoreCommand,-8,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_GEO,{{CMD_KEY_WRITE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}},{CMD_KEY_READ,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=GEOSEARCHSTORE_Args}, /* hash */ {"hdel","Delete one or more hash fields","O(N) where N is the number of fields to be removed.","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_HASH,HDEL_History,HDEL_Hints,hdelCommand,-3,CMD_WRITE|CMD_FAST,ACL_CATEGORY_HASH,{{CMD_KEY_WRITE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=HDEL_Args}, {"hexists","Determine if a hash field exists","O(1)","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_HASH,HEXISTS_History,HEXISTS_Hints,hexistsCommand,3,CMD_READONLY|CMD_FAST,ACL_CATEGORY_HASH,{{CMD_KEY_READ,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=HEXISTS_Args}, diff --git a/src/commands/acl-getuser.json b/src/commands/acl-getuser.json index a24be67a6..9c5a825e1 100644 --- a/src/commands/acl-getuser.json +++ b/src/commands/acl-getuser.json @@ -9,7 +9,7 @@ "function": "aclCommand", "history": [ [ - "6.2", + "6.2.0", "Added Pub/Sub channel patterns." ] ], diff --git a/src/commands/acl-setuser.json b/src/commands/acl-setuser.json index c1a4ccb06..789bc2d41 100644 --- a/src/commands/acl-setuser.json +++ b/src/commands/acl-setuser.json @@ -9,7 +9,7 @@ "function": "aclCommand", "history": [ [ - "6.2", + "6.2.0", "Added Pub/Sub channel patterns." ] ], diff --git a/src/commands/auth.json b/src/commands/auth.json index f13058477..7d6172484 100644 --- a/src/commands/auth.json +++ b/src/commands/auth.json @@ -27,7 +27,8 @@ { "name": "username", "type": "string", - "optional": true + "optional": true, + "since": "6.0.0" }, { "name": "password", diff --git a/src/commands/bgsave.json b/src/commands/bgsave.json index 0c2c96ff9..4b645db4b 100644 --- a/src/commands/bgsave.json +++ b/src/commands/bgsave.json @@ -22,7 +22,8 @@ "name": "schedule", "token": "SCHEDULE", "type": "pure-token", - "optional": true + "optional": true, + "since": "3.2.2" } ] } diff --git a/src/commands/bitcount.json b/src/commands/bitcount.json index 3f07a4adc..280b59f58 100644 --- a/src/commands/bitcount.json +++ b/src/commands/bitcount.json @@ -8,7 +8,7 @@ "function": "bitcountCommand", "history": [ [ - "7.0", + "7.0.0", "Added the `BYTE|BIT` option." ] ], @@ -60,6 +60,7 @@ "name": "index_unit", "type": "oneof", "optional": true, + "since": "7.0.0", "arguments": [ { "name": "byte", diff --git a/src/commands/bitpos.json b/src/commands/bitpos.json index ffa700a24..da69e2168 100644 --- a/src/commands/bitpos.json +++ b/src/commands/bitpos.json @@ -8,7 +8,7 @@ "function": "bitposCommand", "history": [ [ - "7.0", + "7.0.0", "Added the `BYTE|BIT` option." ] ], @@ -69,6 +69,7 @@ "name": "index_unit", "type": "oneof", "optional": true, + "since": "7.0.0", "arguments": [ { "name": "byte", diff --git a/src/commands/blpop.json b/src/commands/blpop.json index 0eb61c2c9..6cbb36864 100644 --- a/src/commands/blpop.json +++ b/src/commands/blpop.json @@ -8,7 +8,7 @@ "function": "blpopCommand", "history": [ [ - "6.0", + "6.0.0", "`timeout` is interpreted as a double instead of an integer." ] ], diff --git a/src/commands/brpop.json b/src/commands/brpop.json index 0d9e70e68..3be2cbbbb 100644 --- a/src/commands/brpop.json +++ b/src/commands/brpop.json @@ -8,7 +8,7 @@ "function": "brpopCommand", "history": [ [ - "6.0", + "6.0.0", "`timeout` is interpreted as a double instead of an integer." ] ], diff --git a/src/commands/brpoplpush.json b/src/commands/brpoplpush.json index e3193b610..486849f86 100644 --- a/src/commands/brpoplpush.json +++ b/src/commands/brpoplpush.json @@ -8,7 +8,7 @@ "function": "brpoplpushCommand", "history": [ [ - "6.0", + "6.0.0", "`timeout` is interpreted as a double instead of an integer." ] ], diff --git a/src/commands/bzpopmax.json b/src/commands/bzpopmax.json index 7c23e1a5e..d87355e74 100644 --- a/src/commands/bzpopmax.json +++ b/src/commands/bzpopmax.json @@ -8,7 +8,7 @@ "function": "bzpopmaxCommand", "history": [ [ - "6.0", + "6.0.0", "`timeout` is interpreted as a double instead of an integer." ] ], diff --git a/src/commands/bzpopmin.json b/src/commands/bzpopmin.json index 7f492ad7c..8b925951e 100644 --- a/src/commands/bzpopmin.json +++ b/src/commands/bzpopmin.json @@ -8,7 +8,7 @@ "function": "bzpopminCommand", "history": [ [ - "6.0", + "6.0.0", "`timeout` is interpreted as a double instead of an integer." ] ], diff --git a/src/commands/client-kill.json b/src/commands/client-kill.json index 8c8d3960c..398738bb2 100644 --- a/src/commands/client-kill.json +++ b/src/commands/client-kill.json @@ -10,22 +10,22 @@ "history": [ [ "2.8.12", - "Added new filter format. " + "Added new filter format." ], [ "2.8.12", "`ID` option." ], [ - "3.2", + "3.2.0", "Added `master` type in for `TYPE` option." ], [ - "5", + "5.0.0", "Replaced `slave` `TYPE` with `replica`. `slave` still supported for backward compatibility." ], [ - "6.2", + "6.2.0", "`LADDR` option." ] ], @@ -48,13 +48,15 @@ "token": "ID", "name": "client-id", "type": "integer", - "optional": true + "optional": true, + "since": "2.8.12" }, { "token": "TYPE", "name": "normal_master_slave_pubsub", "type": "oneof", "optional": true, + "since": "2.8.12", "arguments": [ { "name": "normal", @@ -64,13 +66,20 @@ { "name": "master", "type": "pure-token", - "token": "master" + "token": "master", + "since": "3.2.0" }, { "name": "slave", "type": "pure-token", "token": "slave" }, + { + "name": "replica", + "type": "pure-token", + "token": "replica", + "since": "5.0.0" + }, { "name": "pubsub", "type": "pure-token", @@ -94,7 +103,8 @@ "token": "LADDR", "name": "ip:port", "type": "string", - "optional": true + "optional": true, + "since": "6.2.0" }, { "token": "SKIPME", diff --git a/src/commands/client-list.json b/src/commands/client-list.json index 1b7422dfe..330992e31 100644 --- a/src/commands/client-list.json +++ b/src/commands/client-list.json @@ -13,11 +13,11 @@ "Added unique client `id` field." ], [ - "5.0", + "5.0.0", "Added optional `TYPE` filter." ], [ - "6.2", + "6.2.0", "Added `laddr` field and the optional `ID` filter." ] ], @@ -37,6 +37,7 @@ "name": "normal_master_replica_pubsub", "type": "oneof", "optional": true, + "since": "5.0.0", "arguments": [ { "name": "normal", @@ -65,6 +66,7 @@ "token": "ID", "type": "block", "optional": true, + "since": "6.2.0", "arguments": [ { "name": "client-id", diff --git a/src/commands/client-pause.json b/src/commands/client-pause.json index af3655f42..abb26fea2 100644 --- a/src/commands/client-pause.json +++ b/src/commands/client-pause.json @@ -13,8 +13,8 @@ "Client pause prevents client pause and key eviction as well." ], [ - "6.2", - "CLIENT PAUSE WRITE mode added along with the `mode` option." + "6.2.0", + "`CLIENT PAUSE WRITE` mode added along with the `mode` option." ] ], "command_flags": [ @@ -35,6 +35,7 @@ "name": "mode", "type": "oneof", "optional": true, + "since": "6.2.0", "arguments": [ { "name": "write", diff --git a/src/commands/cluster-slaves.json b/src/commands/cluster-slaves.json new file mode 100644 index 000000000..ee51d9882 --- /dev/null +++ b/src/commands/cluster-slaves.json @@ -0,0 +1,24 @@ +{ + "SLAVES": { + "summary": "List replica nodes of the specified master node", + "complexity": "O(1)", + "group": "cluster", + "since": "3.0.0", + "arity": 3, + "container": "CLUSTER", + "function": "clusterCommand", + "deprecated_since": "5.0.0", + "replaced_by": "`CLUSTER REPLICAS`", + "command_flags": [ + "ADMIN", + "RANDOM", + "STALE" + ], + "arguments": [ + { + "name": "node-id", + "type": "string" + } + ] + } +} diff --git a/src/commands/cluster-slots.json b/src/commands/cluster-slots.json index 746604652..ce0e68b8c 100644 --- a/src/commands/cluster-slots.json +++ b/src/commands/cluster-slots.json @@ -9,7 +9,7 @@ "function": "clusterCommand", "history": [ [ - "4.0", + "4.0.0", "Added node IDs." ] ], diff --git a/src/commands/exists.json b/src/commands/exists.json index 130bfeb81..a2b3dd865 100644 --- a/src/commands/exists.json +++ b/src/commands/exists.json @@ -6,6 +6,12 @@ "since": "1.0.0", "arity": -2, "function": "existsCommand", + "history": [ + [ + "3.0.3", + "Accepts multiple `key` arguments." + ] + ], "command_flags": [ "READONLY", "FAST" diff --git a/src/commands/expire.json b/src/commands/expire.json index d08bd7296..e08d4adee 100644 --- a/src/commands/expire.json +++ b/src/commands/expire.json @@ -8,7 +8,7 @@ "function": "expireCommand", "history": [ [ - "7.0", + "7.0.0", "Added options: `NX`, `XX`, `GT` and `LT`." ] ], @@ -52,6 +52,7 @@ "name": "condition", "type": "oneof", "optional": true, + "since": "7.0.0", "arguments": [ { "name": "nx", diff --git a/src/commands/expireat.json b/src/commands/expireat.json index 88214c0dc..2a54a5b34 100644 --- a/src/commands/expireat.json +++ b/src/commands/expireat.json @@ -8,7 +8,7 @@ "function": "expireatCommand", "history": [ [ - "7.0", + "7.0.0", "Added options: `NX`, `XX`, `GT` and `LT`." ] ], @@ -52,6 +52,7 @@ "name": "condition", "type": "oneof", "optional": true, + "since": "7.0.0", "arguments": [ { "name": "nx", diff --git a/src/commands/flushall.json b/src/commands/flushall.json index 7300067ca..6af55831d 100644 --- a/src/commands/flushall.json +++ b/src/commands/flushall.json @@ -32,12 +32,14 @@ { "name": "async", "type": "pure-token", - "token": "ASYNC" + "token": "ASYNC", + "since": "4.0.0" }, { "name": "sync", "type": "pure-token", - "token": "SYNC" + "token": "SYNC", + "since": "6.2.0" } ] } diff --git a/src/commands/flushdb.json b/src/commands/flushdb.json index 1068afeb0..e1971eb46 100644 --- a/src/commands/flushdb.json +++ b/src/commands/flushdb.json @@ -6,6 +6,16 @@ "since": "1.0.0", "arity": -1, "function": "flushdbCommand", + "history": [ + [ + "4.0.0", + "Added the `ASYNC` flushing mode modifier." + ], + [ + "6.2.0", + "Added the `SYNC` flushing mode modifier and the **lazyfree-lazy-user-flush** configuration directive." + ] + ], "command_flags": [ "WRITE" ], @@ -22,12 +32,14 @@ { "name": "async", "type": "pure-token", - "token": "ASYNC" + "token": "ASYNC", + "since": "4.0.0" }, { "name": "sync", "type": "pure-token", - "token": "SYNC" + "token": "SYNC", + "since": "6.2.0" } ] } diff --git a/src/commands/geoadd.json b/src/commands/geoadd.json index f25f6328c..4ec080d3c 100644 --- a/src/commands/geoadd.json +++ b/src/commands/geoadd.json @@ -8,7 +8,7 @@ "function": "geoaddCommand", "history": [ [ - "6.2", + "6.2.0", "Added the `CH`, `NX` and `XX` options." ] ], @@ -48,6 +48,7 @@ "name": "condition", "type": "oneof", "optional": true, + "since": "6.2.0", "arguments": [ { "name": "nx", @@ -65,7 +66,8 @@ "name": "change", "token": "CH", "type": "pure-token", - "optional": true + "optional": true, + "since": "6.2.0" }, { "name": "longitude_latitude_member", diff --git a/src/commands/georadius.json b/src/commands/georadius.json index 3409a30a6..07607d38e 100644 --- a/src/commands/georadius.json +++ b/src/commands/georadius.json @@ -9,7 +9,7 @@ "get_keys_function": "georadiusGetKeys", "history": [ [ - "6.2", + "6.2.0", "Added the `ANY` option for `COUNT`." ] ], @@ -156,7 +156,8 @@ "name": "any", "token": "ANY", "type": "pure-token", - "optional": true + "optional": true, + "since": "6.2.0" } ] }, diff --git a/src/commands/geosearch.json b/src/commands/geosearch.json index 909fd6175..2ab4109eb 100644 --- a/src/commands/geosearch.json +++ b/src/commands/geosearch.json @@ -3,7 +3,7 @@ "summary": "Query a sorted set representing a geospatial index to fetch members inside an area of a box or a circle.", "complexity": "O(N+log(M)) where N is the number of elements in the grid-aligned bounding box area around the shape provided as the filter and M is the number of items inside the shape", "group": "geo", - "since": "6.2", + "since": "6.2.0", "arity": -7, "function": "geosearchCommand", "command_flags": [ diff --git a/src/commands/geosearchstore.json b/src/commands/geosearchstore.json index f8b648d6e..a329e3a87 100644 --- a/src/commands/geosearchstore.json +++ b/src/commands/geosearchstore.json @@ -3,7 +3,7 @@ "summary": "Query a sorted set representing a geospatial index to fetch members inside an area of a box or a circle, and store the result in another key.", "complexity": "O(N+log(M)) where N is the number of elements in the grid-aligned bounding box area around the shape provided as the filter and M is the number of items inside the shape", "group": "geo", - "since": "6.2", + "since": "6.2.0", "arity": -8, "function": "geosearchstoreCommand", "command_flags": [ diff --git a/src/commands/hdel.json b/src/commands/hdel.json index b27e66704..7263c924e 100644 --- a/src/commands/hdel.json +++ b/src/commands/hdel.json @@ -6,6 +6,12 @@ "since": "2.0.0", "arity": -3, "function": "hdelCommand", + "history": [ + [ + "2.4.0", + "Accepts multiple `field` arguments." + ] + ], "command_flags": [ "WRITE", "FAST" diff --git a/src/commands/hello.json b/src/commands/hello.json index 135b9902e..98b11c2b6 100644 --- a/src/commands/hello.json +++ b/src/commands/hello.json @@ -8,7 +8,7 @@ "function": "helloCommand", "history": [ [ - "6.2", + "6.2.0", "`protover` made optional; when called without arguments the command reports the current connection's context." ] ], diff --git a/src/commands/hset.json b/src/commands/hset.json index 5081d6219..119444203 100644 --- a/src/commands/hset.json +++ b/src/commands/hset.json @@ -6,6 +6,12 @@ "since": "2.0.0", "arity": -4, "function": "hsetCommand", + "history": [ + [ + "4.0.0", + "Accepts multiple `field` and `value` arguments." + ] + ], "command_flags": [ "WRITE", "DENYOOM", diff --git a/src/commands/lpop.json b/src/commands/lpop.json index 0c083bfa2..a630db96a 100644 --- a/src/commands/lpop.json +++ b/src/commands/lpop.json @@ -8,7 +8,7 @@ "function": "lpopCommand", "history": [ [ - "6.2", + "6.2.0", "Added the `count` argument." ] ], @@ -47,7 +47,8 @@ { "name": "count", "type": "integer", - "optional": true + "optional": true, + "since": "6.2.0" } ] } diff --git a/src/commands/lpush.json b/src/commands/lpush.json index b26d7e933..bcd6e6a0a 100644 --- a/src/commands/lpush.json +++ b/src/commands/lpush.json @@ -8,7 +8,7 @@ "function": "lpushCommand", "history": [ [ - "2.4", + "2.4.0", "Accepts multiple `element` arguments." ] ], diff --git a/src/commands/lpushx.json b/src/commands/lpushx.json index 82ea38fc9..95b92a11e 100644 --- a/src/commands/lpushx.json +++ b/src/commands/lpushx.json @@ -8,7 +8,7 @@ "function": "lpushxCommand", "history": [ [ - "4.0", + "4.0.0", "Accepts multiple `element` arguments." ] ], diff --git a/src/commands/migrate.json b/src/commands/migrate.json index f50952f66..1d4d450be 100644 --- a/src/commands/migrate.json +++ b/src/commands/migrate.json @@ -108,25 +108,30 @@ "name": "copy", "token": "COPY", "type": "pure-token", - "optional": true + "optional": true, + "since": "3.0.0" }, { "name": "replace", "token": "REPLACE", "type": "pure-token", - "optional": true + "optional": true, + "since": "3.0.0" }, { "token": "AUTH", "name": "password", "type": "string", - "optional": true + "optional": true, + "since": "4.0.7" + }, { "token": "AUTH2", "name": "username_password", "type": "block", "optional": true, + "since": "6.0.0", "arguments": [ { "name": "username", @@ -144,7 +149,8 @@ "type": "key", "key_spec_index": 1, "optional": true, - "multiple": true + "multiple": true, + "since": "3.0.6" } ] } diff --git a/src/commands/monitor.json b/src/commands/monitor.json index e64d23c66..5c9f0629c 100644 --- a/src/commands/monitor.json +++ b/src/commands/monitor.json @@ -7,11 +7,11 @@ "function": "monitorCommand", "history": [ [ - "6.0", + "6.0.0", "`AUTH` excluded from the command's output." ], [ - "6.2", + "6.2.0", "`RESET` can be called to exit monitor mode." ], [ diff --git a/src/commands/pexpire.json b/src/commands/pexpire.json index cf231e40e..96588f306 100644 --- a/src/commands/pexpire.json +++ b/src/commands/pexpire.json @@ -8,7 +8,7 @@ "function": "pexpireCommand", "history": [ [ - "7.0", + "7.0.0", "Added options: `NX`, `XX`, `GT` and `LT`." ] ], @@ -52,6 +52,7 @@ "name": "condition", "type": "oneof", "optional": true, + "since": "7.0.0", "arguments": [ { "name": "nx", diff --git a/src/commands/pexpireat.json b/src/commands/pexpireat.json index 05c26b3c7..b4e0d8929 100644 --- a/src/commands/pexpireat.json +++ b/src/commands/pexpireat.json @@ -8,7 +8,7 @@ "function": "pexpireatCommand", "history": [ [ - "7.0", + "7.0.0", "Added options: `NX`, `XX`, `GT` and `LT`." ] ], @@ -52,6 +52,7 @@ "name": "condition", "type": "oneof", "optional": true, + "since": "7.0.0", "arguments": [ { "name": "nx", diff --git a/src/commands/pttl.json b/src/commands/pttl.json index c4b2909a0..b065325a9 100644 --- a/src/commands/pttl.json +++ b/src/commands/pttl.json @@ -6,6 +6,12 @@ "since": "2.6.0", "arity": 2, "function": "pttlCommand", + "history": [ + [ + "2.8.0", + "Added the -2 reply." + ] + ], "command_flags": [ "READONLY", "RANDOM", diff --git a/src/commands/rename.json b/src/commands/rename.json index c9f6847aa..84086a492 100644 --- a/src/commands/rename.json +++ b/src/commands/rename.json @@ -6,6 +6,12 @@ "since": "1.0.0", "arity": 3, "function": "renameCommand", + "history": [ + [ + "3.2.0", + "The command no longer returns an error when source and destination names are the same." + ] + ], "command_flags": [ "WRITE" ], diff --git a/src/commands/renamenx.json b/src/commands/renamenx.json index a7bdb85a5..3da5cdf65 100644 --- a/src/commands/renamenx.json +++ b/src/commands/renamenx.json @@ -6,6 +6,12 @@ "since": "1.0.0", "arity": 3, "function": "renamenxCommand", + "history": [ + [ + "3.2.0", + "The command no longer returns an error when source and destination names are the same." + ] + ], "command_flags": [ "WRITE", "FAST" diff --git a/src/commands/restore.json b/src/commands/restore.json index 5d5923400..d0ab176a8 100644 --- a/src/commands/restore.json +++ b/src/commands/restore.json @@ -6,6 +6,20 @@ "since": "2.6.0", "arity": -4, "function": "restoreCommand", + "history": [ + [ + "3.0.0", + "Added the `REPLACE` modifier." + ], + [ + "5.0.0", + "Added the `ABSTTL` modifier." + ], + [ + "5.0.0", + "Added the `IDLETIME` and `FREQ` options." + ] + ], "command_flags": [ "WRITE", "DENYOOM" @@ -51,25 +65,29 @@ "name": "replace", "token": "REPLACE", "type": "pure-token", - "optional": true + "optional": true, + "since": "3.0.0" }, { "name": "absttl", "token": "ABSTTL", "type": "pure-token", - "optional": true + "optional": true, + "since": "5.0.0" }, { "token": "IDLETIME", "name": "seconds", "type": "integer", - "optional": true + "optional": true, + "since": "5.0.0" }, { "token": "FREQ", "name": "frequency", "type": "integer", - "optional": true + "optional": true, + "since": "5.0.0" } ] } diff --git a/src/commands/rpop.json b/src/commands/rpop.json index 983f59d6d..d9d059fa1 100644 --- a/src/commands/rpop.json +++ b/src/commands/rpop.json @@ -8,7 +8,7 @@ "function": "rpopCommand", "history": [ [ - "6.2", + "6.2.0", "Added the `count` argument." ] ], @@ -47,7 +47,8 @@ { "name": "count", "type": "integer", - "optional": true + "optional": true, + "since": "6.2.0" } ] } diff --git a/src/commands/rpush.json b/src/commands/rpush.json index 9b015f780..6b5f20d03 100644 --- a/src/commands/rpush.json +++ b/src/commands/rpush.json @@ -8,7 +8,7 @@ "function": "rpushCommand", "history": [ [ - "2.4", + "2.4.0", "Accepts multiple `element` arguments." ] ], diff --git a/src/commands/rpushx.json b/src/commands/rpushx.json index 405849868..331d7314b 100644 --- a/src/commands/rpushx.json +++ b/src/commands/rpushx.json @@ -8,7 +8,7 @@ "function": "rpushxCommand", "history": [ [ - "4.0", + "4.0.0", "Accepts multiple `element` arguments." ] ], diff --git a/src/commands/sadd.json b/src/commands/sadd.json index 32a66fd62..215695faf 100644 --- a/src/commands/sadd.json +++ b/src/commands/sadd.json @@ -8,7 +8,7 @@ "function": "saddCommand", "history": [ [ - "2.4", + "2.4.0", "Accepts multiple `member` arguments." ] ], diff --git a/src/commands/scan.json b/src/commands/scan.json index 6143f399b..5721217bf 100644 --- a/src/commands/scan.json +++ b/src/commands/scan.json @@ -6,6 +6,12 @@ "since": "2.8.0", "arity": -2, "function": "scanCommand", + "history": [ + [ + "6.0.0", + "Added the `TYPE` subcommand." + ] + ], "command_flags": [ "READONLY", "RANDOM" @@ -34,7 +40,8 @@ "token": "TYPE", "name": "type", "type": "string", - "optional": true + "optional": true, + "since": "6.0.0" } ] } diff --git a/src/commands/script-flush.json b/src/commands/script-flush.json index fb883d07e..51396f3ac 100644 --- a/src/commands/script-flush.json +++ b/src/commands/script-flush.json @@ -24,6 +24,7 @@ "name": "async", "type": "oneof", "optional": true, + "since": "6.2.0", "arguments": [ { "name": "async", diff --git a/src/commands/set.json b/src/commands/set.json index d50c91528..f63c9b95d 100644 --- a/src/commands/set.json +++ b/src/commands/set.json @@ -12,15 +12,15 @@ "Added the `EX`, `PX`, `NX` and `XX` options." ], [ - "6.0", + "6.0.0", "Added the `KEEPTTL` option." ], [ - "6.2", + "6.2.0", "Added the `GET`, `EXAT` and `PXAT` option." ], [ - "7.0", + "7.0.0", "Allowed the `NX` and `GET` options to be used together." ] ], @@ -69,27 +69,32 @@ { "name": "seconds", "type": "integer", - "token": "EX" + "token": "EX", + "since": "2.6.12" }, { "name": "milliseconds", "type": "integer", - "token": "PX" + "token": "PX", + "since": "2.6.12" }, { "name": "unix-time-seconds", "type": "unix-time", - "token": "EXAT" + "token": "EXAT", + "since": "6.2.0" }, { "name": "unix-time-milliseconds", "type": "unix-time", - "token": "PXAT" + "token": "PXAT", + "since": "6.2.0" }, { "name": "keepttl", "type": "pure-token", - "token": "KEEPTTL" + "token": "KEEPTTL", + "since": "6.0.0" } ] }, @@ -97,6 +102,7 @@ "name": "condition", "type": "oneof", "optional": true, + "since": "2.6.12", "arguments": [ { "name": "nx", diff --git a/src/commands/slowlog-get.json b/src/commands/slowlog-get.json index 2dca426b2..0cc0e0dfd 100644 --- a/src/commands/slowlog-get.json +++ b/src/commands/slowlog-get.json @@ -9,7 +9,7 @@ "function": "slowlogCommand", "history": [ [ - "4.0", + "4.0.0", "Added client IP address, port and name to the reply." ] ], diff --git a/src/commands/spop.json b/src/commands/spop.json index 5bf240a9f..3a5e228d8 100644 --- a/src/commands/spop.json +++ b/src/commands/spop.json @@ -8,7 +8,7 @@ "function": "spopCommand", "history": [ [ - "3.2", + "3.2.0", "Added the `count` argument." ] ], @@ -48,7 +48,8 @@ { "name": "count", "type": "integer", - "optional": true + "optional": true, + "since": "3.2.0" } ] } diff --git a/src/commands/srandmember.json b/src/commands/srandmember.json index 0537ee098..7b16f1c5e 100644 --- a/src/commands/srandmember.json +++ b/src/commands/srandmember.json @@ -47,7 +47,8 @@ { "name": "count", "type": "integer", - "optional": true + "optional": true, + "since": "2.6.0" } ] } diff --git a/src/commands/srem.json b/src/commands/srem.json index 5ca693246..1c1a69772 100644 --- a/src/commands/srem.json +++ b/src/commands/srem.json @@ -8,7 +8,7 @@ "function": "sremCommand", "history": [ [ - "2.4", + "2.4.0", "Accepts multiple `member` arguments." ] ], diff --git a/src/commands/subscribe.json b/src/commands/subscribe.json index f61d7c2b0..b0f00d9e6 100644 --- a/src/commands/subscribe.json +++ b/src/commands/subscribe.json @@ -8,7 +8,7 @@ "function": "subscribeCommand", "history": [ [ - "6.2", + "6.2.0", "`RESET` can be called to exit subscribed state." ] ], diff --git a/src/commands/ttl.json b/src/commands/ttl.json index 0530ced1f..3f87c9ce8 100644 --- a/src/commands/ttl.json +++ b/src/commands/ttl.json @@ -6,6 +6,12 @@ "since": "1.0.0", "arity": 2, "function": "ttlCommand", + "history": [ + [ + "2.8.0", + "Added the -2 reply." + ] + ], "command_flags": [ "READONLY", "RANDOM", diff --git a/src/commands/xadd.json b/src/commands/xadd.json index 4ce48aa71..594265c4e 100644 --- a/src/commands/xadd.json +++ b/src/commands/xadd.json @@ -8,11 +8,11 @@ "function": "xaddCommand", "history": [ [ - "6.2", + "6.2.0", "Added the `NOMKSTREAM` option, `MINID` trimming strategy and the `LIMIT` option." ], [ - "7.0", + "7.0.0", "Added support for the `-*` explicit ID form." ] ], @@ -55,7 +55,7 @@ "name": "nomkstream", "type": "pure-token", "optional": true, - "since": "6.2" + "since": "6.2.0" }, { "name": "trim", @@ -75,7 +75,7 @@ "name": "minid", "type": "pure-token", "token": "MINID", - "since": "6.2" + "since": "6.2.0" } ] }, @@ -105,7 +105,7 @@ "name": "count", "type": "integer", "optional": true, - "since": "6.2" + "since": "6.2.0" } ] }, diff --git a/src/commands/xpending.json b/src/commands/xpending.json index 7747aec76..0d0812489 100644 --- a/src/commands/xpending.json +++ b/src/commands/xpending.json @@ -57,7 +57,8 @@ "token": "IDLE", "name": "min-idle-time", "type": "integer", - "optional": true + "optional": true, + "since": "6.2.0" }, { "name": "start", diff --git a/src/commands/xrange.json b/src/commands/xrange.json index 2d5ccca84..aba374d89 100644 --- a/src/commands/xrange.json +++ b/src/commands/xrange.json @@ -6,6 +6,12 @@ "since": "5.0.0", "arity": -4, "function": "xrangeCommand", + "history": [ + [ + "6.2.0", + "Added exclusive ranges." + ] + ], "command_flags": [ "READONLY" ], diff --git a/src/commands/xrevrange.json b/src/commands/xrevrange.json index 9fa7b2986..d72e09542 100644 --- a/src/commands/xrevrange.json +++ b/src/commands/xrevrange.json @@ -6,6 +6,12 @@ "since": "5.0.0", "arity": -4, "function": "xrevrangeCommand", + "history": [ + [ + "6.2.0", + "Added exclusive ranges." + ] + ], "command_flags": [ "READONLY" ], diff --git a/src/commands/xtrim.json b/src/commands/xtrim.json index baebdf4dd..951c592ac 100644 --- a/src/commands/xtrim.json +++ b/src/commands/xtrim.json @@ -8,7 +8,7 @@ "function": "xtrimCommand", "history": [ [ - "6.2", + "6.2.0", "Added the `MINID` trimming strategy and the `LIMIT` option." ] ], @@ -60,7 +60,8 @@ { "name": "minid", "type": "pure-token", - "token": "MINID" + "token": "MINID", + "since": "6.2.0" } ] }, @@ -89,7 +90,8 @@ "token": "LIMIT", "name": "count", "type": "integer", - "optional": true + "optional": true, + "since": "6.2.0" } ] } diff --git a/src/commands/zadd.json b/src/commands/zadd.json index 8f4acaa9d..5c7ed85d5 100644 --- a/src/commands/zadd.json +++ b/src/commands/zadd.json @@ -8,7 +8,7 @@ "function": "zaddCommand", "history": [ [ - "2.4", + "2.4.0", "Accepts multiple elements." ], [ @@ -16,7 +16,7 @@ "Added the `XX`, `NX`, `CH` and `INCR` options." ], [ - "6.2", + "6.2.0", "Added the `GT` and `LT` options." ] ], @@ -57,6 +57,7 @@ "name": "condition", "type": "oneof", "optional": true, + "since": "6.2.0", "arguments": [ { "name": "nx", @@ -74,6 +75,7 @@ "name": "comparison", "type": "oneof", "optional": true, + "since": "3.0.2", "arguments": [ { "name": "gt", @@ -91,13 +93,15 @@ "name": "change", "token": "CH", "type": "pure-token", - "optional": true + "optional": true, + "since": "3.0.2" }, { "name": "increment", "token": "INCR", "type": "pure-token", - "optional": true + "optional": true, + "since": "3.0.2" }, { "name": "score_member", diff --git a/src/commands/zrange.json b/src/commands/zrange.json index 49a93aa1d..3724002b2 100644 --- a/src/commands/zrange.json +++ b/src/commands/zrange.json @@ -8,7 +8,7 @@ "function": "zrangeCommand", "history": [ [ - "6.2", + "6.2.0", "Added the `REV`, `BYSCORE`, `BYLEX` and `LIMIT` options." ] ], @@ -55,6 +55,7 @@ "name": "sortby", "type": "oneof", "optional": true, + "since": "6.2.0", "arguments": [ { "name": "byscore", @@ -72,13 +73,15 @@ "name": "rev", "token": "REV", "type": "pure-token", - "optional": true + "optional": true, + "since": "6.2.0" }, { "token": "LIMIT", "name": "offset_count", "type": "block", "optional": true, + "since": "6.2.0", "arguments": [ { "name": "offset", diff --git a/src/commands/zrangebyscore.json b/src/commands/zrangebyscore.json index 05559d685..216d7b777 100644 --- a/src/commands/zrangebyscore.json +++ b/src/commands/zrangebyscore.json @@ -6,6 +6,12 @@ "since": "1.0.5", "arity": -4, "function": "zrangebyscoreCommand", + "history": [ + [ + "2.0.0", + "Added the `WITHSCORES` modifier." + ] + ], "deprecated_since": "6.2.0", "replaced_by": "`ZRANGE` with the `BYSCORE` argument", "doc_flags": [ @@ -54,7 +60,8 @@ "name": "withscores", "token": "WITHSCORES", "type": "pure-token", - "optional": true + "optional": true, + "since": "2.0.0" }, { "token": "LIMIT", diff --git a/src/commands/zrem.json b/src/commands/zrem.json index 4d728a572..4e46267f9 100644 --- a/src/commands/zrem.json +++ b/src/commands/zrem.json @@ -8,7 +8,7 @@ "function": "zremCommand", "history": [ [ - "2.4", + "2.4.0", "Accepts multiple elements." ] ], diff --git a/src/commands/zrevrangebyscore.json b/src/commands/zrevrangebyscore.json index 46518c684..eb7e9bc0d 100644 --- a/src/commands/zrevrangebyscore.json +++ b/src/commands/zrevrangebyscore.json @@ -6,6 +6,12 @@ "since": "2.2.0", "arity": -4, "function": "zrevrangebyscoreCommand", + "history": [ + [ + "2.1.6", + "`min` and `max` can be exclusive." + ] + ], "deprecated_since": "6.2.0", "replaced_by": "`ZRANGE` with the `REV` and `BYSCORE` arguments", "doc_flags": [ diff --git a/src/server.h b/src/server.h index 471e8c72a..4536d3b5b 100644 --- a/src/server.h +++ b/src/server.h @@ -3191,8 +3191,6 @@ void bitcountCommand(client *c); void bitposCommand(client *c); void replconfCommand(client *c); void waitCommand(client *c); -void geoencodeCommand(client *c); -void geodecodeCommand(client *c); void georadiusbymemberCommand(client *c); void georadiusbymemberroCommand(client *c); void georadiusCommand(client *c);