Geo: only one way to specify any given option.

This commit is contained in:
antirez 2015-06-27 09:43:47 +02:00
parent 710c05ac2a
commit cd91beea1c
2 changed files with 11 additions and 10 deletions

View File

@ -413,6 +413,7 @@ void geoAddCommand(redisClient *c) {
#define RADIUS_MEMBER 2
/* GEORADIUS key x y radius unit [WITHDIST] [WITHHASH] [WITHCOORD] [ASC|DESC]
* [LIMIT count]
* GEORADIUSBYMEMBER key member radius unit ... options ... */
static void geoRadiusGeneric(redisClient *c, int type) {
robj *key = c->argv[1];
@ -457,17 +458,17 @@ static void geoRadiusGeneric(redisClient *c, int type) {
int remaining = c->argc - base_args;
for (int i = 0; i < remaining; i++) {
char *arg = c->argv[base_args + i]->ptr;
if (!strncasecmp(arg, "withdist", 8))
if (!strcasecmp(arg, "withdist")) {
withdist = 1;
else if (!strcasecmp(arg, "withhash"))
} else if (!strcasecmp(arg, "withhash")) {
withhash = 1;
else if (!strncasecmp(arg, "withcoord", 9))
} else if (!strcasecmp(arg, "withcoord")) {
withcoords = 1;
else if (!strncasecmp(arg, "asc", 3))
} else if (!strcasecmp(arg, "asc")) {
sort = SORT_ASC;
else if (!strncasecmp(arg, "desc", 4))
} else if (!strcasecmp(arg, "desc")) {
sort = SORT_DESC;
else {
} else {
addReply(c, shared.syntaxerr);
return;
}

View File

@ -49,18 +49,18 @@ start_server {tags {"geo"}} {
} {{wtc one} 1791873972053020 {union square} 1791875485187452 {central park n/q/r} 1791875761332224 4545 1791875796750882 {lic market} 1791875804419201 q4 1791875830079666 jfk 1791895905559723}
test {GEORADIUS simple (sorted)} {
r georadius nyc -73.9798091 40.7598464 3 km ascending
r georadius nyc -73.9798091 40.7598464 3 km asc
} {{central park n/q/r} 4545 {union square}}
test {GEORADIUS withdistance (sorted)} {
r georadius nyc -73.9798091 40.7598464 3 km withdistance ascending
test {GEORADIUS withdist (sorted)} {
r georadius nyc -73.9798091 40.7598464 3 km withdist asc
} {{{central park n/q/r} 0.7750} {4545 2.3651} {{union square} 2.7697}}
test {GEORADIUSBYMEMBER simple (sorted)} {
r georadiusbymember nyc "wtc one" 7 km
} {{wtc one} {union square} {central park n/q/r} 4545 {lic market}}
test {GEORADIUSBYMEMBER withdistance (sorted)} {
test {GEORADIUSBYMEMBER withdist (sorted)} {
r georadiusbymember nyc "wtc one" 7 km withdist
} {{{wtc one} 0.0000} {{union square} 3.2544} {{central park n/q/r} 6.7000} {4545 6.1975} {{lic market} 6.8969}}