On Wed, Nov 17, 2004 at 11:53:10 -0800,
Josh Berkus <josh@agliodbs.com> wrote:
> Karl,
>
> > I don't care that much about the behavior, it's easy enough
> > to delete 'public'. I do think that a note should be
> > made in the administrator manual regards system upgrades
> > where pg_dump(all) scripts are given if this is going to be
> > the behavior.
>
> This isn't isolated to the "public" schema. In fact, anything which is in
> the template database (usually template1) will be in the database you reload,
> even if it wasn't in the original database. The result is that when you try
> to remove built-in objects that ship with PostgreSQL, they are "replaced" on
> a new migration server. pg_dump isn't capable of working around this, nor
> should it be.
>
> Search the archives of -Hackers mailing list for this issue; a few
> workarounds were suggested.
I am pretty sure that the last time this was discussed, it was pointed out
that pg_dump(all) and pg_restore are relative to template0, not template1.
(Though by default template1 will be the same as template0.)