Skip site navigation (1) Skip section navigation (2)

pgsql: Run a portal's cleanup hook immediately when pushing it toFAILE

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Run a portal's cleanup hook immediately when pushing it toFAILE
Date: 2012-02-15 21:19:10
Message-ID: (view raw, whole thread or download thread mbox)
Lists: pgsql-committers
Run a portal's cleanup hook immediately when pushing it to FAILED state.

This extends the changes of commit 6252c4f9e201f619e5eebda12fa867acd4e4200e
so that we run the cleanup hook earlier for failure cases as well as
success cases.  As before, the point is to avoid an assertion failure from
an Assert I added in commit a874fe7b4c890d1fe3455215a83ca777867beadd, which
was meant to check that no user-written code can be called during portal
cleanup.  This fixes a case reported by Pavan Deolasee in which the Assert
could be triggered during backend exit (see the new regression test case),
and also prevents the possibility that the cleanup hook is run after
portions of the portal's state have already been recycled.  That doesn't
really matter in current usage, but it foreseeably could matter in the

Back-patch to 9.1 where the Assert in question was added.



Modified Files
src/backend/commands/portalcmds.c          |    8 +++-
src/backend/tcop/pquery.c                  |    6 ++--
src/backend/utils/mmgr/portalmem.c         |   53 ++++++++++++++++++++++++----
src/include/utils/portal.h                 |    1 +
src/test/regress/expected/transactions.out |   33 ++++-------------
src/test/regress/sql/transactions.sql      |   13 ++++---
6 files changed, 72 insertions(+), 42 deletions(-)

pgsql-committers by date

Next:From: Robert HaasDate: 2012-02-16 16:52:14
Subject: pgsql: Invent on_exit_nicely for pg_dump.
Previous:From: Robert HaasDate: 2012-02-15 20:54:14
Subject: Re: [COMMITTERS] pgsql: Speed up in-memory tuplesorting.

Privacy Policy | About PostgreSQL
Copyright © 1996-2017 The PostgreSQL Global Development Group