aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2020-10-28 12:18:45 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2020-10-28 12:18:45 -0400
commit36b93121436cbbf357974144068c23bac75154fa (patch)
treecb9fcd10a3e29459e1f6aa30f56f5941f029c932
parentad1c36b0709e47cdb3cc4abd6c939fe64279b63f (diff)
downloadpostgresql-36b93121436cbbf357974144068c23bac75154fa.tar.gz
postgresql-36b93121436cbbf357974144068c23bac75154fa.zip
Don't use custom OID symbols in pg_proc.dat.
We have a perfectly good convention for OID macros for built-in functions already, so making custom symbols is just introducing unnecessary deviation from the convention. Remove the one case that had snuck in, and add an error check in genbki.pl to discourage future instances. Although this touches pg_proc.dat, there's no need for a catversion bump since the actual catalog data isn't changed. John Naylor Discussion: https://postgr.es/m/CAFBsxsHpCbjfoddNGpnnnY5pHwckWfiYkMYSF74PmP1su0+ZOw@mail.gmail.com
-rw-r--r--src/backend/catalog/genbki.pl7
-rw-r--r--src/backend/utils/cache/relcache.c4
-rw-r--r--src/include/catalog/pg_proc.dat3
3 files changed, 10 insertions, 4 deletions
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index ef3105af44b..47b1a5d7908 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -602,6 +602,13 @@ EOM
# Emit OID symbol
if (defined $bki_values{oid_symbol})
{
+ # OID symbols for builtin functions are handled automatically
+ # by utils/Gen_fmgrtab.pl
+ die sprintf
+ "custom OID symbols are not allowed for pg_proc entries: '%s'",
+ $bki_values{oid_symbol}
+ if $catname eq 'pg_proc';
+
printf $def "#define %s %s\n",
$bki_values{oid_symbol}, $bki_values{oid};
}
diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c
index 9061af81a3e..9224e2ffeda 100644
--- a/src/backend/utils/cache/relcache.c
+++ b/src/backend/utils/cache/relcache.c
@@ -1761,7 +1761,7 @@ RelationInitTableAccessMethod(Relation relation)
* seem prudent to show that in the catalog. So just overwrite it
* here.
*/
- relation->rd_amhandler = HEAP_TABLE_AM_HANDLER_OID;
+ relation->rd_amhandler = F_HEAP_TABLEAM_HANDLER;
}
else if (IsCatalogRelation(relation))
{
@@ -1769,7 +1769,7 @@ RelationInitTableAccessMethod(Relation relation)
* Avoid doing a syscache lookup for catalog tables.
*/
Assert(relation->rd_rel->relam == HEAP_TABLE_AM_OID);
- relation->rd_amhandler = HEAP_TABLE_AM_HANDLER_OID;
+ relation->rd_amhandler = F_HEAP_TABLEAM_HANDLER;
}
else
{
diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
index a66870bcc08..24ec2cfed6a 100644
--- a/src/include/catalog/pg_proc.dat
+++ b/src/include/catalog/pg_proc.dat
@@ -901,8 +901,7 @@
prosrc => 'ftoi4' },
# Table access method handlers
-{ oid => '3', oid_symbol => 'HEAP_TABLE_AM_HANDLER_OID',
- descr => 'row-oriented heap table access method handler',
+{ oid => '3', descr => 'row-oriented heap table access method handler',
proname => 'heap_tableam_handler', provolatile => 'v',
prorettype => 'table_am_handler', proargtypes => 'internal',
prosrc => 'heap_tableam_handler' },