Thread: pg_dump: Refactor code that constructs ALTER ... OWNER TO commands

pg_dump: Refactor code that constructs ALTER ... OWNER TO commands

From
Peter Eisentraut
Date:
Avoid having to list all the possible object types twice.  Instead, only 
_getObjectDescription() needs to know about specific object types.  It 
communicates back to _printTocEntry() whether an owner is to be set.

In passing, remove the logic to use ALTER TABLE to set the owner of 
views and sequences.  This is no longer necessary.  Furthermore, if 
pg_dump doesn't recognize the object type, this is now a fatal error, 
not a warning.
Attachment

Re: pg_dump: Refactor code that constructs ALTER ... OWNER TO commands

From
Corey Huinker
Date:
On Mon, Oct 24, 2022 at 5:54 AM Peter Eisentraut <peter.eisentraut@enterprisedb.com> wrote:
Avoid having to list all the possible object types twice.  Instead, only
_getObjectDescription() needs to know about specific object types.  It
communicates back to _printTocEntry() whether an owner is to be set.

In passing, remove the logic to use ALTER TABLE to set the owner of
views and sequences.  This is no longer necessary.  Furthermore, if
pg_dump doesn't recognize the object type, this is now a fatal error,
not a warning.

Makes sense, passes all tests.

It's clearly out of scope for this very focused patch, but would it make sense for the TocEntry struct to be populated with an type enumeration integer as well as the type string to make for clearer and faster sifting later?


 

Re: pg_dump: Refactor code that constructs ALTER ... OWNER TO commands

From
Peter Eisentraut
Date:
On 01.11.22 13:59, Corey Huinker wrote:
> On Mon, Oct 24, 2022 at 5:54 AM Peter Eisentraut 
> <peter.eisentraut@enterprisedb.com 
> <mailto:peter.eisentraut@enterprisedb.com>> wrote:
> 
>     Avoid having to list all the possible object types twice.  Instead,
>     only
>     _getObjectDescription() needs to know about specific object types.  It
>     communicates back to _printTocEntry() whether an owner is to be set.
> 
>     In passing, remove the logic to use ALTER TABLE to set the owner of
>     views and sequences.  This is no longer necessary.  Furthermore, if
>     pg_dump doesn't recognize the object type, this is now a fatal error,
>     not a warning.
> 
> 
> Makes sense, passes all tests.

Committed.

> It's clearly out of scope for this very focused patch, but would it make 
> sense for the TocEntry struct to be populated with an type enumeration 
> integer as well as the type string to make for clearer and faster 
> sifting later?

That could be better, but wouldn't that mean a change of the format of 
pg_dump archives?



Re: pg_dump: Refactor code that constructs ALTER ... OWNER TO commands

From
Corey Huinker
Date:
On Wed, Nov 2, 2022 at 5:30 PM Peter Eisentraut <peter.eisentraut@enterprisedb.com> wrote:
On 01.11.22 13:59, Corey Huinker wrote:
> On Mon, Oct 24, 2022 at 5:54 AM Peter Eisentraut
> <peter.eisentraut@enterprisedb.com
> <mailto:peter.eisentraut@enterprisedb.com>> wrote:
>
>     Avoid having to list all the possible object types twice.  Instead,
>     only
>     _getObjectDescription() needs to know about specific object types.  It
>     communicates back to _printTocEntry() whether an owner is to be set.
>
>     In passing, remove the logic to use ALTER TABLE to set the owner of
>     views and sequences.  This is no longer necessary.  Furthermore, if
>     pg_dump doesn't recognize the object type, this is now a fatal error,
>     not a warning.
>
>
> Makes sense, passes all tests.

Committed.

> It's clearly out of scope for this very focused patch, but would it make
> sense for the TocEntry struct to be populated with an type enumeration
> integer as well as the type string to make for clearer and faster
> sifting later?

That could be better, but wouldn't that mean a change of the format of
pg_dump archives?

Sorry for the confusion, I was thinking strictly of the in memory representation after it is extracted from the dictionary.