summaryrefslogtreecommitdiff
path: root/django/contrib/postgres/fields/array.py
diff options
context:
space:
mode:
authorAttila Tovt <uran198@gmail.com>2015-11-22 02:59:37 +0200
committerTim Graham <timograham@gmail.com>2015-11-25 16:53:05 -0500
commit88fc9e2826044110b7b22577a227f122fe9c1fb5 (patch)
tree1b1fbdc28390659c25e4f933db7e3f2efb2768d4 /django/contrib/postgres/fields/array.py
parenta3708fda3574a5a0d949000df1b03a54721cf029 (diff)
downloaddjango-88fc9e2826044110b7b22577a227f122fe9c1fb5.tar.gz
Fixed #25772 -- Corrected __len lookup on ArrayField for empty arrays.
Diffstat (limited to 'django/contrib/postgres/fields/array.py')
-rw-r--r--django/contrib/postgres/fields/array.py6
1 files changed, 5 insertions, 1 deletions
diff --git a/django/contrib/postgres/fields/array.py b/django/contrib/postgres/fields/array.py
index 4da2a9658b..ff37483b4f 100644
--- a/django/contrib/postgres/fields/array.py
+++ b/django/contrib/postgres/fields/array.py
@@ -202,7 +202,11 @@ class ArrayLenTransform(Transform):
def as_sql(self, compiler, connection):
lhs, params = compiler.compile(self.lhs)
- return 'array_length(%s, 1)' % lhs, params
+ # Distinguish NULL and empty arrays
+ return (
+ 'CASE WHEN %(lhs)s IS NULL THEN NULL ELSE '
+ 'coalesce(array_length(%(lhs)s, 1), 0) END'
+ ) % {'lhs': lhs}, params
class IndexTransform(Transform):