]> granicus.if.org Git - postgresql/commit
The previous fix in CVS HEAD and 8.4 for handling the case where a cursor
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Mon, 5 Jul 2010 09:27:24 +0000 (09:27 +0000)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Mon, 5 Jul 2010 09:27:24 +0000 (09:27 +0000)
commit0f0b236b0311fc78f37cfb526685a8a105643f6d
treec3fb7c710ce41b63363e4b3644141f31964d8e57
parentbf53e7938d14d9cbe22d5756c76529a882420085
The previous fix in CVS HEAD and 8.4 for handling the case where a cursor
being used in a PL/pgSQL FOR loop is closed was inadequate, as Tom Lane
pointed out. The bug affects FOR statement variants too, because you can
close an implicitly created cursor too by guessing the "<unnamed portal X>"
name created for it.

To fix that, "pin" the portal to prevent it from being dropped while it's
being used in a PL/pgSQL FOR loop. Backpatch all the way to 7.4 which is
the oldest supported version.
src/backend/utils/mmgr/portalmem.c
src/include/utils/portal.h
src/pl/plpgsql/src/pl_exec.c