From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Douglas McNaught <doug(at)mcnaught(dot)org> |
Cc: | "Milen Kulev" <makulev(at)gmx(dot)net>, "'William ZHANG'" <uniware(at)zedware(dot)org>, pgsql-general(at)postgresql(dot)org |
Subject: | Re: Create database bug in 8.1.3 ? -> solved |
Date: | 2006-04-09 15:56:08 |
Message-ID: | 9044.1144598168@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Douglas McNaught <doug(at)mcnaught(dot)org> writes:
> "Milen Kulev" <makulev(at)gmx(dot)net> writes:
>> I can not understand why pg_dump, pg_dumpall have hard-coded "template0" ?
> The reason is this: any extra stuff that your database inherited from
> template1 (or whatever template you used) will be dumped out as part
> of your database. There is no way to for pg_dump to tell what parts
> came from template1 and what parts were added afterward, so it bases
> its dump on template0, which is a minimal database. If you based your
> restored database on template1, you would get collisions as the
> restore tried to add objects that were already there from template1.
Not only that. If you changed template1 after creating your database
from it, then a dump and restore of your database would be wrong if it
used template1: it would produce a database that did not match what was
dumped, but rather included those subsequent changes in template1.
(Which might in fact be what you'd wish for, but it's not pg_dump's
charter.) template0 is not only minimal but stable, so basing the
restore relative to it is more likely to produce a matching database
than using template1.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Simon Riggs | 2006-04-09 16:00:14 | Re: Load testing across 2 machines |
Previous Message | Merlin Moncure | 2006-04-09 15:12:43 | Re: how to document database |