> I've just found a bit of undesirable functionality which I would call a bug in
> pg_dump. I'm not sure everyone would, but we'll see.
>
> Problem: the script which dumps globals such as users (pg_dumpall -g)
> involves deleting *all* users from the pg_shadow table via a direct update to
> that table. What this means in effect is that, should you attempt to use
> "pg_dumpall -g" to *move* a set of users from one active server to another
> (such as for transferring a database) the resulting pg_dump file will delete
> all of the users which previously existed on that server.
>
> This is a non-trivial accident to have happen on a shared machine; once users
> are dumped, all of their ownerships and permissions go with them. If you
> have a complex permissions system, better hope you backed up first!
>
> I find this behavior highly undesirable, and consider it a bug. The globals
> dump should just add users, and not delete any.
Yeah, it's nasty. One of the fixes that's already in from me is to make
the DELETE FROM pg_shadow and DELETE FROM pg_group only appear when -c
mode is set.
Maybe even when -c mode is set we should use DROP USER commands?
Do others agree?
Chris