Bug #719: Restoring inherited data destroys parent table data.

Started by PostgreSQL Bugs Listover 23 years ago2 messagesbugs
Jump to latest
#1PostgreSQL Bugs List
pgsql-bugs@postgresql.org

Rob Olsthoorn (rolsthoorn@irdetoaccess.com) reports a bug with a severity of 1
The lower the number the more severe it is.

Short Description
Restoring inherited data destroys parent table data.

Long Description
Happens at least in version 7.2

When restoring a database dump in a clean database, the data of all parents of inherited tables also get the data of the child tables included in the select.

The only workaround I found for this problem is to create the child tables as duplicates of the parent tables and restore only the data.

See a full the code example below.

Sample Code

createdb db
psql db

db=# create table a (a int);
db=# create table b () inherits (a);
db=# insert into a values (1);
db=# insert into a values (2);
db=# insert into b values (1);
db=# insert into b values (12);
db=# select * from a;
a
---
1
2
(2 rows)
db=# \q

pg_dump -D -t a -t b db > db.dump
dropdb db
createdb db
psql -f db.dump db
psql db

db=# select * from a;
a
---
1
2
2
1
(4 rows)
db=#

No file was uploaded with this report

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: PostgreSQL Bugs List (#1)
Re: Bug #719: Restoring inherited data destroys parent table data.

pgsql-bugs@postgresql.org writes:

Restoring inherited data destroys parent table data.

No it doesn't. You appear to be expecting the pre-7.1 behavior of
SELECT on a parent table. Recent versions default to doing the
equivalent of "SELECT FROM parent*".

See the SQL_INHERITANCE configuration parameter if you prefer the
old way.

regards, tom lane