11/**********************************************************************
22 * plpython.c - python as a procedural language for PostgreSQL
33 *
4- * $PostgreSQL: pgsql/src/pl/plpython/plpython.c,v 1.97 2007/04/02 03:49:42 tgl Exp $
4+ * $PostgreSQL: pgsql/src/pl/plpython/plpython.c,v 1.98 2007/04/03 13:37:22 momjian Exp $
55 *
66 *********************************************************************
77 */
2323#include <Python.h>
2424#endif
2525
26+ /*
27+ * Py_ssize_t compat for Python <= 2.4
28+ */
29+ #if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN )
30+ typedef int Py_ssize_t ;
31+ #define PY_SSIZE_T_MAX INT_MAX
32+ #define PY_SSIZE_T_MIN INT_MIN
33+ #endif
34+
2635#include "postgres.h"
2736
2837/* system stuff */
@@ -1953,11 +1962,11 @@ static void PLy_result_dealloc(PyObject *);
19531962static PyObject * PLy_result_getattr (PyObject * , char * );
19541963static PyObject * PLy_result_nrows (PyObject * , PyObject * );
19551964static PyObject * PLy_result_status (PyObject * , PyObject * );
1956- static int PLy_result_length (PyObject * );
1957- static PyObject * PLy_result_item (PyObject * , int );
1958- static PyObject * PLy_result_slice (PyObject * , int , int );
1959- static int PLy_result_ass_item (PyObject * , int , PyObject * );
1960- static int PLy_result_ass_slice (PyObject * , int , int , PyObject * );
1965+ static Py_ssize_t PLy_result_length (PyObject * );
1966+ static PyObject * PLy_result_item (PyObject * , Py_ssize_t );
1967+ static PyObject * PLy_result_slice (PyObject * , Py_ssize_t , Py_ssize_t );
1968+ static int PLy_result_ass_item (PyObject * , Py_ssize_t , PyObject * );
1969+ static int PLy_result_ass_slice (PyObject * , Py_ssize_t , Py_ssize_t , PyObject * );
19611970
19621971
19631972static PyObject * PLy_spi_prepare (PyObject * , PyObject * );
@@ -2001,15 +2010,14 @@ static PyMethodDef PLy_plan_methods[] = {
20012010 {NULL , NULL , 0 , NULL }
20022011};
20032012
2004-
20052013static PySequenceMethods PLy_result_as_sequence = {
2006- ( inquiry ) PLy_result_length , /* sq_length */
2007- ( binaryfunc ) 0 , /* sq_concat */
2008- ( intargfunc ) 0 , /* sq_repeat */
2009- ( intargfunc ) PLy_result_item , /* sq_item */
2010- ( intintargfunc ) PLy_result
10BC0
_slice , /* sq_slice */
2011- ( intobjargproc ) PLy_result_ass_item , /* sq_ass_item */
2012- ( intintobjargproc ) PLy_result_ass_slice , /* sq_ass_slice */
2014+ PLy_result_length , /* sq_length */
2015+ NULL , /* sq_concat */
2016+ NULL , /* sq_repeat */
2017+ PLy_result_item , /* sq_item */
2018+ PLy_result_slice , /* sq_slice */
2019+ PLy_result_ass_item , /* sq_ass_item */
2020+ PLy_result_ass_slice , /* sq_ass_slice */
20132021};
20142022
20152023static PyTypeObject PLy_ResultType = {
@@ -2190,7 +2198,7 @@ PLy_result_status(PyObject * self, PyObject * args)
21902198 return ob -> status ;
21912199}
21922200
2193- static int
2201+ static Py_ssize_t
21942202PLy_result_length (PyObject * arg )
21952203{
21962204 PLyResultObject * ob = (PLyResultObject * ) arg ;
@@ -2199,7 +2207,7 @@ PLy_result_length(PyObject * arg)
21992207}
22002208
22012209static PyObject *
2202- PLy_result_item (PyObject * arg , int idx )
2210+ PLy_result_item (PyObject * arg , Py_ssize_t idx )
22032211{
22042212 PyObject * rv ;
22052213 PLyResultObject * ob = (PLyResultObject * ) arg ;
@@ -2211,7 +2219,7 @@ PLy_result_item(PyObject * arg, int idx)
22112219}
22122220
22132221static int
2214- PLy_result_ass_item (PyObject * arg , int idx , PyObject * item )
2222+ PLy_result_ass_item (PyObject * arg , Py_ssize_t idx , PyObject * item )
22152223{
22162224 int rv ;
22172225 PLyResultObject * ob = (PLyResultObject * ) arg ;
@@ -2222,7 +2230,7 @@ PLy_result_ass_item(PyObject * arg, int idx, PyObject * item)
22222230}
22232231
22242232static PyObject *
2225- PLy_result_slice (PyObject * arg , int lidx , int hidx )
2233+ PLy_result_slice (PyObject * arg , Py_ssize_t lidx , Py_ssize_t hidx )
22262234{
22272235 PyObject * rv ;
22282236 PLyResultObject * ob = (PLyResultObject * ) arg ;
@@ -2235,7 +2243,7 @@ PLy_result_slice(PyObject * arg, int lidx, int hidx)
22352243}
22362244
22372245static int
2238- PLy_result_ass_slice (PyObject * arg , int lidx , int hidx , PyObject * slice )
2246+ PLy_result_ass_slice (PyObject * arg , Py_ssize_t lidx , Py_ssize_t hidx , PyObject * slice )
22392247{
22402248 int rv ;
22412249 PLyResultObject * ob = (PLyResultObject * ) arg ;
0 commit comments