On Sat, 2007-03-03 at 14:29 -0500, Neil Conway wrote: > No, it just looks like a Python API 2.5 change to me
Attached is a patch that fixes the warnings. Unfortunately, it seems this patch won't compile against Python 2.4: the 2.5 API requires the use of some typedef's that AFAICS were only introduced in 2.5. Since we presumably still want to support Python < 2.5, we can either not apply this patch and tolerate the warnings, or else we can workaround the incompatibility with some preprecessor hackery (e.g. supply the missing typedef's ourselves if Python doesn't provide them). Comments? -Neil
Index: src/pl/plpython/plpython.c =================================================================== RCS file: /home/neilc/postgres/cvs_root/pgsql/src/pl/plpython/plpython.c,v retrieving revision 1.96 diff -c -p -r1.96 plpython.c *** src/pl/plpython/plpython.c 21 Feb 2007 03:27:32 -0000 1.96 --- src/pl/plpython/plpython.c 6 Mar 2007 04:47:28 -0000 *************** static void PLy_result_dealloc(PyObject *** 1953,1963 **** static PyObject *PLy_result_getattr(PyObject *, char *); static PyObject *PLy_result_nrows(PyObject *, PyObject *); static PyObject *PLy_result_status(PyObject *, PyObject *); ! static int PLy_result_length(PyObject *); ! static PyObject *PLy_result_item(PyObject *, int); ! static PyObject *PLy_result_slice(PyObject *, int, int); ! static int PLy_result_ass_item(PyObject *, int, PyObject *); ! static int PLy_result_ass_slice(PyObject *, int, int, PyObject *); static PyObject *PLy_spi_prepare(PyObject *, PyObject *); --- 1953,1963 ---- static PyObject *PLy_result_getattr(PyObject *, char *); static PyObject *PLy_result_nrows(PyObject *, PyObject *); static PyObject *PLy_result_status(PyObject *, PyObject *); ! static ssize_t PLy_result_length(PyObject *); ! static PyObject *PLy_result_item(PyObject *, ssize_t); ! static PyObject *PLy_result_slice(PyObject *, ssize_t, ssize_t); ! static int PLy_result_ass_item(PyObject *, ssize_t, PyObject *); ! static int PLy_result_ass_slice(PyObject *, ssize_t, ssize_t, PyObject *); static PyObject *PLy_spi_prepare(PyObject *, PyObject *); *************** static PyMethodDef PLy_plan_methods[] = *** 2003,2015 **** static PySequenceMethods PLy_result_as_sequence = { ! (inquiry) PLy_result_length, /* sq_length */ ! (binaryfunc) 0, /* sq_concat */ ! (intargfunc) 0, /* sq_repeat */ ! (intargfunc) PLy_result_item, /* sq_item */ ! (intintargfunc) PLy_result_slice, /* sq_slice */ ! (intobjargproc) PLy_result_ass_item, /* sq_ass_item */ ! (intintobjargproc) PLy_result_ass_slice, /* sq_ass_slice */ }; static PyTypeObject PLy_ResultType = { --- 2003,2015 ---- static PySequenceMethods PLy_result_as_sequence = { ! (lenfunc) PLy_result_length, /* sq_length */ ! (binaryfunc) 0, /* sq_concat */ ! (ssizeargfunc) 0, /* sq_repeat */ ! (ssizeargfunc) PLy_result_item, /* sq_item */ ! (ssizessizeargfunc) PLy_result_slice, /* sq_slice */ ! (ssizeobjargproc) PLy_result_ass_item, /* sq_ass_item */ ! (ssizessizeobjargproc) PLy_result_ass_slice, /* sq_ass_slice */ }; static PyTypeObject PLy_ResultType = { *************** PLy_result_status(PyObject * self, PyObj *** 2190,2196 **** return ob->status; } ! static int PLy_result_length(PyObject * arg) { PLyResultObject *ob = (PLyResultObject *) arg; --- 2190,2196 ---- return ob->status; } ! static ssize_t PLy_result_length(PyObject * arg) { PLyResultObject *ob = (PLyResultObject *) arg; *************** PLy_result_length(PyObject * arg) *** 2199,2205 **** } static PyObject * ! PLy_result_item(PyObject * arg, int idx) { PyObject *rv; PLyResultObject *ob = (PLyResultObject *) arg; --- 2199,2205 ---- } static PyObject * ! PLy_result_item(PyObject * arg, ssize_t idx) { PyObject *rv; PLyResultObject *ob = (PLyResultObject *) arg; *************** PLy_result_item(PyObject * arg, int idx) *** 2211,2217 **** } static int ! PLy_result_ass_item(PyObject * arg, int idx, PyObject * item) { int rv; PLyResultObject *ob = (PLyResultObject *) arg; --- 2211,2217 ---- } static int ! PLy_result_ass_item(PyObject * arg, ssize_t idx, PyObject * item) { int rv; PLyResultObject *ob = (PLyResultObject *) arg; *************** PLy_result_ass_item(PyObject * arg, int *** 2222,2228 **** } static PyObject * ! PLy_result_slice(PyObject * arg, int lidx, int hidx) { PyObject *rv; PLyResultObject *ob = (PLyResultObject *) arg; --- 2222,2228 ---- } static PyObject * ! PLy_result_slice(PyObject * arg, ssize_t lidx, ssize_t hidx) { PyObject *rv; PLyResultObject *ob = (PLyResultObject *) arg; *************** PLy_result_slice(PyObject * arg, int lid *** 2235,2241 **** } static int ! PLy_result_ass_slice(PyObject * arg, int lidx, int hidx, PyObject * slice) { int rv; PLyResultObject *ob = (PLyResultObject *) arg; --- 2235,2241 ---- } static int ! PLy_result_ass_slice(PyObject * arg, ssize_t lidx, ssize_t hidx, PyObject * slice) { int rv; PLyResultObject *ob = (PLyResultObject *) arg;
---------------------------(end of broadcast)--------------------------- TIP 5: don't forget to increase your free space map settings