Re: Dump-restore loosing 'attnotnull' bit for DEFERRABLE PRIMARY KEY column(s).
Alvaro Herrera <alvherre@alvh.no-ip.org>
From: Alvaro Herrera <alvherre@alvh.no-ip.org>
To: Dean Rasheed <dean.a.rasheed@gmail.com>
Cc: Aleksander Alekseev <aleksander@timescale.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>,
Amul Sul <sulamul@gmail.com>, vignesh C <vignesh21@gmail.com>
Date: 2024-03-05T12:36:11Z
Lists: pgsql-hackers
Attachments
On 2024-Mar-04, Dean Rasheed wrote: > I don't think that this is the right fix. ISTM that the real issue is > that dropping a NOT NULL constraint should not mark the column as > nullable if it is part of a PK, whether or not that PK is deferrable > -- a deferrable PK still marks a column as not nullable. Yeah. As I said upthread, a good fix seems to require no longer relying on RelationGetIndexAttrBitmap to obtain the columns in the primary key, because that function does not include deferred primary keys. I came up with the attached POC, which seems to fix the reported problem, but of course it needs more polish, a working test case, and verifying whether the new function should be used in more places -- in particular, whether it can be used to revert the changes to RelationGetIndexList that b0e96f311985 did. -- Álvaro Herrera Breisgau, Deutschland — https://www.EnterpriseDB.com/ "La persona que no quería pecar / estaba obligada a sentarse en duras y empinadas sillas / desprovistas, por cierto de blandos atenuantes" (Patricio Vogel)
Commits
-
Revert structural changes to not-null constraints
- 6f8bb7c1e961 17.0 cited
-
Admit deferrable PKs into rd_pkindex, but flag them as such
- 270af6f0df76 17.0 landed
-
Add the notion of REPLICA IDENTITY for a table.
- 07cacba983ef 9.4.0 cited