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
pull/57/head
Tom Lane 5 years ago
parent ad1c36b070
commit 36b9312143
  1. 7
      src/backend/catalog/genbki.pl
  2. 4
      src/backend/utils/cache/relcache.c
  3. 3
      src/include/catalog/pg_proc.dat

@ -602,6 +602,13 @@ EOM
# Emit OID symbol # Emit OID symbol
if (defined $bki_values{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", printf $def "#define %s %s\n",
$bki_values{oid_symbol}, $bki_values{oid}; $bki_values{oid_symbol}, $bki_values{oid};
} }

@ -1761,7 +1761,7 @@ RelationInitTableAccessMethod(Relation relation)
* seem prudent to show that in the catalog. So just overwrite it * seem prudent to show that in the catalog. So just overwrite it
* here. * here.
*/ */
relation->rd_amhandler = HEAP_TABLE_AM_HANDLER_OID; relation->rd_amhandler = F_HEAP_TABLEAM_HANDLER;
} }
else if (IsCatalogRelation(relation)) else if (IsCatalogRelation(relation))
{ {
@ -1769,7 +1769,7 @@ RelationInitTableAccessMethod(Relation relation)
* Avoid doing a syscache lookup for catalog tables. * Avoid doing a syscache lookup for catalog tables.
*/ */
Assert(relation->rd_rel->relam == HEAP_TABLE_AM_OID); 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 else
{ {

@ -901,8 +901,7 @@
prosrc => 'ftoi4' }, prosrc => 'ftoi4' },
# Table access method handlers # Table access method handlers
{ oid => '3', oid_symbol => 'HEAP_TABLE_AM_HANDLER_OID', { oid => '3', descr => 'row-oriented heap table access method handler',
descr => 'row-oriented heap table access method handler',
proname => 'heap_tableam_handler', provolatile => 'v', proname => 'heap_tableam_handler', provolatile => 'v',
prorettype => 'table_am_handler', proargtypes => 'internal', prorettype => 'table_am_handler', proargtypes => 'internal',
prosrc => 'heap_tableam_handler' }, prosrc => 'heap_tableam_handler' },

Loading…
Cancel
Save