Daniel Farina <daniel(at)heroku(dot)com> writes:
> On Wed, Mar 20, 2013 at 7:43 AM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>> Um ... you shouldn't need a PG_TRY for that at all. guc.c will take
>> care of popping the values on transaction abort --- that's really rather
>> the whole point of having that mechanism.
> Hmm, well, merely raising the error doesn't reset the GUCs, so I was
> rather thinking that this was a good idea to compose more neatly in
> the case of nested exception processing, e.g.:
In general, we don't allow processing to resume after an error until
transaction or subtransaction abort cleanup has been done. It's true
that if you look at the GUC state in a PG_CATCH block, you'll see it
hasn't been reset yet, but that's not very relevant.
regards, tom lane