summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLeibale Eidelman <me@leibale.com>2023-05-09 07:24:37 -0400
committerGitHub <noreply@github.com>2023-05-09 14:24:37 +0300
commite04ebdb8d3f558b27ecdc6555a33ed91966371cd (patch)
treeb165f7e927d2e9a0213e88ad1a59b8dfdf1582fc /src
parent6ab2174d37185cd20280ff3e0f7f287ebefd4c92 (diff)
downloadredis-e04ebdb8d3f558b27ecdc6555a33ed91966371cd.tar.gz
fix `GEORADIUS[BYMEMBER]` `STORE` & `STOREDIST` args spec (#12151)
in GEO commands, `STORE` and `STOREDIST` are mutually exclusive. use `oneof` block to contain them
Diffstat (limited to 'src')
-rw-r--r--src/commands/georadius.json33
-rw-r--r--src/commands/georadiusbymember.json33
-rw-r--r--src/db.c2
-rw-r--r--src/geo.c2
4 files changed, 40 insertions, 30 deletions
diff --git a/src/commands/georadius.json b/src/commands/georadius.json
index 0eb919407..6ced9049c 100644
--- a/src/commands/georadius.json
+++ b/src/commands/georadius.json
@@ -186,20 +186,25 @@
]
},
{
- "token": "STORE",
- "name": "storekey",
- "display": "key",
- "type": "key",
- "key_spec_index": 1,
- "optional": true
- },
- {
- "token": "STOREDIST",
- "name": "storedistkey",
- "display": "key",
- "type": "key",
- "key_spec_index": 2,
- "optional": true
+ "name": "store",
+ "type": "oneof",
+ "optional": true,
+ "arguments": [
+ {
+ "token": "STORE",
+ "name": "storekey",
+ "display": "key",
+ "type": "key",
+ "key_spec_index": 1
+ },
+ {
+ "token": "STOREDIST",
+ "name": "storedistkey",
+ "display": "key",
+ "type": "key",
+ "key_spec_index": 2
+ }
+ ]
}
],
"reply_schema": {
diff --git a/src/commands/georadiusbymember.json b/src/commands/georadiusbymember.json
index 0a8b27119..4b627419b 100644
--- a/src/commands/georadiusbymember.json
+++ b/src/commands/georadiusbymember.json
@@ -177,20 +177,25 @@
]
},
{
- "token": "STORE",
- "name": "storekey",
- "display": "key",
- "type": "key",
- "key_spec_index": 1,
- "optional": true
- },
- {
- "token": "STOREDIST",
- "name": "storedistkey",
- "display": "key",
- "type": "key",
- "key_spec_index": 2,
- "optional": true
+ "name": "store",
+ "type": "oneof",
+ "optional": true,
+ "arguments": [
+ {
+ "token": "STORE",
+ "name": "storekey",
+ "display": "key",
+ "type": "key",
+ "key_spec_index": 1
+ },
+ {
+ "token": "STOREDIST",
+ "name": "storedistkey",
+ "display": "key",
+ "type": "key",
+ "key_spec_index": 2
+ }
+ ]
}
],
"reply_schema": {
diff --git a/src/db.c b/src/db.c
index de7c601b0..38881a7f8 100644
--- a/src/db.c
+++ b/src/db.c
@@ -2315,7 +2315,7 @@ int migrateGetKeys(struct redisCommand *cmd, robj **argv, int argc, getKeysResul
/* Helper function to extract keys from following commands:
* GEORADIUS key x y radius unit [WITHDIST] [WITHHASH] [WITHCOORD] [ASC|DESC]
- * [COUNT count] [STORE key] [STOREDIST key]
+ * [COUNT count] [STORE key|STOREDIST key]
* GEORADIUSBYMEMBER key member radius unit ... options ...
*
* This command has a fully defined keyspec, so returning flags isn't needed. */
diff --git a/src/geo.c b/src/geo.c
index a1781a5b0..4ebd678b5 100644
--- a/src/geo.c
+++ b/src/geo.c
@@ -513,7 +513,7 @@ void geoaddCommand(client *c) {
#define GEOSEARCHSTORE (1<<4) /* GEOSEARCHSTORE just accept STOREDIST option */
/* GEORADIUS key x y radius unit [WITHDIST] [WITHHASH] [WITHCOORD] [ASC|DESC]
- * [COUNT count [ANY]] [STORE key] [STOREDIST key]
+ * [COUNT count [ANY]] [STORE key|STOREDIST key]
* GEORADIUSBYMEMBER key member radius unit ... options ...
* GEOSEARCH key [FROMMEMBER member] [FROMLONLAT long lat] [BYRADIUS radius unit]
* [BYBOX width height unit] [WITHCOORD] [WITHDIST] [WITHASH] [COUNT count [ANY]] [ASC|DESC]