claude@clouddev1
8bd43ccadf
feat: create m:n relationship convenience command (C4, ADR-0045)
...
`create m:n relationship from <T1> to <T2> [as <name>]` generates a
junction table with one FK column per parent PK column ({table}_{pkcol},
typed via fk_target_type), a compound PK over them, and two CASCADE 1:n
relationships -- all in one do_create_table call = one undo step.
Auto-named {T1}_{T2} (optional `as`), both modes, compound-parent PKs
supported (ADR-0043). Self-referential m:n / PK-less parent / internal
junction name / name collision all refused.
Wired across every surface: grammar (separate CREATE_M2N node), worker
executor, runtime dispatch, completion ("m:n" composite), hints,
highlighting, help + usage catalog + disambiguator, and the advanced-mode
DSL->SQL teaching echo (render_create_m2n, round-trips as valid SQL).
Generalized/fixed framework assumptions the build + two /runda passes
surfaced (all behaviour-preserving for existing commands):
- simple-mode dispatch committed simple.first() unconditionally -> tries
candidates, so `create table` no longer shadows `create m:n`.
- the completion continuation-merge was advanced-only -> runs in simple
mode too when an entry word has >1 DSL form (gated simple_count>1).
- do_create_table now rejects internal `__rdbms_*` names (closes a
pre-existing hole on the DSL create-table path too, not just m:n).
- usage disambiguator now recognizes the `m:n` opener.
Tests: 14 integration (tests/it/m2n.rs), 7 typing-surface matrix, echo /
highlight / usage / internal-name units. Closes C4.
2237 pass / 0 fail / 1 ignored. Clippy clean.
2026-06-10 14:26:33 +00:00
..
2026-05-26 12:11:12 +00:00
2026-05-15 20:50:56 +00:00
2026-05-15 20:50:56 +00:00
2026-05-26 12:11:12 +00:00
2026-06-09 18:44:37 +00:00
2026-05-26 12:11:12 +00:00
2026-06-09 18:44:37 +00:00
2026-05-15 20:50:56 +00:00
2026-05-26 12:11:12 +00:00
2026-06-02 14:23:21 +00:00
2026-06-02 14:23:21 +00:00
2026-06-02 14:23:21 +00:00
2026-06-02 14:23:21 +00:00
2026-05-15 20:50:56 +00:00
2026-05-15 20:50:56 +00:00
2026-05-15 20:50:56 +00:00
2026-05-15 20:50:56 +00:00
2026-05-15 20:50:56 +00:00
2026-05-26 12:11:12 +00:00
2026-05-15 20:50:56 +00:00
2026-05-15 20:50:56 +00:00
2026-05-26 12:11:12 +00:00
2026-05-15 20:50:56 +00:00
2026-05-15 20:50:56 +00:00
2026-05-26 12:11:12 +00:00
2026-05-15 20:50:56 +00:00
2026-05-15 20:50:56 +00:00
2026-05-15 20:50:56 +00:00
2026-05-15 20:50:56 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-19 18:54:48 +00:00
2026-05-19 18:54:48 +00:00
2026-05-19 18:54:48 +00:00
2026-05-19 18:54:48 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-06-10 14:26:33 +00:00
2026-06-10 14:26:33 +00:00
2026-06-10 14:26:33 +00:00
2026-06-10 14:26:33 +00:00
2026-06-10 14:26:33 +00:00
2026-06-10 14:26:33 +00:00
2026-06-10 14:26:33 +00:00
2026-06-10 14:26:33 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-18 21:51:52 +00:00
2026-05-15 20:50:56 +00:00
2026-06-10 14:26:33 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-15 20:50:56 +00:00
2026-05-15 20:50:56 +00:00
2026-05-15 20:34:01 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-15 20:34:01 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-15 20:50:56 +00:00
2026-05-15 20:50:56 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-15 20:50:56 +00:00
2026-05-15 20:50:56 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-19 12:49:58 +00:00
2026-05-19 12:49:58 +00:00
2026-05-19 12:49:58 +00:00
2026-05-19 12:49:58 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-16 00:15:55 +00:00
2026-05-16 00:15:55 +00:00
2026-05-16 00:15:55 +00:00
2026-05-16 00:15:55 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-15 20:06:58 +00:00
2026-05-15 20:06:58 +00:00
2026-05-26 12:11:12 +00:00
2026-05-15 20:06:58 +00:00
2026-05-29 10:22:57 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-15 20:31:01 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-15 20:31:01 +00:00
2026-05-15 20:31:01 +00:00
2026-05-29 20:45:21 +00:00
2026-05-29 20:45:21 +00:00
2026-05-26 12:11:12 +00:00
2026-05-15 22:27:53 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-29 20:45:21 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-15 20:50:56 +00:00
2026-05-26 12:11:12 +00:00
2026-05-15 20:50:56 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-15 20:50:56 +00:00
2026-05-26 12:11:12 +00:00
2026-05-15 20:34:01 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-15 20:34:01 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-18 23:19:53 +00:00
2026-05-19 09:39:58 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00
2026-05-26 12:11:12 +00:00