pg_dump and inherits issue
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
"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