feat(query)!: better joins #1
Loading…
Reference in a new issue
No description provided.
Delete branch "better-joins"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Completes the
better-joinsOpenSpec change: 29/29 tasks verified.QuerySourceandQuerySourceBuilder, with matching filenames and no old-name aliases.private, with no ES-private fields or bound-method forwarding.Breaking: replace
select(...).join(...)withjoin(...).select(...).Approved SQLite exception
For explicitly projected unqualified common columns coalesced by FULL JOIN USING, emit a same-name
ASso SQLite does not retain identifier quotes in the output key. Caller aliases remain optional. No source aliases, distinct output names, row rewriting, or capability probes are invented.Verification
tests/joins.test.ts: 61 permanent Bun tests, 119 runtime assertions, passing on Bun 1.4.2 / SQLite 3.53.2.tests/joinTypes.ts: 29 exact type assertions and 22 negative compile-time checks, verified bybun run check.bun run check: pass.bun run lint: pass, 14 existing warnings and no errors (baseline: 17 warnings).bun run test: 61 pass, 0 fail. Bun still emits its existing directory-mismatch diagnostic.tests/, using the existing Bun runner and TypeScript test project. No dependencies or configuration changes.Existing limitations outside scope
Database.query()can retain old row keys after a view's output columns are renamed. Reproduced without Outlaw; fresh prepared statements return correct names. View recreation/convergence was verified with fresh statement shapes. No adapter cache-policy changes were made.Commits
a30bdff: source-first typed join pipeline.9d6afa1: approved naming exception and literal identifiers.7d9fece: isolate source internals, final documentation, and formatting.b987652: retain permanent runtime and compile-time regression tests.a4b81fc: separate source objects from builders and restore existing private-member conventions.e955507: rename query source types, files, imports, and exports.All commits are pushed. Progress and verification are mirrored in this PR. Ready for review; the change has not been archived.
feat(query)!: replace join-after-select with typed source compositionto feat(query)!: better joins