I noticed a minor leak in the per-query context when ExecReScanAgg() is called for a hashed aggregate. During rescan, build_hash_table() is called to create a new empty hash table in the aggcontext. However, build_hash_table() also constructs the "hash_needed" column list in the per-query context, so repeated calls of build_hash_table() result in leaking this memory for the duration of the query.
Attached is a patch that fixes this by only constructing "hash_needed" if it doesn't already exist. I also bms_free'd the temporary BMS that is created, although that's pretty harmless. Neil
hashed_agg_mem_leak-1.patch
Description: Binary data
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers