-
Notifications
You must be signed in to change notification settings - Fork 467
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add the support of the ZRANGESTORE command #1482
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Thanks all, merging... |
Hi @jihuayu Thanks for your contribution again. For the merged new command, you can help to add it to the supported commands |
When the code is doing `store`, it calls the add method, which leads us to perform zadd dst xxx in disguise. And this result the following two issues. The first one is we do a type check against dst: ``` 127.0.0.1:6379> set dst value OK 127.0.0.1:6379> zrangestore dst non 0 -1 (integer) 0 127.0.0.1:6379> get dst (nil) 127.0.0.1:6666> set dst value OK 127.0.0.1:6666> zrangestore dst non 0 -1 (error) ERR Invalid argument: WRONGTYPE Operation against a key holding the wrong kind of value ``` The second one is when dst has members, we are doing zadd: ``` 127.0.0.1:6379> zadd dst 1 a 2 b (integer) 2 127.0.0.1:6379> zadd src 3 c 4 d (integer) 2 127.0.0.1:6379> zrangestore dst src 0 -1 (integer) 2 127.0.0.1:6379> zrange dst 0 -1 1) "c" 2) "d" 127.0.0.1:6666> zadd dst 1 a 2 b (integer) 2 127.0.0.1:6666> zadd src 3 c 4 d (integer) 2 127.0.0.1:6666> zrangestore dst src 0 -1 (integer) 2 127.0.0.1:6666> zrange dst 0 -1 1) "a" 2) "b" 3) "c" 4) "d" ``` ZRANGESTORE was added in apache#1482
When the code is doing `store`, it calls the add method, which leads us to perform zadd dst xxx in disguise. And this result the following two issues. The first one is we do a type check against dst: ``` 127.0.0.1:6379> set dst value OK 127.0.0.1:6379> zrangestore dst non 0 -1 (integer) 0 127.0.0.1:6379> get dst (nil) 127.0.0.1:6666> set dst value OK 127.0.0.1:6666> zrangestore dst non 0 -1 (error) ERR Invalid argument: WRONGTYPE Operation against a key holding the wrong kind of value ``` The second one is when dst has members, we are doing zadd: ``` 127.0.0.1:6379> zadd dst 1 a 2 b (integer) 2 127.0.0.1:6379> zadd src 3 c 4 d (integer) 2 127.0.0.1:6379> zrangestore dst src 0 -1 (integer) 2 127.0.0.1:6379> zrange dst 0 -1 1) "c" 2) "d" 127.0.0.1:6666> zadd dst 1 a 2 b (integer) 2 127.0.0.1:6666> zadd src 3 c 4 d (integer) 2 127.0.0.1:6666> zrangestore dst src 0 -1 (integer) 2 127.0.0.1:6666> zrange dst 0 -1 1) "a" 2) "b" 3) "c" 4) "d" ``` ZRANGESTORE was added in #1482
When the code is doing `store`, it calls the add method, which leads us to perform zadd dst xxx in disguise. And this result the following two issues. The first one is we do a type check against dst: ``` 127.0.0.1:6379> set dst value OK 127.0.0.1:6379> zrangestore dst non 0 -1 (integer) 0 127.0.0.1:6379> get dst (nil) 127.0.0.1:6666> set dst value OK 127.0.0.1:6666> zrangestore dst non 0 -1 (error) ERR Invalid argument: WRONGTYPE Operation against a key holding the wrong kind of value ``` The second one is when dst has members, we are doing zadd: ``` 127.0.0.1:6379> zadd dst 1 a 2 b (integer) 2 127.0.0.1:6379> zadd src 3 c 4 d (integer) 2 127.0.0.1:6379> zrangestore dst src 0 -1 (integer) 2 127.0.0.1:6379> zrange dst 0 -1 1) "c" 2) "d" 127.0.0.1:6666> zadd dst 1 a 2 b (integer) 2 127.0.0.1:6666> zadd src 3 c 4 d (integer) 2 127.0.0.1:6666> zrangestore dst src 0 -1 (integer) 2 127.0.0.1:6666> zrange dst 0 -1 1) "a" 2) "b" 3) "c" 4) "d" ``` ZRANGESTORE was added in apache#1482
When the code is doing `store`, it calls the add method, which leads us to perform zadd dst xxx in disguise. And this result the following two issues. The first one is we do a type check against dst: ``` 127.0.0.1:6379> set dst value OK 127.0.0.1:6379> zrangestore dst non 0 -1 (integer) 0 127.0.0.1:6379> get dst (nil) 127.0.0.1:6666> set dst value OK 127.0.0.1:6666> zrangestore dst non 0 -1 (error) ERR Invalid argument: WRONGTYPE Operation against a key holding the wrong kind of value ``` The second one is when dst has members, we are doing zadd: ``` 127.0.0.1:6379> zadd dst 1 a 2 b (integer) 2 127.0.0.1:6379> zadd src 3 c 4 d (integer) 2 127.0.0.1:6379> zrangestore dst src 0 -1 (integer) 2 127.0.0.1:6379> zrange dst 0 -1 1) "c" 2) "d" 127.0.0.1:6666> zadd dst 1 a 2 b (integer) 2 127.0.0.1:6666> zadd src 3 c 4 d (integer) 2 127.0.0.1:6666> zrangestore dst src 0 -1 (integer) 2 127.0.0.1:6666> zrange dst 0 -1 1) "a" 2) "b" 3) "c" 4) "d" ``` ZRANGESTORE was added in #1482
When the code is doing `store`, it calls the add method, which leads us to perform zadd dst xxx in disguise. And this result the following two issues. The first one is we do a type check against dst: ``` 127.0.0.1:6379> set dst value OK 127.0.0.1:6379> zrangestore dst non 0 -1 (integer) 0 127.0.0.1:6379> get dst (nil) 127.0.0.1:6666> set dst value OK 127.0.0.1:6666> zrangestore dst non 0 -1 (error) ERR Invalid argument: WRONGTYPE Operation against a key holding the wrong kind of value ``` The second one is when dst has members, we are doing zadd: ``` 127.0.0.1:6379> zadd dst 1 a 2 b (integer) 2 127.0.0.1:6379> zadd src 3 c 4 d (integer) 2 127.0.0.1:6379> zrangestore dst src 0 -1 (integer) 2 127.0.0.1:6379> zrange dst 0 -1 1) "c" 2) "d" 127.0.0.1:6666> zadd dst 1 a 2 b (integer) 2 127.0.0.1:6666> zadd src 3 c 4 d (integer) 2 127.0.0.1:6666> zrangestore dst src 0 -1 (integer) 2 127.0.0.1:6666> zrange dst 0 -1 1) "a" 2) "b" 3) "c" 4) "d" ``` ZRANGESTORE was added in apache#1482
closed #1460
In this PR
RangeByLex
function signature,make it returnMemberScores
instand ofMember