This patch allows you to initially declare a CHECK constraint as NOT VALID, similar to what we already allow for foreign keys. That is, you create the constraint without scanning the table and after it is committed, it is enforced for new rows; later, all rows are checked by running ALTER TABLE VALIDATE CONSTRAINT, which doesn't need AccessExclusive thus allowing for better concurrency.
The trickiest bit here was realizing that unlike FKs, check constraints do inherit, and so needed special treatment for recursion. Other than that I think this was pretty straightforward. I intend to attempt to apply this to NOT NULL constraints as well, once the patch to add them to pg_constraint is in. Thoughts? This patch courtesy of Enova Financial. -- Álvaro Herrera <alvhe...@alvh.no-ip.org> -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers