postgres.git / summary / log / commit / refs

commit    f7df12a66cc90ed12d24edba31eeedfb546ef14c
Author:   Michael Paquier <michael@paquier.xyz>
Date:     Tue Feb 17 23:47:58 2026 +0000

    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


src/backend/catalog/objectaddress.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c index 02af64b82c6..198caf641a5 100644 --- a/src/backend/catalog/objectaddress.c +++ b/src/backend/catalog/objectaddress.c @@ -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, [parent: b7271aa1d71a]