postgres-github.git / summary / log / commit / refs

commit    e484b0eea61482207b8fb8df9533be6d7defc25e
Author:   Amit Langote <amitlan@postgresql.org>
Date:     Wed Apr 01 08:29:33 2026 +0000

    Fix two issues in fast-path FK check introduced by commit 2da86c1ef9
    
    First, under CLOBBER_CACHE_ALWAYS, the RI_ConstraintInfo entry can
    be invalidated by relcache callbacks triggered inside table_open()
    or index_open(), leaving ri_FastPathCheck() calling
    ri_populate_fastpath_metadata() with a stale entry whose valid flag
    is false.  Fix by moving the fpmeta initialization to after
    ri_CheckPermissions(), reloading riinfo first to ensure it is
    valid, then calling ri_ExtractValues() and build_index_scankeys()
    immediately after before any further operations that could trigger
    invalidation.
    
    Second, fpmeta allocated in TopMemoryContext was not freed when the
    entry was invalidated in InvalidateConstraintCacheCallBack(),
    leaking memory each time the constraint cache entry was recycled.
    Fix by freeing and NULLing fpmeta at invalidation time.
    
    Noticed locally when testing with CLOBBER_CACHE_ALWAYS.
    
    Discussion: https://postgr.es/m/CA+HiwqGBU__7-VZZhQWQ3EQuwLYNPd9==ngnzduhGWKHMj9mvw@mail.gmail.com

[parent: f6bd9f0fe25a]