Skip to content

Commit 749167c

Browse files
committed
Allow PL/PythonU to compile on Python 2.5. Change needed because of API
changes in Python. Marko Kreen
1 parent 9665dd9 commit 749167c

File tree

1 file changed

+27
-19
lines changed

1 file changed

+27
-19
lines changed

src/pl/plpython/plpython.c

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
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
*/
@@ -23,6 +23,15 @@
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 *);
19531962
static PyObject *PLy_result_getattr(PyObject *, char *);
19541963
static PyObject *PLy_result_nrows(PyObject *, PyObject *);
19551964
static 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

19631972
static PyObject *PLy_spi_prepare(PyObject *, PyObject *);
@@ -2001,15 +2010,14 @@ static PyMethodDef PLy_plan_methods[] = {
20012010
{NULL, NULL, 0, NULL}
20022011
};
20032012

2004-
20052013
static 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_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

20152023
static 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
21942202
PLy_result_length(PyObject * arg)
21952203
{
21962204
PLyResultObject *ob = (PLyResultObject *) arg;
@@ -2199,7 +2207,7 @@ PLy_result_length(PyObject * arg)
21992207
}
22002208

22012209
static 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

22132221
static 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

22242232
static 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

22372245
static 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

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy