Fix one-off issue with cache ID in objectaddress.c

get_catalog_object_by_oid_extended() has been doing a syscache lookup
when given a cache ID strictly higher than 0, which is wrong because the
first valid value of SysCacheIdentifier is 0.

This issue had no consequences, as the first value assigned in the
enum SysCacheIdentifier is AGGFNOID, which is not used in the object
type properties listed in objectaddress.c.  Even if an ID of 0 was
hypotherically given, the code would still work with a less efficient
heap-or-index scan.

Discussion: https://postgr.es/m/aZTr_R6JGmqokUBb@paquier.xyz
This commit is contained in:
Michael Paquier 2026-02-18 08:47:58 +09:00
parent b7271aa1d7
commit f7df12a66c

View file

@ -2808,7 +2808,7 @@ get_catalog_object_by_oid_extended(Relation catalog,
Oid classId = RelationGetRelid(catalog);
int oidCacheId = get_object_catcache_oid(classId);
if (oidCacheId > 0)
if (oidCacheId >= 0)
{
if (locktup)
tuple = SearchSysCacheLockedCopy1(oidCacheId,