not null constraints, again
Alvaro Herrera <alvherre@alvh.no-ip.org>
From: Alvaro Herrera <alvherre@alvh.no-ip.org>
To: Pg Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2024-08-31T03:58:33Z
Lists: pgsql-hackers
Attachments
- v1-0001-Catalog-NOT-NULL-constraints.patch (text/x-diff)
Hello Here I present another attempt at making not-null constraints be catalogued. This is largely based on the code reverted at 9ce04b50e120, except that we now have a not-null constraint automatically created for every column of a primary key, and such constraint cannot be removed while the PK exists. Thanks to this, a lot of rather ugly code is gone, both in pg_dump and in backend -- in particular the handling of NO INHERIT, which was needed for pg_dump. Noteworthy psql difference: because there are now even more not-null constraints than before, the \d+ display would be far too noisy if we just let it grow. So here I've made it omit any constraints that underlie the primary key. This should be OK since you can't do much with those constraints while the PK is still there. If you drop the PK, the next \d+ will show those constraints. One thing that regretfully I haven't yet had time for, is paring down the original test code: a lot of it is verifying the old semantics, particularly for NO INHERIT constraints, which had grown ugly special cases. It now mostly raises errors; or the tests are simply redundant. I'm going to remove that stuff as soon as I'm back on my normal work timezone. sepgsql is untested. I'm adding this to the September commitfest. -- Álvaro Herrera 48°01'N 7°57'E — https://www.EnterpriseDB.com/ "¿Cómo puedes confiar en algo que pagas y que no ves, y no confiar en algo que te dan y te lo muestran?" (Germán Poo)
Commits
-
Suppress "may be used uninitialized" warnings from older compilers.
- fc5e966f73f0 18.0 landed
-
Elide not-null constraint checks on child tables during PK creation
- 11ff192b5bb7 18.0 landed
-
Remove unnecessary code to handle CONSTR_NOTNULL
- 5b291d1c9c09 18.0 landed
-
Silence compilers about extractNotNullColumn()
- ff239c3bf4e8 18.0 landed
-
Add pg_constraint rows for not-null constraints
- 14e87ffa5c54 18.0 landed