aboutsummaryrefslogtreecommitdiff
path: root/src/pl/plpython/plpy_subxactobject.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pl/plpython/plpy_subxactobject.c')
-rw-r--r--src/pl/plpython/plpy_subxactobject.c41
1 files changed, 17 insertions, 24 deletions
diff --git a/src/pl/plpython/plpy_subxactobject.c b/src/pl/plpython/plpy_subxactobject.c
index cc7ff3f9df7..5c92a0e089a 100644
--- a/src/pl/plpython/plpy_subxactobject.c
+++ b/src/pl/plpython/plpy_subxactobject.c
@@ -15,6 +15,7 @@
List *explicit_subtransactions = NIL;
+static void PLy_subtransaction_dealloc(PyObject *subxact);
static PyObject *PLy_subtransaction_enter(PyObject *self, PyObject *unused);
static PyObject *PLy_subtransaction_exit(PyObject *self, PyObject *args);
@@ -30,35 +31,21 @@ static PyMethodDef PLy_subtransaction_methods[] = {
{NULL, NULL, 0, NULL}
};
-static PyType_Slot PLySubtransaction_slots[] =
-{
- {
- Py_tp_doc, (char *) PLy_subtransaction_doc
- },
- {
- Py_tp_methods, PLy_subtransaction_methods
- },
- {
- 0, NULL
- }
-};
-
-static PyType_Spec PLySubtransaction_spec =
-{
- .name = "PLySubtransaction",
- .basicsize = sizeof(PLySubtransactionObject),
- .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
- .slots = PLySubtransaction_slots,
+static PyTypeObject PLy_SubtransactionType = {
+ PyVarObject_HEAD_INIT(NULL, 0)
+ .tp_name = "PLySubtransaction",
+ .tp_basicsize = sizeof(PLySubtransactionObject),
+ .tp_dealloc = PLy_subtransaction_dealloc,
+ .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
+ .tp_doc = PLy_subtransaction_doc,
+ .tp_methods = PLy_subtransaction_methods,
};
-static PyTypeObject *PLy_SubtransactionType;
-
void
PLy_subtransaction_init_type(void)
{
- PLy_SubtransactionType = (PyTypeObject *) PyType_FromSpec(&PLySubtransaction_spec);
- if (!PLy_SubtransactionType)
+ if (PyType_Ready(&PLy_SubtransactionType) < 0)
elog(ERROR, "could not initialize PLy_SubtransactionType");
}
@@ -68,7 +55,7 @@ PLy_subtransaction_new(PyObject *self, PyObject *unused)
{
PLySubtransactionObject *ob;
- ob = PyObject_New(PLySubtransactionObject, PLy_SubtransactionType);
+ ob = PyObject_New(PLySubtransactionObject, &PLy_SubtransactionType);
if (ob == NULL)
return NULL;
@@ -79,6 +66,12 @@ PLy_subtransaction_new(PyObject *self, PyObject *unused)
return (PyObject *) ob;
}
+/* Python requires a dealloc function to be defined */
+static void
+PLy_subtransaction_dealloc(PyObject *subxact)
+{
+}
+
/*
* subxact.__enter__() or subxact.enter()
*