docs: ADR-0036 (Proposed) — bind literal DML values, verbatim text only for expressions/queries
Records the decision that advanced-mode SQL DML should stop handing literal data values to the engine as text and instead parse/validate/bind them through the DSL's proven path — closing the value-validation gap, the hint/highlight gap, and the offending-value-in-errors gap together. Verbatim text stays for expressions, WHERE, INSERT…SELECT, and SELECT (full SQL surface preserved; ADR-0026's limited Expr not imposed). Narrows ADR-0030 §4 / ADR-0033 §10 once accepted; SELECT half of §4 stands. Includes a characterization test (tests/sql_insert.rs) proving the bind-layer gap: the DSL rejects the malformed date 2025/01/15, advanced-mode SQL accepts it. Forward-notes added to ADR-0030/0033; README index updated. Status: Proposed (design + /runda done; pending go-ahead to implement).
This commit is contained in:
@@ -10,6 +10,16 @@ for the phase-exit report and the filled cross-cut matrix in
|
||||
`docs/plans/20260520-adr-0033-phase-3.md`. Amendments 1–3 below
|
||||
are part of this acceptance.
|
||||
|
||||
> **Forward note (2026-05-26).** The **Proposed ADR-0036** narrows the
|
||||
> §10 verbatim-execution model for **literal data values**: rather than
|
||||
> handing the user's literal text to the engine, `INSERT`/`UPDATE` should
|
||||
> parse literal values to typed `Value`s, validate them, retain them on
|
||||
> the command (for binding *and* error enrichment), and bind them as
|
||||
> parameters — as the simple-mode DSL already does. Expressions, `WHERE`
|
||||
> predicates, `INSERT … SELECT`, `RETURNING`, UPSERT, and `SELECT` stay
|
||||
> verbatim text. The `Sql*` command variants and worker handlers remain;
|
||||
> only the literal-value execution path changes. Pending acceptance.
|
||||
|
||||
## Context
|
||||
|
||||
ADR-0030 commissions advanced mode as a body of SQL grammar
|
||||
|
||||
Reference in New Issue
Block a user