Re: pg_dump does not dump domain not-null constraint's comments
Álvaro Herrera <alvherre@kurilemu.de>
From: Álvaro Herrera <alvherre@kurilemu.de>
To: jian he <jian.universality@gmail.com>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-07-14T18:23:58Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix pg_dump COMMENT dependency for separate domain constraints.
- a685c057ad4c 13.23 landed
- 85d6ed31fc7c 14.20 landed
- 0773f3a875f1 15.15 landed
- e127764b65da 17.7 landed
- 4ad846445dd0 18.0 landed
- 3cf328eca84a 16.11 landed
- c044b50d199c 19 (unreleased) landed
-
pg_dump: include comments on not-null constraints on domains, too
- f9545e95c5e7 18.0 landed
- da71717f0a7c 19 (unreleased) landed
- 6b755d8d70b2 17.6 landed
-
Fix dumping of comments on invalid constraints on domains
- e04aca1c4d33 14.19 landed
- dca0e9693b71 18.0 landed
- d07bc7c2b3ca 17.6 landed
- cef998ef8314 16.10 landed
- 5a261c135d43 15.14 landed
- 57949cea5af0 13.22 landed
- 0858f0f96ebb 19 (unreleased) landed
-
Catalog domain not-null constraints
- e5da0fe3c22b 17.0 cited
-
In pg_dump, don't dump a stats object unless dumping underlying table.
- 7418767f11d1 17.0 cited
-
Enable CHECK constraints to be declared NOT VALID
- 897795240cfa 9.2.0 cited
Attachments
- 0001-fix-tweak.patch.txt (text/plain)
On 2025-May-22, jian he wrote: > I actually found another bug. > create schema test; > CREATE DOMAIN test.d1 AS integer NOT NULL default 11; > pg_dump --schema=test > 1.sql > "" > pg_dump: warning: could not resolve dependency loop among these items: > pg_dump: detail: TYPE d1 (ID 1415 OID 18007) > pg_dump: detail: CONSTRAINT d1_not_null (ID 1416 OID 18008) > "" Oh, interesting. I agree with the rough fix, but I think it's better if we keep the contype comparisons rather than removing them, relaxing to allow for one more char. I didn't like the idea of stashing the not-null constraint in the same array as the check constraints; it feels a bit dirty (especially because of the need to scan the array in order to find the not-null one). I opted to add a separate TypeInfo->notnull pointer instead. This feels more natural. This works because we know a domain has only one not-null constraint. Note that this means we don't need your proposed 0002 anymore. I wonder to what extent we promise ABI compatibility of pg_dump.h structs in stable branches. If that's an issue, we could easily use your original patch for 17, and use the TypeInfo->notnull addition only in 18, but I'm starting to lean on not bothering (i.e., use the same patch in all branches). Compare commit 7418767f1 which was backpatched all the way and modified struct StatsExtInfo; I don't think we got any complaints. I also modified the Perl test so that the COMMENT ON CONSTRAINT statement is checked in a separate stanza. This works fine: the comment is created in the create_sql of one stanza (the same where you had it), then checked in the 'regexp' entry of another. I opted to move the regexp for both constraints out of the main one. The attached applies on top of your patch. Opinions? -- Álvaro Herrera Breisgau, Deutschland — https://www.EnterpriseDB.com/