11/**********************************************************************
22 * plpython.c - python as a procedural language for PostgreSQL
33 *
4- *$PostgreSQL: pgsql/src/pl/plpython/plpython.c,v 1.125 2009/08/14 13:12:21 petere Exp $
4+ *$PostgreSQL: pgsql/src/pl/plpython/plpython.c,v 1.126 2009/08/25 08:14:42 petere Exp $
55 *
66 *********************************************************************
77 */
@@ -2050,12 +2050,10 @@ static PyObject *PLy_fatal(PyObject *, PyObject *);
20502050#define is_PLyPlanObject (x ) ((x)->ob_type == &PLy_PlanType)
20512051static PyObject * PLy_plan_new (void );
20522052static void PLy_plan_dealloc (PyObject * );
2053- static PyObject * PLy_plan_getattr (PyObject * ,char * );
20542053static PyObject * PLy_plan_status (PyObject * ,PyObject * );
20552054
20562055static PyObject * PLy_result_new (void );
20572056static void PLy_result_dealloc (PyObject * );
2058- static PyObject * PLy_result_getattr (PyObject * ,char * );
20592057static PyObject * PLy_result_nrows (PyObject * ,PyObject * );
20602058static PyObject * PLy_result_status (PyObject * ,PyObject * );
20612059static Py_ssize_t PLy_result_length (PyObject * );
@@ -2072,6 +2070,11 @@ static PyObject *PLy_spi_execute_plan(PyObject *, PyObject *, long);
20722070static PyObject * PLy_spi_execute_fetch_result (SPITupleTable * ,int ,int );
20732071
20742072
2073+ static PyMethodDef PLy_plan_methods []= {
2074+ {"status" ,PLy_plan_status ,METH_VARARGS ,NULL },
2075+ {NULL ,NULL ,0 ,NULL }
2076+ };
2077+
20752078static PyTypeObject PLy_PlanType = {
20762079PyObject_HEAD_INIT (NULL )
207720800 ,/* ob_size */
@@ -2084,7 +2087,7 @@ static PyTypeObject PLy_PlanType = {
20842087 */
20852088PLy_plan_dealloc ,/* tp_dealloc */
208620890 ,/* tp_print */
2087- PLy_plan_getattr , /* tp_getattr */
2090+ 0 , /* tp_getattr */
208820910 ,/* tp_setattr */
208920920 ,/* tp_compare */
209020930 ,/* tp_repr */
@@ -2099,11 +2102,13 @@ static PyTypeObject PLy_PlanType = {
209921020 ,/* tp_as_buffer */
21002103Py_TPFLAGS_DEFAULT |Py_TPFLAGS_BASETYPE ,/* tp_flags */
21012104PLy_plan_doc ,/* tp_doc */
2102- };
2103-
2104- static PyMethodDef PLy_plan_methods []= {
2105- {"status" ,PLy_plan_status ,METH_VARARGS ,NULL },
2106- {NULL ,NULL ,0 ,NULL }
2105+ 0 ,/* tp_traverse */
2106+ 0 ,/* tp_clear */
2107+ 0 ,/* tp_richcompare */
2108+ 0 ,/* tp_weaklistoffset */
2109+ 0 ,/* tp_iter */
2110+ 0 ,/* tp_iternext */
2111+ PLy_plan_methods ,/* tp_tpmethods */
21072112};
21082113
21092114static PySequenceMethods PLy_result_as_sequence = {
@@ -2116,6 +2121,12 @@ static PySequenceMethods PLy_result_as_sequence = {
21162121PLy_result_ass_slice ,/* sq_ass_slice */
21172122};
21182123
2124+ static PyMethodDef PLy_result_methods []= {
2125+ {"nrows" ,PLy_result_nrows ,METH_VARARGS ,NULL },
2126+ {"status" ,PLy_result_status ,METH_VARARGS ,NULL },
2127+ {NULL ,NULL ,0 ,NULL }
2128+ };
2129+
21192130static PyTypeObject PLy_ResultType = {
21202131PyObject_HEAD_INIT (NULL )
212121320 ,/* ob_size */
@@ -2128,7 +2139,7 @@ static PyTypeObject PLy_ResultType = {
21282139 */
21292140PLy_result_dealloc ,/* tp_dealloc */
213021410 ,/* tp_print */
2131- PLy_result_getattr , /* tp_getattr */
2142+ 0 , /* tp_getattr */
213221430 ,/* tp_setattr */
213321440 ,/* tp_compare */
213421450 ,/* tp_repr */
@@ -2143,12 +2154,13 @@ static PyTypeObject PLy_ResultType = {
214321540 ,/* tp_as_buffer */
21442155Py_TPFLAGS_DEFAULT |Py_TPFLAGS_BASETYPE ,/* tp_flags */
21452156PLy_result_doc ,/* tp_doc */
2146- };
2147-
2148- static PyMethodDef PLy_result_methods []= {
2149- {"nrows" ,PLy_result_nrows ,METH_VARARGS ,NULL },
2150- {"status" ,PLy_result_status ,METH_VARARGS ,NULL },
2151- {NULL ,NULL ,0 ,NULL }
2157+ 0 ,/* tp_traverse */
2158+ 0 ,/* tp_clear */
2159+ 0 ,/* tp_richcompare */
2160+ 0 ,/* tp_weaklistoffset */
2161+ 0 ,/* tp_iter */
2162+ 0 ,/* tp_iternext */
2163+ PLy_result_methods ,/* tp_tpmethods */
21522164};
21532165
21542166static PyMethodDef PLy_methods []= {
@@ -2217,12 +2229,6 @@ PLy_plan_dealloc(PyObject *arg)
22172229}
22182230
22192231
2220- static PyObject *
2221- PLy_plan_getattr (PyObject * self ,char * name )
2222- {
2223- return Py_FindMethod (PLy_plan_methods ,self ,name );
2224- }
2225-
22262232static PyObject *
22272233PLy_plan_status (PyObject * self ,PyObject * args )
22282234{
@@ -2270,12 +2276,6 @@ PLy_result_dealloc(PyObject *arg)
22702276arg -> ob_type -> tp_free (arg );
22712277}
22722278
2273- static PyObject *
2274- PLy_result_getattr (PyObject * self ,char * name )
2275- {
2276- return Py_FindMethod (PLy_result_methods ,self ,name );
2277- }
2278-
22792279static PyObject *
22802280PLy_result_nrows (PyObject * self ,PyObject * args )
22812281{