Skip to content

feat: auto-rebuild prepared statement on server-side loss - #11

Merged
JimMoen merged 8 commits into
datalayers-io:mainfrom
JimMoen:fix/auto-rebuild-prepared
Jul 20, 2026
Merged

feat: auto-rebuild prepared statement on server-side loss#11
JimMoen merged 8 commits into
datalayers-io:mainfrom
JimMoen:fix/auto-rebuild-prepared

Conversation

@JimMoen

@JimMoen JimMoen commented Jul 14, 2026

Copy link
Copy Markdown
Contributor
  • Store SQL and auto_rebuild flag in PreparedStatementResource
  • Accept auto_rebuild boolean in Rust NIF prepare()
  • Detect prepared statement loss via tonic Status::NotFound in error chain
  • Auto-recreate prepared statement and retry execute on loss when auto_rebuild is set
  • Add prepare/3 to Erlang API accepting #{auto_rebuild => boolean()} opts
  • Keep backward-compatible prepare/2 with auto_rebuild defaulting to false

JimMoen added 7 commits July 14, 2026 17:18
- Store SQL and auto_rebuild flag in PreparedStatementResource
- Accept auto_rebuild boolean in Rust NIF prepare()
- Detect prepared statement loss via tonic Status::NotFound in error chain
- Auto-recreate prepared statement and retry execute on loss when auto_rebuild is set
- Add prepare/3 to Erlang API accepting #{auto_rebuild => boolean()} opts
- Keep backward-compatible prepare/2 with auto_rebuild defaulting to false
When close_prepared sets inner to None, execute_prepare previously
returned 'client_or_statement_stopped' before checking auto_rebuild.
Now handles both cases:
1. inner is Some but server returns NOT_FOUND (gRPC path)
2. inner is None (already closed locally) when auto_rebuild=true
Extracted try_rebuild_and_execute as a helper function.
t_prepare_auto_rebuild_test: close prepared then execute - auto-rebuild and succeed
t_prepare_no_rebuild_test: close prepared then execute - return error without rebuild
@JimMoen
JimMoen force-pushed the fix/auto-rebuild-prepared branch from 514a0e5 to fe73ea1 Compare July 20, 2026 06:55
Runs every Monday at 04:00 UTC, also triggerable via workflow_dispatch.
@JimMoen
JimMoen merged commit 8ec7aed into datalayers-io:main Jul 20, 2026
4 checks passed
@JimMoen
JimMoen deleted the fix/auto-rebuild-prepared branch July 20, 2026 07:44
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