Fix incorrect logic in plpgsql for cleanup after evaluation of non-simple
Tom Lane <tgl@sss.pgh.pa.us>
Fix incorrect logic in plpgsql for cleanup after evaluation of non-simple expressions. We need to deal with this when handling subscripts in an array assignment, and also when catching an exception. In an Assert-enabled build these omissions led to Assert failures, but I think in a normal build the only consequence would be short-term memory leakage; which may explain why this wasn't reported from the field long ago. Back-patch to all supported versions. 7.4 doesn't have exceptions, but otherwise these bugs go all the way back. Heikki Linnakangas and Tom Lane
Files
| Path | Change | +/− |
|---|---|---|
| src/pl/plpgsql/src/pl_exec.c | modified | +40 −3 |
| src/test/regress/expected/plpgsql.out | modified | +43 −0 |
| src/test/regress/sql/plpgsql.sql | modified | +40 −0 |