Only treat Python Lists as array dimensions.
authorHeikki Linnakangas <[email protected]>
Wed, 26 Oct 2016 11:44:55 +0000 (14:44 +0300)
committerHeikki Linnakangas <[email protected]>
Wed, 26 Oct 2016 11:44:55 +0000 (14:44 +0300)
Instead of treating all python sequence types as array dimensions, except
for tuples and various kinds of strings, only treat Python lists as
dimensions. The PyBytes_Check() function used previously is only available
on Python 2.6 and newer, and it was a bit fiddly anyway. The list of
exceptions would require adjustment if Python got a new kind of a sequence
similar to bytes/unicodes/strings, so only checking for Lists seems more
future-proof. The documentation only mentioned using Lists, so this is
closer to what was documented, anyway.

This should fix the buildfarm failures on systems building with Python 2.5,
although I don't have Python 2.5 installed myself to test with.

src/pl/plpython/plpy_typeio.c

index d346e22591972ab7cfc64c30416fd1531a01a898..b9c6d64baafd327824ef59e82d8068adbaf747ba 100644 (file)
@@ -999,15 +999,7 @@ PLySequence_ToArray(PLyObToDatum *arg, int32 typmod, PyObject *plrv, bool inarra
 
    for (;;)
    {
-       if (!PySequence_Check(pyptr))
-           break;
-
-       /* composite type */
-       if (PyTuple_Check(pyptr))
-           break;
-
-       /* string */
-       if (PyString_Check(pyptr) || PyBytes_Check(pyptr) || PyUnicode_Check(pyptr))
+       if (!PyList_Check(pyptr))
            break;
 
        if (ndim == MAXDIM)