Repository navigation
Render Redis numeric range leaves as bounded intervals - #336
Conversation
|
🤖 Automated first-pass review. A human maintainer still needs to review this before merge. What I checked: the new renderer ( Worth fixing before merge Nothing. The PR already does the work I'd otherwise ask for:
The Optional / follow-up
Net: a small, well-isolated encoding change. The semantics argument is sound, the oracle is independent, a live replay backs it, and the provenance marker is recorded before timing. Nothing blocks merge. The Valkey divergence is the one item that deserves an issue rather than silence. |
|
Addressed the Dragonfly provenance finding in 0dde6f9. Dragonfly now invokes the same recording hook immediately after its filter-resolution step. The real CLI datetime-range integration fixture checks Validation: The PR description now explicitly identifies the multivalued wrong-answer correction and states that no performance improvement is claimed. Valkey's independent parser remains outside this change; follow-up #337 tracks support verification, canonical same-value semantics, real request/result tests, and provenance. Redis/Valkey two-sided-range results should not be presented as identical query shapes before that follow-up. The parameter-name convention is covered by the existing positive/negative unit guard; structural provenance can be a follow-up if parser metadata evolves. |
|
Disposition of the remaining optional suggestions: Valkey encoding parity is tracked in #337. Typed parser provenance and deriving FT.EXPLAIN's DIALECT from the captured FT.SEARCH request are tracked in #338, with regression-test expectations. Both are future drift prevention; the existing naming convention and dialects match current requests. Keeping this patch stable while its final CI completes. |
Docker Build ValidationPlatforms tested:
Tests performed:
|
1 similar comment
Docker Build ValidationPlatforms tested:
Tests performed:
|
A two-sided numeric filter such as
0 < price < 3currently reaches Redis as two open-ended ranges joined by an intersection. OpenSearch receives one bounded range. Render each canonical range leaf as bounded intervals, preserving inclusive/exclusive endpoints, parameter conversion, and separate boolean leaves. Multiple same-side constraints retain every lower/upper pairing.This also fixes multivalued semantics: a document with
price = [-10, 10]must not match0 < price < 3. Split predicates could match different values; a bounded interval requires one value to satisfy the entire leaf. Single-valued numeric datasets retain the same matches. No performance improvement is claimed until a controlled rerun completes.Redis and Dragonfly, which shares the parser, record
numeric_range_encoding: bounded_leaf_v1after successful filter resolution and before timing. The metadata describes prepared encoding, not executed query counts under query truncation. Valkey's independent parser is outside this change.Validation:
make agent-check: 1,207 tests, format and clippy checks pass.