Thread: Find dangling membership roles in pg_dumpall

Find dangling membership roles in pg_dumpall

From
Andreas 'ads' Scherbaum
Date:
Hello,

pg_dumpall.c has a function dumpRoleMembership() which dumps all
membership roles. This function includes a piece of code which checks
if the membership tree has an open end which can't be resolved.
However that code is never used.

The variable prev_remaining is initially set to 0, and then never changed.
Which in turn never executes this code:

if (remaining == prev_remaining)

because the loop is only entered while "remaining > 0".

The attached patch fixes this problem, and updates prev_remaining inside
the loop.


Co-Author: Artur Zakirov <zaartur@gmail.com>
who reviewed the patch.


Regards

-- 
                Andreas 'ads' Scherbaum
German PostgreSQL User Group
European PostgreSQL User Group - Board of Directors
Volunteer Regional Contact, Germany - PostgreSQL Project

Attachment

Re: Find dangling membership roles in pg_dumpall

From
Daniel Gustafsson
Date:
> On 26 Apr 2023, at 12:18, Andreas 'ads' Scherbaum <ads@pgug.de> wrote:
> 
> 
> Hello,
> 
> pg_dumpall.c has a function dumpRoleMembership() which dumps all
> membership roles. This function includes a piece of code which checks
> if the membership tree has an open end which can't be resolved.
> However that code is never used.
> 
> The variable prev_remaining is initially set to 0, and then never changed.
> Which in turn never executes this code:
> 
> if (remaining == prev_remaining)
> 
> because the loop is only entered while "remaining > 0".
> 
> The attached patch fixes this problem, and updates prev_remaining inside
> the loop.

Nice catch, that indeed seems like a proper fix.  This was introduced in
ce6b672e44 and so doesn't need a backpatch.

--
Daniel Gustafsson




Re: Find dangling membership roles in pg_dumpall

From
Daniel Gustafsson
Date:
> On 26 Apr 2023, at 13:02, Daniel Gustafsson <daniel@yesql.se> wrote:
>> On 26 Apr 2023, at 12:18, Andreas 'ads' Scherbaum <ads@pgug.de> wrote:

>> The attached patch fixes this problem, and updates prev_remaining inside
>> the loop.
>
> Nice catch, that indeed seems like a proper fix.  This was introduced in
> ce6b672e44 and so doesn't need a backpatch.

Pushed, but without the comment extension as I felt the existing comment aptly
discussed the codepath. Thanks!

--
Daniel Gustafsson




Re: Find dangling membership roles in pg_dumpall

From
Robert Haas
Date:
On Wed, Apr 26, 2023 at 8:29 AM Daniel Gustafsson <daniel@yesql.se> wrote:
> Pushed, but without the comment extension as I felt the existing comment aptly
> discussed the codepath. Thanks!

Woopsie. Thanks to both of you.

--
Robert Haas
EDB: http://www.enterprisedb.com