Daniel Farina <daniel@heroku.com> writes:
> Okay, one more of those fridge-logic bugs. Sorry for the noise. v5.
> A missing PG_RETHROW to get the properly finally-esque semantics:
> --- a/contrib/dblink/dblink.c
> +++ b/contrib/dblink/dblink.c
> @@ -642,7 +642,10 @@ dblink_fetch(PG_FUNCTION_ARGS)
> }
> PG_CATCH();
> {
> + /* Pop any set GUCs, if necessary */
> restoreLocalGucs(&rgs);
> +
> + PG_RE_THROW();
> }
> PG_END_TRY();
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.
regards, tom lane