• Tom Lane's avatar
    Fix another ancient memory-leak bug in relcache.c. · 73eba19a
    Tom Lane authored
    CheckConstraintFetch() leaked a cstring in the caller's context for each
    CHECK constraint expression it copied into the relcache.  Ordinarily that
    isn't problematic, but it can be during CLOBBER_CACHE testing because so
    many reloads can happen during a single query; so complicate the code
    slightly to allow freeing the cstring after use.  Per testing on buildfarm
    member barnacle.
    
    This is exactly like the leak fixed in AttrDefaultFetch() by commit
    078b2ed2.  (Yes, this time I did look for
    other instances of the same coding pattern :-(.)  Like that patch, no
    back-patch, since it seems unlikely that there's any problem except under
    very artificial test conditions.
    
    BTW, it strikes me that both of these places would require further work
    comparable to commit ab8c84db, if we ever
    supported defaults or check constraints on system catalogs: they both
    assume they are copying into an empty relcache data structure, and that
    conceivably wouldn't be the case during recursive reloading of a system
    catalog.  This does not seem worth worrying about for the moment, since
    there is no near-term prospect of supporting any such thing.  So I'll
    just note the possibility for the archives' sake.
    73eba19a
relcache.c 159 KB