diff options
Diffstat (limited to 'src/pl/plpython/plpy_subxactobject.c')
-rw-r--r-- | src/pl/plpython/plpy_subxactobject.c | 41 |
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() * |