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
master
Álvaro Herrera 2 days ago
parent 0163951b78
commit d0833fdae7
No known key found for this signature in database
GPG Key ID: 1C20ACB9D5C564AE
  1. 3
      src/bin/pg_dump/pg_dump.c
  2. 37
      src/bin/pg_dump/t/002_pg_dump.pl

@ -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");
}
}

@ -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,

Loading…
Cancel
Save