We don't actually need two code paths, one for 32 bits and one for 64
bits. Since the existing code already assumed that "long long" is
available, we can just use PyLong_FromLongLong() for 64 bits as well.
In Python 2.5 and later, PyLong_FromLong() and PyLong_FromLongLong() use
the same code, so there will be no difference for 64-bit platforms. In
Python 2.4, the code is different, but performance testing showed no
noticeable difference in PL/Python, and that Python version is ancient
anyway.
Discussion: https://www.postgresql.org/message-id/
0a02203c-e157-55b2-464e-
6087066a1849@2ndquadrant.com
static PyObject *
PLyLong_FromInt64(PLyDatumToOb *arg, Datum d)
{
- /* on 32 bit platforms "long" may be too small */
- if (sizeof(int64) > sizeof(long))
- return PyLong_FromLongLong(DatumGetInt64(d));
- else
- return PyLong_FromLong(DatumGetInt64(d));
+ return PyLong_FromLongLong(DatumGetInt64(d));
}
static PyObject *