Skip to content

fix: Fix CaseClauseError when filtering/sorting on doubly-nested embedded resource fields#217

Merged
zachdaniel merged 1 commit intomainfrom
fix/nested-embedded-get-path
Mar 4, 2026
Merged

fix: Fix CaseClauseError when filtering/sorting on doubly-nested embedded resource fields#217
zachdaniel merged 1 commit intomainfrom
fix/nested-embedded-get-path

Conversation

@sevenseacat
Copy link
Contributor

split_at_paths accumulates path segments as it walks a get_path expression. The :bracket arm only matched {:bracket, path, nil, nil} — the initial empty state. After the first embedded hop the accumulator carries real type and constraint info, so no clause matched and a CaseClauseError was raised.

Widening the pattern to {:bracket, path, _, _} allows consecutive JSONB bracket accesses to keep accumulating into the same segment, which do_get_path already handles correctly via jsonb_extract_path_text(col, 'key1', 'key2', ...).

The tests for this are in AshPostgres, as AshSql doesn't have any of its own tests - see ash-project/ash_postgres#706

Contributor checklist

Leave anything that you believe does not apply unchecked.

  • I accept the AI Policy, or AI was not used in the creation of this PR.
  • Bug fixes include regression tests
  • Chores
  • Documentation changes
  • Features include unit/acceptance tests
  • Refactoring
  • Update dependencies

…dded resource fields

`split_at_paths` accumulates path segments as it walks a `get_path` expression.
The `:bracket` arm only matched `{:bracket, path, nil, nil}` — the initial empty
state. After the first embedded hop the accumulator carries real type and
constraint info, so no clause matched and a `CaseClauseError` was raised.

Widening the pattern to `{:bracket, path, _, _}` allows consecutive JSONB
bracket accesses to keep accumulating into the same segment, which `do_get_path`
already handles correctly via `jsonb_extract_path_text(col, 'key1', 'key2', ...)`.
@zachdaniel zachdaniel merged commit 957ec04 into main Mar 4, 2026
23 checks passed
@zachdaniel
Copy link
Contributor

🚀 Thank you for your contribution! 🚀

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