Index: src/pl/plpython/plpython.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/pl/plpython/plpython.c,v
retrieving revision 1.97
diff -p -u -c -r1.97 plpython.c
*** src/pl/plpython/plpython.c	2 Apr 2007 03:49:42 -0000	1.97
--- src/pl/plpython/plpython.c	3 Apr 2007 10:24:55 -0000
***************
*** 23,28 ****
--- 23,37 ----
  #include <Python.h>
  #endif
  
+ /*
+  * Py_ssize_t compat for Python <= 2.4
+  */
+ #if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN)
+ typedef int Py_ssize_t;
+ #define PY_SSIZE_T_MAX INT_MAX
+ #define PY_SSIZE_T_MIN INT_MIN
+ #endif
+ 
  #include "postgres.h"
  
  /* system stuff */
*************** 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 *);
--- 1962,1972 ----
  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_result_item(PyObject *, Py_ssize_t);
! static PyObject *PLy_result_slice(PyObject *, Py_ssize_t, Py_ssize_t);
! static int	PLy_result_ass_item(PyObject *, Py_ssize_t, PyObject *);
! static int	PLy_result_ass_slice(PyObject *, Py_ssize_t, Py_ssize_t, PyObject *);
  
  
  static PyObject *PLy_spi_prepare(PyObject *, PyObject *);
*************** static PyMethodDef PLy_plan_methods[] = 
*** 2001,2015 ****
  	{NULL, NULL, 0, NULL}
  };
  
- 
  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 = {
--- 2010,2023 ----
  	{NULL, NULL, 0, NULL}
  };
  
  static PySequenceMethods PLy_result_as_sequence = {
! 	PLy_result_length,		/* sq_length */
! 	NULL,					/* sq_concat */
! 	NULL,					/* sq_repeat */
! 	PLy_result_item,		/* sq_item */
! 	PLy_result_slice,		/* sq_slice */
! 	PLy_result_ass_item,	/* sq_ass_item */
! 	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;
--- 2198,2204 ----
  	return ob->status;
  }
  
! static Py_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;
--- 2207,2213 ----
  }
  
  static PyObject *
! PLy_result_item(PyObject * arg, Py_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;
--- 2219,2225 ----
  }
  
  static int
! PLy_result_ass_item(PyObject * arg, Py_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;
--- 2230,2236 ----
  }
  
  static PyObject *
! PLy_result_slice(PyObject * arg, Py_ssize_t lidx, Py_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;
--- 2243,2249 ----
  }
  
  static int
! PLy_result_ass_slice(PyObject * arg, Py_ssize_t lidx, Py_ssize_t hidx, PyObject * slice)
  {
  	int			rv;
  	PLyResultObject *ob = (PLyResultObject *) arg;
