Re: BUG #19074: pg_dump from v18 loses the NOT NULL flag in the inherited table field when dumping v17-databases - Mailing list pgsql-bugs

From Álvaro Herrera
Subject Re: BUG #19074: pg_dump from v18 loses the NOT NULL flag in the inherited table field when dumping v17-databases
Date
Msg-id 202510181201.k6y75v2tpf5r@alvherre.pgsql
Whole thread Raw
In response to Re: BUG #19074: pg_dump from v18 loses the NOT NULL flag in the inherited table field when dumping v17-databases  (Álvaro Herrera <alvherre@kurilemu.de>)
List pgsql-bugs
By the way, while testing this, I ran into a pg_dump bug.  In the object
sorting algorithm (DOTypeNameCompare), we fail to process objects of
type DO_FK_CONSTRAINT correctly (which is to say: identically to
DO_CONSTRAINT ones), so we fall back to compare by OID, and in debug
builds, the assertion at the bottom of the routine fires.  The fix is
trivial:

diff --git a/src/bin/pg_dump/pg_dump_sort.c b/src/bin/pg_dump/pg_dump_sort.c
index a51064f21e3..0aec83bedb2 100644
--- a/src/bin/pg_dump/pg_dump_sort.c
+++ b/src/bin/pg_dump/pg_dump_sort.c
@@ -328,7 +328,8 @@ DOTypeNameCompare(const void *p1, const void *p2)
         if (cmpval != 0)
             return cmpval;
     }
-    else if (obj1->objType == DO_CONSTRAINT)
+    else if (obj1->objType == DO_CONSTRAINT ||
+             obj1->objType == DO_FK_CONSTRAINT)
     {
         ConstraintInfo *robj1 = *(ConstraintInfo *const *) p1;
         ConstraintInfo *robj2 = *(ConstraintInfo *const *) p2;


I'll apply this separately, because it goes back to 13 (commit
0decd5e89db9).

-- 
Álvaro Herrera        Breisgau, Deutschland  —  https://www.EnterpriseDB.com/
"Computing is too important to be left to men." (Karen Spärck Jones)



pgsql-bugs by date:

Previous
From: David Rowley
Date:
Subject: Re: BUG #19078: Segfaults in tts_minimal_store_tuple() following pg_upgrade
Next
From: Álvaro Herrera
Date:
Subject: Re: BUG #19074: pg_dump from v18 loses the NOT NULL flag in the inherited table field when dumping v17-databases