Part of #339
Parent
#339 — table checks (named multi-column CHECK), auto-migrated
What to build
SchemaIR can carry a table check: a canonical name ck_<table>_<suffix> plus a structured check predicate (not user SQL). One renderer in the shared lowering layer produces the CHECK body. Cargo tests pin names (including 63-char truncation), and the IS NULL / OR body SQL that Transfer needs.
No Python Check API, no CREATE TABLE wiring, no auto-migrate — this is the contract later tickets compile into and emit from.
Acceptance criteria
Blocked by
None — can start immediately.
Part of #339
Parent
#339 — table checks (named multi-column CHECK), auto-migrated
What to build
SchemaIR can carry a table check: a canonical name
ck_<table>_<suffix>plus a structured check predicate (not user SQL). One renderer in the shared lowering layer produces the CHECK body. Cargo tests pin names (including 63-char truncation), and theIS NULL/ORbody SQL that Transfer needs.No Python
CheckAPI, noCREATE TABLEwiring, no auto-migrate — this is the contract later tickets compile into and emit from.Acceptance criteria
ck_<table>_<suffix>with the same 63-character truncation rule as column checks (…_ck).IS NULL/ORcombinations is byte-stable; cargo tests pin the exact SQL.Field(db_check=True)→col IN (...)) still render identically — this ticket must not change their body orck_<table>_<col>names.Blocked by
None — can start immediately.