Обсуждение: Error during restore - dump taken with pg_dumpall -c option

Поиск
Список
Период
Сортировка

Error during restore - dump taken with pg_dumpall -c option

От
Rushabh Lathia
Дата:

On master branch when we do pg_dumpall with -c option, I can see that
it also dumping the "DROP ROLE pg_signal_backend", which seems wrong.
Because when you restore the dump, its throwing an error
"ERROR:  cannot drop role pg_signal_backend because it is required by the database system".


dumpRoles()::pg_dumpall.c does have logic to not dump "CREATE ROLE"  if the
rolename starts with "pg_", but similar check is missing into dropRoles() function.

PFA patch, to fix the problem in the similar way its been handled into dumpRoles().

Thanks,


--
Rushabh Lathia
Вложения

Re: Error during restore - dump taken with pg_dumpall -c option

От
Fabrízio de Royes Mello
Дата:


Em quinta-feira, 12 de maio de 2016, Rushabh Lathia <rushabh.lathia@gmail.com> escreveu:

On master branch when we do pg_dumpall with -c option, I can see that
it also dumping the "DROP ROLE pg_signal_backend", which seems wrong.
Because when you restore the dump, its throwing an error
"ERROR:  cannot drop role pg_signal_backend because it is required by the database system".


dumpRoles()::pg_dumpall.c does have logic to not dump "CREATE ROLE"  if the
rolename starts with "pg_", but similar check is missing into dropRoles() function.

PFA patch, to fix the problem in the similar way its been handled into dumpRoles().


Shouldn't this logic be applied just to version >= 9.6? I ask it because you write a special query filtering rolname !~ '^pg_' and again check it using strcmp before the drop role output. Is this the expected behavior? 


--
Fabrízio de Royes Mello
Consultoria/Coaching PostgreSQL

Re: Error during restore - dump taken with pg_dumpall -c option

От
Michael Paquier
Дата:
On Thu, May 12, 2016 at 9:48 PM, Fabrízio de Royes Mello
<fabriziomello@gmail.com> wrote:
>
>
> Em quinta-feira, 12 de maio de 2016, Rushabh Lathia
> <rushabh.lathia@gmail.com> escreveu:
>>
>>
>> On master branch when we do pg_dumpall with -c option, I can see that
>> it also dumping the "DROP ROLE pg_signal_backend", which seems wrong.
>> Because when you restore the dump, its throwing an error
>> "ERROR:  cannot drop role pg_signal_backend because it is required by the
>> database system".
>>
>>
>> dumpRoles()::pg_dumpall.c does have logic to not dump "CREATE ROLE"  if
>> the
>> rolename starts with "pg_", but similar check is missing into dropRoles()
>> function.
>>
>> PFA patch, to fix the problem in the similar way its been handled into
>> dumpRoles().
>>
>
> Shouldn't this logic be applied just to version >= 9.6? I ask it because you
> write a special query filtering rolname !~ '^pg_' and again check it using
> strcmp before the drop role output. Is this the expected behavior?

The patch looks correct to me: as far as I recall we give no guarantee
that a dump generated by pg_dump based on a given version would load
data correctly in an older version of the backend. So, when with 9.6's
pg_dump, dumping from a < 9.6 backend, bypassing the role names
beginning by "pg_" and letting the user know about their existence
without dumping them looks fine.
--
Michael



Re: Error during restore - dump taken with pg_dumpall -c option

От
Stephen Frost
Дата:
* Rushabh Lathia (rushabh.lathia@gmail.com) wrote:
> On master branch when we do pg_dumpall with -c option, I can see that
> it also dumping the "DROP ROLE pg_signal_backend", which seems wrong.
> Because when you restore the dump, its throwing an error
> "ERROR:  cannot drop role pg_signal_backend because it is required by the
> database system".

Ah, yes, dropRoles() needs the same change that dumpRoles() got.

Will fix, thanks!

Stephen

Re: Error during restore - dump taken with pg_dumpall -c option

От
Rushabh Lathia
Дата:


On Fri, May 13, 2016 at 7:27 PM, Stephen Frost <sfrost@snowman.net> wrote:
* Rushabh Lathia (rushabh.lathia@gmail.com) wrote:
> On master branch when we do pg_dumpall with -c option, I can see that
> it also dumping the "DROP ROLE pg_signal_backend", which seems wrong.
> Because when you restore the dump, its throwing an error
> "ERROR:  cannot drop role pg_signal_backend because it is required by the
> database system".

Ah, yes, dropRoles() needs the same change that dumpRoles() got.

Will fix, thanks!


Thanks Stephen.

Re: Error during restore - dump taken with pg_dumpall -c option

От
Stephen Frost
Дата:
Rushabh,

* Rushabh Lathia (rushabh.lathia@gmail.com) wrote:
> On Fri, May 13, 2016 at 7:27 PM, Stephen Frost <sfrost@snowman.net> wrote:
>
> > * Rushabh Lathia (rushabh.lathia@gmail.com) wrote:
> > > On master branch when we do pg_dumpall with -c option, I can see that
> > > it also dumping the "DROP ROLE pg_signal_backend", which seems wrong.
> > > Because when you restore the dump, its throwing an error
> > > "ERROR:  cannot drop role pg_signal_backend because it is required by the
> > > database system".
> >
> > Ah, yes, dropRoles() needs the same change that dumpRoles() got.
> >
> > Will fix, thanks!
>
> Thanks Stephen.

I've puhsed a fix for this.

Thanks!

Stephen