MIGRATE: Fix key extraction for new form.
This commit is contained in:
parent
82fd74a118
commit
4e252e4c09
27
src/db.c
27
src/db.c
@ -1238,6 +1238,33 @@ int *sortGetKeys(struct redisCommand *cmd, robj **argv, int argc, int *numkeys)
|
|||||||
return keys;
|
return keys;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int *migrateGetKeys(struct redisCommand *cmd, robj **argv, int argc, int *numkeys) {
|
||||||
|
int i, num, first, *keys;
|
||||||
|
UNUSED(cmd);
|
||||||
|
|
||||||
|
/* Assume the obvious form. */
|
||||||
|
first = 3;
|
||||||
|
num = 1;
|
||||||
|
|
||||||
|
/* But check for the extended one with the KEYS option. */
|
||||||
|
if (argc > 6) {
|
||||||
|
for (i = 6; i < argc; i++) {
|
||||||
|
if (!strcasecmp(argv[i]->ptr,"keys") &&
|
||||||
|
sdslen(argv[3]->ptr) == 0)
|
||||||
|
{
|
||||||
|
first = i+1;
|
||||||
|
num = argc-first;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
keys = zmalloc(sizeof(int)*num);
|
||||||
|
for (i = 0; i < num; i++) keys[i] = first+i;
|
||||||
|
*numkeys = num;
|
||||||
|
return keys;
|
||||||
|
}
|
||||||
|
|
||||||
/* Slot to Key API. This is used by Redis Cluster in order to obtain in
|
/* Slot to Key API. This is used by Redis Cluster in order to obtain in
|
||||||
* a fast way a key that belongs to a specified hash slot. This is useful
|
* a fast way a key that belongs to a specified hash slot. This is useful
|
||||||
* while rehashing the cluster. */
|
* while rehashing the cluster. */
|
||||||
|
@ -265,7 +265,7 @@ struct redisCommand redisCommandTable[] = {
|
|||||||
{"cluster",clusterCommand,-2,"ar",0,NULL,0,0,0,0,0},
|
{"cluster",clusterCommand,-2,"ar",0,NULL,0,0,0,0,0},
|
||||||
{"restore",restoreCommand,-4,"wm",0,NULL,1,1,1,0,0},
|
{"restore",restoreCommand,-4,"wm",0,NULL,1,1,1,0,0},
|
||||||
{"restore-asking",restoreCommand,-4,"wmk",0,NULL,1,1,1,0,0},
|
{"restore-asking",restoreCommand,-4,"wmk",0,NULL,1,1,1,0,0},
|
||||||
{"migrate",migrateCommand,-6,"w",0,NULL,3,3,1,0,0},
|
{"migrate",migrateCommand,-6,"w",0,migrateGetKeys,0,0,0,0,0},
|
||||||
{"asking",askingCommand,1,"r",0,NULL,0,0,0,0,0},
|
{"asking",askingCommand,1,"r",0,NULL,0,0,0,0,0},
|
||||||
{"readonly",readonlyCommand,1,"rF",0,NULL,0,0,0,0,0},
|
{"readonly",readonlyCommand,1,"rF",0,NULL,0,0,0,0,0},
|
||||||
{"readwrite",readwriteCommand,1,"rF",0,NULL,0,0,0,0,0},
|
{"readwrite",readwriteCommand,1,"rF",0,NULL,0,0,0,0,0},
|
||||||
|
@ -1448,6 +1448,7 @@ void getKeysFreeResult(int *result);
|
|||||||
int *zunionInterGetKeys(struct redisCommand *cmd,robj **argv, int argc, int *numkeys);
|
int *zunionInterGetKeys(struct redisCommand *cmd,robj **argv, int argc, int *numkeys);
|
||||||
int *evalGetKeys(struct redisCommand *cmd, robj **argv, int argc, int *numkeys);
|
int *evalGetKeys(struct redisCommand *cmd, robj **argv, int argc, int *numkeys);
|
||||||
int *sortGetKeys(struct redisCommand *cmd, robj **argv, int argc, int *numkeys);
|
int *sortGetKeys(struct redisCommand *cmd, robj **argv, int argc, int *numkeys);
|
||||||
|
int *migrateGetKeys(struct redisCommand *cmd, robj **argv, int argc, int *numkeys);
|
||||||
|
|
||||||
/* Cluster */
|
/* Cluster */
|
||||||
void clusterInit(void);
|
void clusterInit(void);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user