23"PostgreSQL subtransaction context manager";
35 PyVarObject_HEAD_INIT(NULL, 0)
36 .tp_name =
"PLySubtransaction",
39 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
49 elog(
ERROR,
"could not initialize PLy_SubtransactionType");
66 return (PyObject *) ob;
92 PLy_exception_set(PyExc_ValueError,
"this subtransaction has already been entered");
98 PLy_exception_set(PyExc_ValueError,
"this subtransaction has already been exited");
145 if (!PyArg_ParseTuple(
args,
"OOO", &
type, &
value, &traceback))
156 PLy_exception_set(PyExc_ValueError,
"this subtransaction has already been exited");
List * list_delete_first(List *list)
List * lcons(void *datum, List *list)
void * MemoryContextAlloc(MemoryContext context, Size size)
MemoryContext TopTransactionContext
void pfree(void *pointer)
MemoryContext CurrentMemoryContext
static MemoryContext MemoryContextSwitchTo(MemoryContext context)
void PLy_exception_set(PyObject *exc, const char *fmt,...)
static PyObject * PLy_subtransaction_exit(PyObject *self, PyObject *args)
PyObject * PLy_subtransaction_new(PyObject *self, PyObject *unused)
static PyMethodDef PLy_subtransaction_methods[]
static PyObject * PLy_subtransaction_enter(PyObject *self, PyObject *unused)
static char PLy_subtransaction_doc[]
static PyTypeObject PLy_SubtransactionType
static void PLy_subtransaction_dealloc(PyObject *subxact)
List * explicit_subtransactions
void PLy_subtransaction_init_type(void)
struct PLySubtransactionObject PLySubtransactionObject
ResourceOwner CurrentResourceOwner
PyObject_HEAD bool started
void BeginInternalSubTransaction(const char *name)
void RollbackAndReleaseCurrentSubTransaction(void)
void ReleaseCurrentSubTransaction(void)