From: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date: Wed, 26 Oct 2016 11:44:55 +0000 (+0300)
Subject: Only treat Python Lists as array dimensions.
X-Git-Tag: REL_10_BETA1~1502
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cfd9c87a54b0d414a59a912710c6633313174e51;p=postgresql

Only treat Python Lists as array dimensions.

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.
---

diff --git a/src/pl/plpython/plpy_typeio.c b/src/pl/plpython/plpy_typeio.c
index d346e22591..b9c6d64baa 100644
--- a/src/pl/plpython/plpy_typeio.c
+++ b/src/pl/plpython/plpy_typeio.c
@@ -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)