Fix a gradual memory leak in ExecReScanAgg(). Because the aggregation
authorNeil Conway <neilc@samurai.com>
Wed, 8 Aug 2007 18:07:05 +0000 (18:07 +0000)
committerNeil Conway <neilc@samurai.com>
Wed, 8 Aug 2007 18:07:05 +0000 (18:07 +0000)
commitb500502cfa9f0042f7a140d194610edb8df2261a
treee25c007ffaca34197bc7cd7edda21c5e80e17f5a
parent4e69e1995b702b7d0cd5b80b0a7baac4abc55953
Fix a gradual memory leak in ExecReScanAgg(). Because the aggregation
hash table is allocated in a child context of the agg node's memory
context, MemoryContextReset() will reset but *not* delete the child
context. Since ExecReScanAgg() proceeds to build a new hash table
from scratch (in a new sub-context), this results in leaking the
header for the previous memory context. Therefore, use
MemoryContextResetAndDeleteChildren() instead.

Credit: My colleague Sailesh Krishnamurthy at Truviso for isolating
the cause of the leak.
src/backend/executor/nodeAgg.c