Skip to content

search: fix inverted error check in facet range decoding - #416

Open
Usamak06 wants to merge 1 commit into
golang:masterfrom
Usamak06:facet-range-decode
Open

Usamak06 wants to merge 1 commit into
golang:masterfrom
Usamak06:facet-range-decode

Conversation

@Usamak06

Copy link
Copy Markdown

protoToRange decodes the facet range refinements returned by the search service, but its two error checks are inverted: each bound is assigned only when strconv.ParseFloat returns an error, so a valid bound is discarded and left at the infinite default while an empty or malformed one is kept as 0. Facets() returns these Range values to the app, so a refinement that should decode to 1.5..3 comes back as -Inf..+Inf, and a half-open range picks up a spurious 0 endpoint. Flipping both checks to err == nil decodes finite bounds and leaves absent bounds at their infinity sentinel; the v2 copy has the same bug and fix, and both modules get a regression test.

protoToRange decodes the facet range refinements returned by the search service. Its two ParseFloat checks are inverted: each bound is assigned only when parsing fails, so a valid bound is discarded and left at the infinite default, while an empty or malformed bound is kept as 0. A refinement that should decode to 1.5..3 comes back as -Inf..+Inf, and a half-open range picks up a spurious 0 endpoint. Use err == nil so finite bounds are decoded and absent bounds keep their infinity sentinel. The v2 copy has the same bug.
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.

1 participant