Conversation
Preserve exact named bindings and reject ambiguous prefix-free matches. Add native and Python regression coverage and document the matching rules. Generated-by: OpenAI Codex
There was a problem hiding this comment.
🟡 Changes recommended
Alias and exact input names can resolve to one index while another SQL parameter remains silently unbound.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Enables SQLite named binding without :, @, or $ prefixes when uniquely matched.
Changes:
- Adds unique unprefixed-name resolution and ambiguity errors.
- Adds native and Python regression coverage.
- Documents matching and precedence rules.
File summaries
| File | Description |
|---|---|
c/driver/sqlite/statement_reader.c |
Implements unprefixed matching. |
c/driver/sqlite/sqlite_test.cc |
Adds native binding tests. |
python/adbc_driver_sqlite/tests/test_dbapi.py |
Adds DB-API regressions. |
docs/source/driver/sqlite.rst |
Documents named parameters. |
Review details
- Files reviewed: 4/4 changed files
- Comments generated: 1
- Review effort level: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
lidavidm
left a comment
There was a problem hiding this comment.
Seems reasonable overall. One question though.
There was a problem hiding this comment.
Have we verified this against what the stdlib sqlite does?
There was a problem hiding this comment.
Verified against Python 3.12.12’s sqlite3. Common unprefixed bindings agree, including repeated parameters and executemany. Differences: stdlib reuses a for both :a/@a and ignores extra keys; ADBC preserves exact-prefixed keys, enforces field count, and rejects ambiguous aliases. Numbered ?1 uses "1" in stdlib versus "?1" here. Added direct comparisons and documentation in bafb27e; all 12 named-parameter tests pass. Production behavior is unchanged.
AI-generated reply (OpenAI Codex).
Generated-by: OpenAI Codex
Summary
Accept unprefixed names for SQLite's
:,@, and$named parameters when the match is unique. Exact prefixed names keep their existing behavior; ambiguous unprefixed names produce an explicit error. Positional binding and parameter-count validation are unchanged.AI disclosure: OpenAI Codex generated this implementation, tests, and PR description; automated validation is listed above.
Closes #3520