Thread: pg_dump and inherits issue

pg_dump and inherits issue

From
"Jim Buttafuoco"
Date:
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


Re: pg_dump and inherits issue

From
Greg Stark
Date:
"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