]> granicus.if.org Git - postgresql/commit
Remove unnecessary PG_TRY overhead for CurrentResourceOwner changes.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 11 Oct 2017 21:43:50 +0000 (17:43 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 11 Oct 2017 21:44:09 +0000 (17:44 -0400)
commit5fa6b0d102eb8ccd15c4963ee9841baec50df45e
treef35515f23f5802fbf3f8506778ceb9363f7e33a3
parentf676616651c83b14e1d879fbfabdd3ab2dc70bbe
Remove unnecessary PG_TRY overhead for CurrentResourceOwner changes.

resowner/README contained advice to use a PG_TRY block to restore the
old CurrentResourceOwner value anywhere that that variable is transiently
changed.  That advice was only inconsistently followed, however, and
on reflection it seems like unnecessary overhead.  We don't bother
with such a convention for transient CurrentMemoryContext changes,
on the grounds that any (sub)transaction abort will start out by
resetting CurrentMemoryContext to what it wants.  But the same is
true of CurrentResourceOwner, so there seems no need to treat it
differently.

Hence, remove PG_TRY blocks that exist only to restore CurrentResourceOwner
before re-throwing the error.  There are a couple of places that restore
it along with some other actions, and I left those alone; the restore is
probably unnecessary but no noticeable gain will result from removing it.

Discussion: https://postgr.es/m/5236.1507583529@sss.pgh.pa.us
src/backend/access/transam/xact.c
src/backend/commands/portalcmds.c
src/backend/commands/sequence.c
src/backend/commands/trigger.c
src/backend/storage/large_object/inv_api.c
src/backend/utils/resowner/README
src/backend/utils/resowner/resowner.c