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, 24 insertions, 17 deletions
diff --git a/src/pl/plpython/plpy_subxactobject.c b/src/pl/plpython/plpy_subxactobject.c
index 5c92a0e089a..cc7ff3f9df7 100644
--- a/src/pl/plpython/plpy_subxactobject.c
+++ b/src/pl/plpython/plpy_subxactobject.c
@@ -15,7 +15,6 @@
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);
@@ -31,21 +30,35 @@ static PyMethodDef PLy_subtransaction_methods[] = {
{NULL, NULL, 0, NULL}
};
-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 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;
+
void
PLy_subtransaction_init_type(void)
{
- if (PyType_Ready(&PLy_SubtransactionType) < 0)
+ PLy_SubtransactionType = (PyTypeObject *) PyType_FromSpec(&PLySubtransaction_spec);
+ if (!PLy_SubtransactionType)
elog(ERROR, "could not initialize PLy_SubtransactionType");
}
@@ -55,7 +68,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;
@@ -66,12 +79,6 @@ 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()
*