Re: postgres.h included from relcache.h - but removing it breaks pg_upgrade
Alexander Korotkov <aekorotkov@gmail.com>
From: Alexander Korotkov <aekorotkov@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Andres Freund <andres@anarazel.de>,
pgsql-hackers <pgsql-hackers@postgresql.org>, Alexander Korotkov <akorotkov@postgresql.org>
Date: 2021-09-17T23:51:09Z
Lists: pgsql-hackers
Attachments
- 0001-Split-macros-from-visibilitymap.h-into-a-separate-h-.patch (application/octet-stream) patch 0001
On Tue, Sep 14, 2021 at 6:53 AM Tom Lane <tgl@sss.pgh.pa.us> wrote: > Andres Freund <andres@anarazel.de> writes: > > On 2021-09-13 22:40:19 -0400, Tom Lane wrote: > >> As for the fix ... what in the world is pg_upgrade doing including > >> relcache.h? It seems like there's a more fundamental problem here: > >> either relcache.h is declaring something that needs to be elsewhere, > >> or pg_upgrade is doing something it should not. > > > We could split visibilitymap.h into two, or we could forward-declare Relation > > and not include relcache... > > Without having looked at the details, I think using a forward-declare > to avoid including relcache.h in visibilitymap.h might be a reasonably > non-painful fix. I like that idea, but I didn't find an appropriate existing header for forward-declaration of Relation. relation.h isn't suitable, because it includes primnodes.h. A separate header for just forward-definition of Relation seems too much. > TOH, in the long run it might be worth the effort > to split visibilitymap.h to separate useful file-contents knowledge > from backend function declarations. I've drafted a patch splitting visibilitymap_maros.h from visibilitymap.h. What do you think? ------ Regards, Alexander Korotkov
Commits
-
Split macros from visibilitymap.h into a separate header
- fd22aec631af 13.5 landed
- 7186f07189ba 14.0 landed
- b92f9f74436c 15.0 landed
-
Implement operator class parameters
- 911e70207703 13.0 cited