]> granicus.if.org Git - postgresql/commitdiff
Only treat Python Lists as array dimensions.
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Wed, 26 Oct 2016 11:44:55 +0000 (14:44 +0300)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
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)