]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Fix plancache refcount leak after error in ExecuteQuery.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 16 Jun 2021 23:30:17 +0000 (19:30 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 16 Jun 2021 23:30:17 +0000 (19:30 -0400)
commit9cf163266017ec6d0e190313cce1d417cbf4a549
tree6c2c2efa5f32641c74efd5ca2457dcc1447d80e7
parentc0a7587807dd9e0db5dbffb6d6b813a3e87d2519
Fix plancache refcount leak after error in ExecuteQuery.

When stuffing a plan from the plancache into a Portal, one is
not supposed to risk throwing an error between GetCachedPlan and
PortalDefineQuery; if that happens, the plan refcount incremented
by GetCachedPlan will be leaked.  I managed to break this rule
while refactoring code in 9dbf2b7d7.  There is no visible
consequence other than some memory leakage, and since nobody is
very likely to trigger the relevant error conditions many times
in a row, it's not surprising we haven't noticed.  Nonetheless,
it's a bug, so rearrange the order of operations to remove the
hazard.

Noted on the way to looking for a better fix for bug #17053.
This mistake is pretty old, so back-patch to all supported
branches.
src/backend/commands/prepare.c