diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index 56c256df8a..ba1683b79a 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 28422eaaf0..44ce6f5649 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 3ef55d9431..778791d9fd 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