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

Reply via email to