Skip to content

feat(hash): add HSETEX and HGETEX support#3554

Open
PragmaTwice wants to merge 7 commits into
apache:unstablefrom
PragmaTwice:codex/hsetex-hgetex
Open

feat(hash): add HSETEX and HGETEX support#3554
PragmaTwice wants to merge 7 commits into
apache:unstablefrom
PragmaTwice:codex/hsetex-hgetex

Conversation

@PragmaTwice

Copy link
Copy Markdown
Member

Adds Redis-compatible HSETEX and HGETEX commands on top of the hash field expiration encoding. Implements batched field/value and metadata transitions for persistent, expiring, expired, missing, and ghost fields, including FXX/FNX, KEEPTTL, PERSIST, and legacy-encoding rejection. Adds C++ unit and Go integration coverage for metadata invariants, command parsing, replication, restart, and concurrency.

Proposal: #3432
Tracking issue: #3436

Assisted by GPT 5.5 Sol.

@PragmaTwice PragmaTwice marked this pull request as ready for review July 11, 2026 12:22
@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
41.0% Coverage on New Code (required ≥ 50%)
E Reliability Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

💡 Need a hand with PR review? Try Gitar by Sonar!

@jihuayu jihuayu left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a reminder: we need to clearly document this limitation. #3432 (comment)

@git-hulk git-hulk left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

We now have many places need to maintain the metadata with the field state. Perphas we could export some dedicated functions to allow maintaining those behaviors, so that we don't need to take care of the state machine in every place.

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.

3 participants