release: v0.4.7 — easy-wins sprint#86
Merged
Merged
Conversation
…ation error message - Bump workspace + inter-crate pins 0.4.6 → 0.4.7 - CHANGELOG [0.4.7]: EXPLAIN lowering, indexed range scans, UNIQUE/PK constraints, $N parameter binding over the wire, multi-line REPL, agent-DX eval harness; breaking upsert-requires-unique; oversized-row guard - handler.rs: add "unique constraint violation" to SAFE_ERROR_PREFIXES so remote clients receive the actionable message (was sanitized to generic); +2 sanitize_error allowlist tests - SECURITY.md supported-versions + user-facing version pins → 0.4.7 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
v0.4.7 — Easy-Wins Sprint
Ships the six sprint features plus a remote DX fix caught by the pre-publish smoke.
Features
RangeScannow displays as the executor actually runs it (RangeScan when indexed, SeqScan when not).>,>=,<,<=) use B+tree indexes instead of falling back to full scans.uniquefield modifier,alter … add unique, enforced on insert/update/upsert; survives restart (WAL-replayed catalog). Breaking:upsert … on .fieldnow requires a unique constraint on that field.$Nparameter binding over the wire — token-level placeholder binding ($1,$2), newQueryWithParamswire message, exposed viaclient.query(powql, params)in the TS client. Injection-inert and byte-faithful.type/statement blocks.scripts/agent-eval.Fixes
"unique constraint violation"to the server'sSAFE_ERROR_PREFIXESallowlist so remote clients receive the actionable message instead of genericquery execution error. +2 allowlist tests. (The constraint was always enforced; only the wire message was being sanitized.)Verification
cargo test --workspacegreen; clippy-D warningsclean; fmt clean.smoke47.sh) 17/17 ALL-PASS against freshly built release binaries — exercises unique constraints (embedded + kill-9 restart over the wire), indexed range + truthful EXPLAIN, live TS$Nbinding with an injection payload, multi-line REPL, oversized-row guard, and readonly enforcement.🤖 Generated with Claude Code