PortalRun must guard against the possibility that the portal it's
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 4 Oct 2004 21:52:15 +0000 (21:52 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 4 Oct 2004 21:52:15 +0000 (21:52 +0000)
commit4c77cbb272948e96ce3ed02d444a944eb45d45e3
treef3dfa5472465d452fad976c83cc15b1038249fe8
parentee7de3d66296513d50b6df1166f6fc84e2b9b5fe
PortalRun must guard against the possibility that the portal it's
running contains VACUUM or a similar command that will internally start
and commit transactions.  In such a case, the original caller values of
CurrentMemoryContext and CurrentResourceOwner will point to objects that
will be destroyed by the internal commit.  We must restore these pointers
to point to the newly-manufactured transaction context and resource owner,
rather than possibly pointing to deleted memory.
Also tweak xact.c so that AbortTransaction and AbortSubTransaction
forcibly restore a sane value for CurrentResourceOwner, much as they
have always done for CurrentMemoryContext.  I'm not certain this is
necessary but I'm feeling paranoid today.
Responds to Sean Chittenden's bug report of 4-Oct.
src/backend/access/transam/xact.c
src/backend/tcop/pquery.c