aboutsummaryrefslogtreecommitdiff
path: root/src/pl/plpython/plpy_exec.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pl/plpython/plpy_exec.c')
-rw-r--r--src/pl/plpython/plpy_exec.c12
1 files changed, 2 insertions, 10 deletions
diff --git a/src/pl/plpython/plpy_exec.c b/src/pl/plpython/plpy_exec.c
index 920322e912b..6994d7c10b9 100644
--- a/src/pl/plpython/plpy_exec.c
+++ b/src/pl/plpython/plpy_exec.c
@@ -403,18 +403,13 @@ PLy_exec_trigger(FunctionCallInfo fcinfo, PLyProcedure *proc)
}
}
}
- PG_CATCH();
+ PG_FINALLY();
{
Py_XDECREF(plargs);
Py_XDECREF(plrv);
-
- PG_RE_THROW();
}
PG_END_TRY();
- Py_DECREF(plargs);
- Py_DECREF(plrv);
-
return rv;
}
@@ -1052,15 +1047,12 @@ PLy_procedure_call(PLyProcedure *proc, const char *kargs, PyObject *vargs)
*/
Assert(list_length(explicit_subtransactions) >= save_subxact_level);
}
- PG_CATCH();
+ PG_FINALLY();
{
PLy_abort_open_subtransactions(save_subxact_level);
- PG_RE_THROW();
}
PG_END_TRY();
- PLy_abort_open_subtransactions(save_subxact_level);
-
/* If the Python code returned an error, propagate it */
if (rv == NULL)
PLy_elog(ERROR, NULL);