]> 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:18 +0000 (09:27 +0000)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Mon, 5 Jul 2010 09:27:18 +0000 (09:27 +0000)
commiteb81b6509f4c9109ecf8839d8c482cc597270687
treebdf77cd59647f8e932ddaf8774f90cc2ab901b4d
parent2330d9c1475a70385b116fda6cc54ac2cc2939c4
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