We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
Yes
在 ZPOPMAX这种参数个数可以变化的命令,当参数个数超过大小时,缺少了一些判断逻辑导致和Redis那边的返回值不一致
ZPOPMAX
Pika
Redis
在 pika/src/pika_zset 文件下的 1422 行,需要对这个 DoInitial函数进行修改
pika/src/pika_zset
DoInitial
void ZPopmaxCmd::DoInitial() { if (!CheckArg(argv_.size())) { res_.SetRes(CmdRes::kWrongNum, kCmdNameZPopmax); return; } key_ = argv_[1]; if (argv_.size() == 2) { count_ = 1; return; } if (pstd::string2int(argv_[2].data(), argv_[2].size(), static_cast<int64_t *>(&count_)) == 0) { res_.SetRes(CmdRes::kInvalidInt); return; } }
希望修改一下对参数大小的逻辑判断,补齐相应的测试
The text was updated successfully, but these errors were encountered:
我负责修改
Sorry, something went wrong.
bool Cmd::CheckArg(uint64_t num) const { return !((arity_ > 0 && num != arity_) || (arity_ < 0 && num < -arity_)); }
Pika 的这个 CheckArg 方法对于那种参数个数不固定的命令只做了最低参数个数要求的判断,对于参数过多的情况有的没有做判断,除了ZPOPMAX命令应该还有其他的,辛苦排查一下~
CheckArg
这里我给了一个已经做了判断的命令样本,这里对argv_.size() > 3大小做了判断
argv_.size() > 3
void SRandmemberCmd::DoInitial() { if (!CheckArg(argv_.size())) { res_.SetRes(CmdRes::kWrongNum, kCmdNameSRandmember); return; } key_ = argv_[1]; if (argv_.size() > 3) { res_.SetRes(CmdRes::kWrongNum, kCmdNameSRandmember); return; } else if (argv_.size() == 3) { if (pstd::string2int(argv_[2].data(), argv_[2].size(), &count_) == 0) { res_.SetRes(CmdRes::kInvalidInt); } else { reply_arr = true; } } }
No branches or pull requests
Is this a regression?
Yes
Description
在
ZPOPMAX
这种参数个数可以变化的命令,当参数个数超过大小时,缺少了一些判断逻辑导致和Redis那边的返回值不一致Pika
![截屏2023-12-06 18 26 31](https://private-user-images.githubusercontent.com/73943232/288374143-583dda57-aacc-4f8e-9098-93ccee6a8e64.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIzMjM2NTUsIm5iZiI6MTcyMjMyMzM1NSwicGF0aCI6Ii83Mzk0MzIzMi8yODgzNzQxNDMtNTgzZGRhNTctYWFjYy00ZjhlLTkwOTgtOTNjY2VlNmE4ZTY0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MzAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzMwVDA3MDkxNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTAxMWIxNzM4YzZkYzA5MWFmY2ZhYzkxMWQ2NjU0YTcxZDZjODUzYzAxYzUxNGYzZWVlYWExNDM0YjZkMTM5NTgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.NZZPrcuVF8ZpgLM0feycvMvvGoUPH8wFX5NAxd-viTA)
Redis
![截屏2023-12-06 18 27 27](https://private-user-images.githubusercontent.com/73943232/288374414-da6d5ca3-cc08-48e8-b222-f868dca8f299.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIzMjM2NTUsIm5iZiI6MTcyMjMyMzM1NSwicGF0aCI6Ii83Mzk0MzIzMi8yODgzNzQ0MTQtZGE2ZDVjYTMtY2MwOC00OGU4LWIyMjItZjg2OGRjYThmMjk5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MzAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzMwVDA3MDkxNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWE4ZTU5NzY2MmRhMGIzYWMxYjYwMmMxYTVhYzk2ZGQ1YmIxY2MxN2EyZWM4MmQyYWRkN2U2ZDQ1ZjM2MTNlODEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.t092ie-r0CLgShku_EraxdXcdy1M7ThmPy1JNTIpC-Y)
在
pika/src/pika_zset
文件下的 1422 行,需要对这个DoInitial
函数进行修改希望修改一下对参数大小的逻辑判断,补齐相应的测试
The text was updated successfully, but these errors were encountered: