diff --git a/src/pl/plpgsql/src/pl_exec.c b/src/pl/plpgsql/src/pl_exec.c index 935fa62..56084c3 100644 --- a/src/pl/plpgsql/src/pl_exec.c +++ b/src/pl/plpgsql/src/pl_exec.c @@ -1253,8 +1253,6 @@ exec_stmt_block(PLpgSQL_execstate *estate, PLpgSQL_stmt_block *block) /* Abort the inner transaction */ RollbackAndReleaseCurrentSubTransaction(); - MemoryContextSwitchTo(oldcontext); - CurrentResourceOwner = oldowner; /* Revert to outer eval_econtext */ estate->eval_econtext = old_eval_econtext; @@ -1326,6 +1324,9 @@ exec_stmt_block(PLpgSQL_execstate *estate, PLpgSQL_stmt_block *block) ReThrowError(edata); else FreeErrorData(edata); + + MemoryContextSwitchTo(oldcontext); + CurrentResourceOwner = oldowner; } PG_END_TRY();