Commit 712db71e authored by antirez's avatar antirez
Browse files

TCC: fix SPOP unwanted threaded execution.

parent 561dc2bf
......@@ -34,7 +34,7 @@
*----------------------------------------------------------------------------*/
void sunionDiffGenericCommand(client *c, robj **setkeys, int setnum,
robj *dstkey, int op);
robj *dstkey, int op, int sync);
/* Factory method to return a set that *can* hold "value". When the object has
* an integer-encodable value, an intset will be returned. Otherwise a regular
......@@ -436,7 +436,7 @@ void spopWithCountCommand(client *c) {
* the number of elements inside the set: simply return the whole set. */
if (count >= size) {
/* We just return the entire set */
sunionDiffGenericCommand(c,c->argv+1,1,NULL,SET_OP_UNION);
sunionDiffGenericCommand(c,c->argv+1,1,NULL,SET_OP_UNION,1);
/* Delete the set as it is now empty */
dbDelete(c->db,c->argv[1]);
......@@ -663,7 +663,7 @@ void srandmemberWithCountCommand(client *c) {
* The number of requested elements is greater than the number of
* elements inside the set: simply return the whole set. */
if (count >= size) {
sunionDiffGenericCommand(c,c->argv+1,1,NULL,SET_OP_UNION);
sunionDiffGenericCommand(c,c->argv+1,1,NULL,SET_OP_UNION,0);
return;
}
......@@ -1091,9 +1091,9 @@ void sunionDiffThreadedHalf(client *c, void *options) {
}
void sunionDiffGenericCommand(client *c, robj **setkeys, int setnum,
robj *dstkey, int op) {
robj *dstkey, int op, int sync) {
robj **sets = zmalloc(sizeof(robj*)*setnum);
int threaded = (dstkey == NULL);
int threaded = (dstkey == NULL && !sync);
for (int j = 0; j < setnum; j++) {
robj *setobj = dstkey ?
......@@ -1136,19 +1136,19 @@ void sunionDiffGenericCommand(client *c, robj **setkeys, int setnum,
}
void sunionCommand(client *c) {
sunionDiffGenericCommand(c,c->argv+1,c->argc-1,NULL,SET_OP_UNION);
sunionDiffGenericCommand(c,c->argv+1,c->argc-1,NULL,SET_OP_UNION,0);
}
void sunionstoreCommand(client *c) {
sunionDiffGenericCommand(c,c->argv+2,c->argc-2,c->argv[1],SET_OP_UNION);
sunionDiffGenericCommand(c,c->argv+2,c->argc-2,c->argv[1],SET_OP_UNION,1);
}
void sdiffCommand(client *c) {
sunionDiffGenericCommand(c,c->argv+1,c->argc-1,NULL,SET_OP_DIFF);
sunionDiffGenericCommand(c,c->argv+1,c->argc-1,NULL,SET_OP_DIFF,0);
}
void sdiffstoreCommand(client *c) {
sunionDiffGenericCommand(c,c->argv+2,c->argc-2,c->argv[1],SET_OP_DIFF);
sunionDiffGenericCommand(c,c->argv+2,c->argc-2,c->argv[1],SET_OP_DIFF,1);
}
void sscanCommand(client *c) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment