Fail gracefully with a default return value when 0 keys are are provided to a command expecting at least 1 key #1052
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is an alternative implementation to #941
Some commands like
MGET
,DEL
, etc. accept 1 or more keys but fail if the user supplies 0 keys. From a user point of view, it would be nice if these commands simply returned an empty value when called with 0 keys. For example,MGET
could return an empty list andDEL
could return 0 indicating 0 keys were deleted. However, commands cannot simply return an empty value because of how they interact with pipelines.This PR introduces a well named option
EMPTY_ERROR
. If a command detects one of these 0-key scenarios, it can pass theEMPTY_ERROR
option with the default value that should be returned to the application. This includes the plumbing to work with pipelines.Currently only
MGET
is implemented as an example. Other commands likeDEL
should also get this functionality if merged.The question we need to answer is should we actually do this.