Skip to content

Avoid recursive SQLite row decoder check hang - #498

Merged
lukewilliamboswell merged 1 commit into
mainfrom
fix/recursive-sqlite-check
Sep 24, 2026
Merged

lukewilliamboswell merged 1 commit into
mainfrom
fix/recursive-sqlite-check

Conversation

@lukewilliamboswell

Copy link
Copy Markdown
Collaborator

Summary

Avoid Roc issue roc-lang/roc#11621 in the SQLite row decoder. The recursive local function combined ? propagation with inferred result types, which makes the September 23 compiler spin during roc check even for a hello-world app importing this platform.

Use explicit result matches in the recursive row collector. Use the same form in the two unannotated query wrappers, where the compiler otherwise reports error-row type mismatches after the hang is removed. The success and error paths are unchanged.

Validation

With Roc nightly-2026-09-23-c7852fd and a local platform reference:

  • Before: roc check examples/hello-world-local.roc --no-cache exceeded a 20-second timeout.
  • After: hello-world, sqlite-basic, and sqlite-everything each pass roc check --no-cache in about 0.1 seconds.
  • The same three sources pass roc test --no-cache (213 tests).
  • roc fmt --check platform/Sqlite.roc passes.

The local-reference files were temporary copies and are not included in this PR. CI remains pinned to the September 22 compiler; this PR does not publish a basic-cli release or change downstream release URLs.

@lukewilliamboswell
lukewilliamboswell merged commit 97d413f into main Sep 24, 2026
27 checks passed
@lukewilliamboswell
lukewilliamboswell deleted the fix/recursive-sqlite-check branch September 24, 2026 01:02
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