• Tom Lane's avatar
    Fix query-lifespan memory leakage in repeatedly executed hash joins. · 9e17bdb8
    Tom Lane authored
    ExecHashTableCreate allocated some memory that wasn't freed by
    ExecHashTableDestroy, specifically the per-hash-key function information.
    That's not a huge amount of data, but if one runs a query that repeats
    a hash join enough times, it builds up.  Fix by arranging for the data
    in question to be kept in the hashtable's hashCxt instead of leaving it
    "loose" in the query-lifespan executor context.  (This ensures that we'll
    also clean up anything that the hash functions allocate in fn_mcxt.)
    
    Per report from Amit Khandekar.  It's been like this forever, so back-patch
    to all supported branches.
    
    Discussion: https://postgr.es/m/CAJ3gD9cFofAWGvcxLOxDHC=B0hjtW8yGmUsF2hdGh97CM38=7g@mail.gmail.com
    9e17bdb8
nodeHash.c 98.8 KB