diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index 56c256df8a13d874f401a76f5c2c028649cd5d45..ba1683b79a087c1b4c7fabece70cc3a8c56b7ff0 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -14772,8 +14772,8 @@ dumpConstraint(Archive *fout, DumpOptions *dopt, ConstraintInfo *coninfo) { /* CHECK constraint on a table */ - /* Ignore if not to be dumped separately */ - if (coninfo->separate) + /* Ignore if not to be dumped separately, or if it was inherited */ + if (coninfo->separate && coninfo->conislocal) { /* not ONLY since we want it to propagate to children */ appendPQExpBuffer(q, "ALTER TABLE %s\n", diff --git a/src/test/regress/expected/alter_table.out b/src/test/regress/expected/alter_table.out index 28422eaaf01430c1c8408b1619d884ccccc8932a..44ce6f564914e57f2c88db318f8a2b08a532ee6d 100644 --- a/src/test/regress/expected/alter_table.out +++ b/src/test/regress/expected/alter_table.out @@ -438,6 +438,19 @@ explain (costs off) select * from nv_parent where d between '2009-08-01'::date a Filter: ((d >= '08-01-2009'::date) AND (d <= '08-31-2009'::date)) (7 rows) +-- add an inherited NOT VALID constraint +alter table nv_parent add check (d between '2001-01-01'::date and '2099-12-31'::date) not valid; +\d nv_child_2009 +Table "public.nv_child_2009" + Column | Type | Modifiers +--------+------+----------- + d | date | +Check constraints: + "nv_child_2009_d_check" CHECK (d >= '01-01-2009'::date AND d <= '12-31-2009'::date) + "nv_parent_d_check" CHECK (d >= '01-01-2001'::date AND d <= '12-31-2099'::date) NOT VALID +Inherits: nv_parent + +-- we leave nv_parent and children around to help test pg_dump logic -- Foreign key adding test with mixed types -- Note: these tables are TEMP to avoid name conflicts when this test -- is run in parallel with foreign_key.sql. diff --git a/src/test/regress/sql/alter_table.sql b/src/test/regress/sql/alter_table.sql index 3ef55d943163314d11d3cdb472c4d35f4d5452be..778791d9fd182a854bbc994524883834dc95ff77 100644 --- a/src/test/regress/sql/alter_table.sql +++ b/src/test/regress/sql/alter_table.sql @@ -340,6 +340,10 @@ explain (costs off) select * from nv_parent where d between '2009-08-01'::date a alter table nv_child_2011 VALIDATE CONSTRAINT nv_child_2011_d_check; explain (costs off) select * from nv_parent where d between '2009-08-01'::date and '2009-08-31'::date; +-- add an inherited NOT VALID constraint +alter table nv_parent add check (d between '2001-01-01'::date and '2099-12-31'::date) not valid; +\d nv_child_2009 +-- we leave nv_parent and children around to help test pg_dump logic -- Foreign key adding test with mixed types