On Sat, May 3, 2025 at 11:42 PM Robert Treat <r...@xzilla.net> wrote: > As such, attached patch removes the above, and attempts some clean up > of the documentation in ALTER TABLE to better clarify the behavior > around valid/not valid, enforced/not enforced, and how it affects > different constraints, with some additional literal tag formatting > changes. >
<para> - Adding an enforced <literal>CHECK</literal> or <literal>NOT NULL</literal> - constraint requires scanning the table to verify that existing rows meet the - constraint, but does not require a table rewrite. If a <literal>CHECK</literal> - constraint is added as <literal>NOT ENFORCED</literal>, the validation will - not be performed. + Adding a <literal>CHECK</literal> or <literal>NOT NULL</literal> + constraint requires scanning the table to verify that existing rows meet + the constraint, but does not require a table rewrite. IF a + <literal>CHECK</literal> constraint is added as + <literal>NOT ENFORCED</literal>, no verification is performed. </para> "IF" should be "if". i don't know which one ("validation" or "verification") is more accureate, but i found this (https://www.eviltester.com/2018/09/no-verification-validation.html) here, we should also mention <literal>FOREIGN KEY</literal> constraint? - This form validates a foreign key, check, or not-null constraint that was - previously created as <literal>NOT VALID</literal>, by scanning the + This form validates a <literal>FOREIGN KEY</literal>, + <literal>CHECK</literal>, or <literal>NOT NULL</literal> constraint that + was previously created as <literal>NOT VALID</literal>, by scanning the table to ensure there are no rows for which the constraint is not - satisfied. If the constraint is not enforced, an error is thrown. + satisfied. If the constraint was created as + <literal>NOT ENFORCED</literal>, an error is thrown. I think this changes should be great. original text "If the constraint is not enforced" can mean "some exists row not satisfied the constraint condition" or "the constraint is marked as <literal>NOT ENFORCED</literal>".