On 2024-02-27 Tu 15:12, Tom Lane wrote:
> Jim Wilson <jim@wreath.com> writes:
>> Including "CREATE ROLE postgres;" in the dumpall will cause the script to
>> throw an error.
> I believe the reason pg_dumpall does that is to avoid worse failures
> if the target installation has a different bootstrap superuser name
> than the source did. One error is easier to ignore than hundreds
> of 'em.
>
> We could avoid that problem if we wanted to invent and use CREATE
> OR REPLACE ROLE, but that would have downsides of its own, such as
> silently overwriting the properties of any roles that already exist
> in the target (IOW, the cases where you *want* to get that error).
>
> Maybe it'd work to invent C.O.R.R. but only use it for the bootstrap
> superuser, with plain CREATE ROLE for the rest. Haven't really
> thought through the consequences of that.
>
>
What if we just skip creating the role if it's the bootstrap superuser
in the source and has the same name as the bootstrap superuser in the
destination, using some DO processing?
cheers
andrew
--
Andrew Dunstan
EDB: https://www.enterprisedb.com