/**********************************************************************
* plpython.c - python as a procedural language for PostgreSQL
*
- * $PostgreSQL: pgsql/src/pl/plpython/plpython.c,v 1.125 2009/08/14 13:12:21 petere Exp $
+ * $PostgreSQL: pgsql/src/pl/plpython/plpython.c,v 1.126 2009/08/25 08:14:42 petere Exp $
*
*********************************************************************
*/
#define is_PLyPlanObject(x) ((x)->ob_type == &PLy_PlanType)
static PyObject *PLy_plan_new(void);
static void PLy_plan_dealloc(PyObject *);
-static PyObject *PLy_plan_getattr(PyObject *, char *);
static PyObject *PLy_plan_status(PyObject *, PyObject *);
static PyObject *PLy_result_new(void);
static void PLy_result_dealloc(PyObject *);
-static PyObject *PLy_result_getattr(PyObject *, char *);
static PyObject *PLy_result_nrows(PyObject *, PyObject *);
static PyObject *PLy_result_status(PyObject *, PyObject *);
static Py_ssize_t PLy_result_length(PyObject *);
static PyObject *PLy_spi_execute_fetch_result(SPITupleTable *, int, int);
+static PyMethodDef PLy_plan_methods[] = {
+ {"status", PLy_plan_status, METH_VARARGS, NULL},
+ {NULL, NULL, 0, NULL}
+};
+
static PyTypeObject PLy_PlanType = {
PyObject_HEAD_INIT(NULL)
0, /* ob_size */
*/
PLy_plan_dealloc, /* tp_dealloc */
0, /* tp_print */
- PLy_plan_getattr, /* tp_getattr */
+ 0, /* tp_getattr */
0, /* tp_setattr */
0, /* tp_compare */
0, /* tp_repr */
0, /* tp_as_buffer */
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
PLy_plan_doc, /* tp_doc */
-};
-
-static PyMethodDef PLy_plan_methods[] = {
- {"status", PLy_plan_status, METH_VARARGS, NULL},
- {NULL, NULL, 0, NULL}
+ 0, /* tp_traverse */
+ 0, /* tp_clear */
+ 0, /* tp_richcompare */
+ 0, /* tp_weaklistoffset */
+ 0, /* tp_iter */
+ 0, /* tp_iternext */
+ PLy_plan_methods, /* tp_tpmethods */
};
static PySequenceMethods PLy_result_as_sequence = {
PLy_result_ass_slice, /* sq_ass_slice */
};
+static PyMethodDef PLy_result_methods[] = {
+ {"nrows", PLy_result_nrows, METH_VARARGS, NULL},
+ {"status", PLy_result_status, METH_VARARGS, NULL},
+ {NULL, NULL, 0, NULL}
+};
+
static PyTypeObject PLy_ResultType = {
PyObject_HEAD_INIT(NULL)
0, /* ob_size */
*/
PLy_result_dealloc, /* tp_dealloc */
0, /* tp_print */
- PLy_result_getattr, /* tp_getattr */
+ 0, /* tp_getattr */
0, /* tp_setattr */
0, /* tp_compare */
0, /* tp_repr */
0, /* tp_as_buffer */
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
PLy_result_doc, /* tp_doc */
-};
-
-static PyMethodDef PLy_result_methods[] = {
- {"nrows", PLy_result_nrows, METH_VARARGS, NULL},
- {"status", PLy_result_status, METH_VARARGS, NULL},
- {NULL, NULL, 0, NULL}
+ 0, /* tp_traverse */
+ 0, /* tp_clear */
+ 0, /* tp_richcompare */
+ 0, /* tp_weaklistoffset */
+ 0, /* tp_iter */
+ 0, /* tp_iternext */
+ PLy_result_methods, /* tp_tpmethods */
};
static PyMethodDef PLy_methods[] = {
}
-static PyObject *
-PLy_plan_getattr(PyObject *self, char *name)
-{
- return Py_FindMethod(PLy_plan_methods, self, name);
-}
-
static PyObject *
PLy_plan_status(PyObject *self, PyObject *args)
{
arg->ob_type->tp_free(arg);
}
-static PyObject *
-PLy_result_getattr(PyObject *self, char *name)
-{
- return Py_FindMethod(PLy_result_methods, self, name);
-}
-
static PyObject *
PLy_result_nrows(PyObject *self, PyObject *args)
{