]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
pg_dump: Preserve NO INHERIT on NOT NULL on inheritance children
authorÁlvaro Herrera <alvherre@kurilemu.de>
Thu, 26 Feb 2026 10:50:26 +0000 (11:50 +0100)
committerÁlvaro Herrera <alvherre@kurilemu.de>
Thu, 26 Feb 2026 10:50:26 +0000 (11:50 +0100)
When the constraint is printed without the column, we were not printing
the NO INHERIT flag.

Author: Jian He <jian.universality@gmail.com>
Backpatch-through: 18
Discussion: https://postgr.es/m/CACJufxEDEOO09G+OQFr=HmFr9ZDLZbRoV7+pj58h3_WeJ_K5UQ@mail.gmail.com

src/bin/pg_dump/pg_dump.c
src/bin/pg_dump/t/002_pg_dump.pl

index 450cec285b36960311b47f075e71f57a0548bfac..46a6794a57fc6abe414a2147411fa9b3f23f98f5 100644 (file)
@@ -17421,6 +17421,9 @@ dumpTableSchema(Archive *fout, const TableInfo *tbinfo)
                                                appendPQExpBuffer(q, "CONSTRAINT %s NOT NULL %s",
                                                                                  tbinfo->notnull_constrs[j],
                                                                                  fmtId(tbinfo->attnames[j]));
+
+                                       if (tbinfo->notnull_noinh[j])
+                                               appendPQExpBufferStr(q, " NO INHERIT");
                                }
                        }
 
index bc7a082f57ace243ee6a91e17e2e79bdcffea074..f15bd06adccd0071af27ddf6e9cd35dd4c5cdb2d 100644 (file)
@@ -1070,6 +1070,43 @@ my %tests = (
                },
        },
 
+       'CONSTRAINT NOT NULL / NO INHERIT' => {
+               create_sql => 'CREATE TABLE dump_test.test_table_nonn (
+               col1 int NOT NULL NO INHERIT,
+               col2 int);
+               CREATE TABLE dump_test.test_table_nonn_chld1 (
+                  CONSTRAINT nn NOT NULL col2 NO INHERIT)
+               INHERITS (dump_test.test_table_nonn); ',
+               regexp => qr/^
+                       \QCREATE TABLE dump_test.test_table_nonn (\E \n^\s+
+                       \Qcol1 integer NOT NULL NO INHERIT\E
+                       /xm,
+               like => {
+                       %full_runs, %dump_test_schema_runs,
+                       section_pre_data => 1,
+                       binary_upgrade => 1,
+               },
+               unlike => {
+                       exclude_dump_test_schema => 1,
+                       only_dump_measurement => 1,
+               },
+       },
+
+       'CONSTRAINT NOT NULL / NO INHERIT (child1)' => {
+               regexp => qr/^
+                       \QCREATE TABLE dump_test.test_table_nonn_chld1 (\E \n^\s+
+                       \QCONSTRAINT nn NOT NULL col2 NO INHERIT\E
+                       /xm,
+               like => {
+                       %full_runs, %dump_test_schema_runs, section_pre_data => 1,
+               },
+               unlike => {
+                       exclude_dump_test_schema => 1,
+                       only_dump_measurement => 1,
+                       binary_upgrade => 1,
+               },
+       },
+
        'CONSTRAINT PRIMARY KEY / WITHOUT OVERLAPS' => {
                create_sql => 'CREATE TABLE dump_test.test_table_tpk (
                                                        col1 int4range,