]> granicus.if.org Git - postgresql/commit
Avoid memory leakage when a series of subtransactions invoke AFTER triggers
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 1 Jul 2007 17:45:49 +0000 (17:45 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 1 Jul 2007 17:45:49 +0000 (17:45 +0000)
commitb60765944d60abab22a9f15e63671efecb9748f2
treea537a87666f14a615896734a29dc49118a8f1e86
parentf6eafabc6e66f946707ff5d29078889863382778
Avoid memory leakage when a series of subtransactions invoke AFTER triggers
that are fired at end-of-statement (as is the normal case for foreign keys,
for example).  In this situation the per-subxact deferred trigger context
is always empty when subtransaction exit is reached; so we could free it,
but were not doing so, leading to an intratransaction leak of 8K or more
per subtransaction.  Per off-list example from Viatcheslav Kalinin
subsequent to bug #3418 (his original bug report omitted a foreign key
constraint needed to cause this leak).

Back-patch to 8.2; prior versions were not using per-subxact contexts
for deferred triggers, so did not have this leak.
src/backend/commands/trigger.c