From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | John Naylor <jcnaylor(at)gmail(dot)com> |
Cc: | pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: WIP: a way forward on bootstrap data |
Date: | 2018-04-05 17:23:41 |
Message-ID: | 14725.1522949021@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
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
I thought about improving that by removing the restriction that these
BKI annotations appear on the same line as the CATALOG macro, so that
we could break the above into several lines. I think the original key
reason for the restriction was to avoid accidentally taking some bit
of a DATA line as a BKI annotation. With the DATA lines gone from these
files, that's no longer a significant hazard (although passing references
to BKI keywords in comments might still be hazards for the Perl scripts).
However, if we try to format things like
CATALOG(pg_database,1262,DatabaseRelationId)
BKI_SHARED_RELATION
BKI_ROWTYPE_OID(1248,DatabaseRelation_Rowtype_Id)
BKI_SCHEMA_MACRO
{
fields...
}
I'm afraid that neither pgindent nor a lot of common editors would indent
that very nicely. So at least for the moment I'm inclined to just keep
it all on one line ... we know how that behaves, anyway.
regards, tom lane
Attachment | Content-Type | Size |
---|---|---|
catalog-macro-fix.patch | text/x-diff | 37.1 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Magnus Hagander | 2018-04-05 17:30:07 | Re: Online enabling of checksums |
Previous Message | Alvaro Herrera | 2018-04-05 17:07:12 | Re: [PATCH] Logical decoding of TRUNCATE |