summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/dialects/postgresql/base.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/dialects/postgresql/base.py')
-rw-r--r--lib/sqlalchemy/dialects/postgresql/base.py22
1 files changed, 6 insertions, 16 deletions
diff --git a/lib/sqlalchemy/dialects/postgresql/base.py b/lib/sqlalchemy/dialects/postgresql/base.py
index f3a88ff70..82660d96c 100644
--- a/lib/sqlalchemy/dialects/postgresql/base.py
+++ b/lib/sqlalchemy/dialects/postgresql/base.py
@@ -669,23 +669,13 @@ class ARRAY(sqltypes.Concatenable, sqltypes.TypeEngine):
def compare_values(self, x, y):
return x == y
- def _test_array_of_scalars(self, arr):
- if not arr:
- return True
- else:
- try:
- return not isinstance(arr[0], (list, tuple))
- except TypeError:
- raise TypeError(
- "Cannot auto-coerce ARRAY value of type "
- "%s unless dimensions are specified "
- "for ARRAY type" % type(arr))
-
def _proc_array(self, arr, itemproc, dim, collection):
- if dim == 1 or (
- dim is None and
- self._test_array_of_scalars(arr)
- ):
+ if dim is None:
+ if arr is None:
+ arr = []
+ else:
+ arr = list(arr)
+ if dim == 1 or dim is None and not hasattr(arr[0], '__iter__'):
if itemproc:
return collection(itemproc(x) for x in arr)
else: