@ -12,7 +12,7 @@
* Portions Copyright ( c ) 1994 , Regents of the University of California
*
* IDENTIFICATION
* $ PostgreSQL : pgsql / src / backend / utils / mmgr / portalmem . c , v 1.120 2010 / 07 / 06 19 : 18 : 59 momjian Exp $
* $ PostgreSQL : pgsql / src / backend / utils / mmgr / portalmem . c , v 1.121 2010 / 07 / 13 09 : 02 : 30 heikki Exp $
*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*/
@ -379,6 +379,9 @@ PortalCreateHoldStore(Portal portal)
/*
* PinPortal
* Protect a portal from dropping .
*
* A pinned portal is still unpinned and dropped at transaction or
* subtransaction abort .
*/
void
PinPortal ( Portal portal )
@ -902,6 +905,14 @@ AtSubCleanup_Portals(SubTransactionId mySubid)
if ( portal - > createSubid ! = mySubid )
continue ;
/*
* If a portal is still pinned , forcibly unpin it . PortalDrop will not
* let us drop the portal otherwise . Whoever pinned the portal was
* interrupted by the abort too and won ' t try to use it anymore .
*/
if ( portal - > portalPinned )
portal - > portalPinned = false ;
/* Zap it. */
PortalDrop ( portal , false ) ;
}