diff options
author | antirez <antirez@gmail.com> | 2014-03-10 16:28:18 +0100 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2014-03-10 16:28:18 +0100 |
commit | 3e1d77267759083fa0d011193a2ad5713dee72e3 (patch) | |
tree | 880e5be9196733a1dbe792f9c43da70d03528542 /src/sort.c | |
parent | 04cf02e8dc102105b9d302dc86f499e4be63cb55 (diff) | |
download | redis-3e1d77267759083fa0d011193a2ad5713dee72e3.tar.gz |
Cluster: don't allow BY option of SORT as well.
There is the exception of a "constant" BY pattern that is used in order
to signal to don't sort at all. In this case no lookup is needed so it
is possible to support this case in Cluster mode.
Diffstat (limited to 'src/sort.c')
-rw-r--r-- | src/sort.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/sort.c b/src/sort.c index 95c87cc04..fedf0cf3a 100644 --- a/src/sort.c +++ b/src/sort.c @@ -248,7 +248,17 @@ void sortCommand(redisClient *c) { sortby = c->argv[j+1]; /* If the BY pattern does not contain '*', i.e. it is constant, * we don't need to sort nor to lookup the weight keys. */ - if (strchr(c->argv[j+1]->ptr,'*') == NULL) dontsort = 1; + if (strchr(c->argv[j+1]->ptr,'*') == NULL) { + dontsort = 1; + } else { + /* If BY is specified with a real patter, we can't accept + * it in cluster mode. */ + if (server.cluster_enabled) { + addReplyError(c,"BY option of SORT denied in Cluster mode."); + syntax_error++; + break; + } + } j++; } else if (!strcasecmp(c->argv[j]->ptr,"get") && leftargs >= 1) { if (server.cluster_enabled) { |