| 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: | Whole Thread | Raw Message | 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 |