]> granicus.if.org Git - postgresql/commit
Fix query-lifespan memory leakage in repeatedly executed hash joins.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 16 Mar 2018 20:03:45 +0000 (16:03 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 16 Mar 2018 20:03:45 +0000 (16:03 -0400)
commit5149dc93467465e38645a5c318d7d90d806b5e53
tree4a1109de07d0e165d0aad1d8dcad3e33bc4d0806
parent02c4ad357d2189a48d744449a8b9d165ea42ad24
Fix query-lifespan memory leakage in repeatedly executed hash joins.

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
src/backend/executor/nodeHash.c