postgres.git / summary / log / commit / refs
commit d0833fdae7ebb520e14db20ebd8973c5999f636e
Author: Álvaro Herrera <alvherre@kurilemu.de>
Date: Thu Feb 26 10:50:26 2026 +0000
pg_dump: Preserve NO INHERIT on NOT NULL on inheritance children
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 | 3 +++
src/bin/pg_dump/t/002_pg_dump.pl | 37 +++++++++++++++++++++++++++++++++++++
2 files changed, 40 insertions(+)
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index 450cec285b3..46a6794a57f 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -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");
}
}
diff --git a/src/bin/pg_dump/t/002_pg_dump.pl b/src/bin/pg_dump/t/002_pg_dump.pl
index bc7a082f57a..f15bd06adcc 100644
--- a/src/bin/pg_dump/t/002_pg_dump.pl
+++ b/src/bin/pg_dump/t/002_pg_dump.pl
@@ -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,
[parent: 0163951b785e]