On 4/6/18, Tom Lane <t...@sss.pgh.pa.us> wrote: > I experimented with converting all frontend code to include just the > catalog/pg_foo_d.h files instead of catalog/pg_foo.h, as per the > proposed new policy. I soon found that we'd overlooked one thing: > some clients expect to see the relation OID macros, eg > LargeObjectRelationId. Attached is a patch that changes things around > so that those appear in the _d files instead of the master files. > This is cleaner anyway because it removes duplication of the OIDs in > the master files, with attendant risk of error. For example we > have this change in pg_aggregate.h: > > -#define AggregateRelationId 2600 > - > -CATALOG(pg_aggregate,2600) BKI_WITHOUT_OIDS > +CATALOG(pg_aggregate,2600,AggregateRelationId) BKI_WITHOUT_OIDS > > Some of the CATALOG lines spill well past 80 characters with this, > although many of the affected ones already were overlength, eg > > -#define DatabaseRelationId 1262 > -#define DatabaseRelation_Rowtype_Id 1248 > - > -CATALOG(pg_database,1262) BKI_SHARED_RELATION BKI_ROWTYPE_OID(1248) > BKI_SCHEMA_MACRO > +CATALOG(pg_database,1262,DatabaseRelationId) BKI_SHARED_RELATION > BKI_ROWTYPE_OID(1248,DatabaseRelation_Rowtype_Id) BKI_SCHEMA_MACRO
It seems most of the time the FooRelationId labels are predictable, although not as pristine as the Anum_* constants. One possibility that came to mind is to treat these like pg_type OID #defines -- have a simple rule that can be overridden for historical reasons. In this case the pg_database change would simply be: -#define DatabaseRelationId 1262 -#define DatabaseRelation_Rowtype_Id 1248 - and genbki.pl would know what to do. But for pg_am: -#define AccessMethodRelationId 2601 - -CATALOG(pg_am,2601) +CATALOG(pg_am,2601) BKI_REL_LABEL(AccessMethod) I haven't thought this through yet. I imagine it will add as well as remove a bit of complexity, code-wise. The upside is most CATALOG lines will remain unchanged, and those that do won't end up quite as long. I can try a draft tomorrow to see how it looks, unless you see an obvious downside. -John Naylor