Skip to content

Reply with array of return codes if the key does not exist for HFE commands#13343

Merged
tezc merged 1 commit intoredis:unstablefrom
tezc:fix-no-key
Jun 14, 2024
Merged

Reply with array of return codes if the key does not exist for HFE commands#13343
tezc merged 1 commit intoredis:unstablefrom
tezc:fix-no-key

Conversation

@tezc
Copy link
Collaborator

@tezc tezc commented Jun 13, 2024

Currently, HFE commands reply with empty array if the key does not exist.
Though, non-existing key and empty key is the same thing. It means fields given in the command do not exist in the empty key. So, replying with array of 'no field' error codes (-2) suits better to Redis logic.
e.g. Similarly, hmget returns array of nulls if the key does not exist.

After this PR:

127.0.0.1:6379> hpersist missingkey fields 2 a b
1) (integer) -2
2) (integer) -2

@tezc tezc requested review from moticless and sundb June 13, 2024 10:24
@tezc tezc merged commit 4aa25d0 into redis:unstable Jun 14, 2024
@tezc tezc deleted the fix-no-key branch June 14, 2024 06:35
@YaacovHazan YaacovHazan mentioned this pull request Jun 27, 2024
YaacovHazan added a commit that referenced this pull request Jun 27, 2024
Upgrade urgency LOW: This is the second Release Candidate for Redis 7.4.

Performance and resource utilization improvements
=================================================
* #13296 Optimize CPU cache efficiency

Changes to new 7.4 new features (compared to 7.4 RC1)
=====================================================
* #13343 Hash - expiration of individual fields: when key does not exist
- reply with an array (nonexisting code for each field)
* #13329 Hash - expiration of individual fields: new keyspace event:
`hexpired`

Modules API - Potentially breaking changes to new 7.4 features (compared
to 7.4 RC1)

====================================================================================
* #13326 Hash - expiration of individual fields: avoid lazy expire when
called from a Modules API function
funny-dog pushed a commit to funny-dog/redis that referenced this pull request Sep 17, 2025
…mmands (redis#13343)

Currently, HFE commands reply with empty array if the key does not
exist. Though, non-existing key and empty key is the same thing. 
It means fields given in the command do not exist in the empty key. 
So, replying with an array of 'no field' error codes (-2) suits better 
to Redis logic. e.g. Similarly, `hmget` returns array of nulls if the 
key does not exist.

After this PR:
```
127.0.0.1:6379> hpersist missingkey fields 2 a b
1) (integer) -2
2) (integer) -2
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants