pg_dump and inherits issue

Started by Jim Buttafuocoalmost 20 years ago2 messageshackers
Jump to latest
#1Jim Buttafuoco
jim@contactbda.com

I have an issue with pg_dump and inherits with pg 8.1.3 and 8.1.4

if I run the following SQL
create table t (a text check (a = '*'));
create table s () inherits (t);
alter table s drop constraint t_a_check;
alter table s add constraint a_check check (a='s');

I get the following
Table "public.t"
Column | Type | Modifiers
--------+------+-----------
a | text |
Check constraints:
"t_a_check" CHECK (a = '*'::text)

Table "public.s"
Column | Type | Modifiers
--------+------+-----------
a | text |
Check constraints:
"a_check" CHECK (a = 's'::text)
Inherits: t

and then create a new database and run
pg_dump old_db |psql new_db

I get the following
Table "public.t"
Column | Type | Modifiers
--------+------+-----------
a | text |
Check constraints:
"t_a_check" CHECK (a = '*'::text)

Table "public.s"
Column | Type | Modifiers
--------+------+-----------
a | text |
Check constraints:
"a_check" CHECK (a = 's'::text)
"t_a_check" CHECK (a = '*'::text)
Inherits: t

The check constraints on table s are not like the original, I have an extra t_a_check constraint. Is this correct?

Jim

#2Bruce Momjian
bruce@momjian.us
In reply to: Jim Buttafuoco (#1)
Re: pg_dump and inherits issue

"Jim Buttafuoco" <jim@contactbda.com> writes:

The check constraints on table s are not like the original, I have an extra
t_a_check constraint. Is this correct?

I wouldn't say it's correct but it is known.

I think the plan is to have such constraints be marked so you *can't* drop
them as long as you're a child of another table that has them. But Postgres
doesn't yet track where constraints came from or check that you don't drop
ones that are inherited.

--
greg