Loading django/contrib/postgres/fields/array.py +5 −1 Original line number Diff line number Diff line Loading @@ -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): Loading docs/releases/1.8.8.txt +3 −0 Original line number Diff line number Diff line Loading @@ -11,3 +11,6 @@ Bugfixes * Fixed incorrect ``unique_together`` field name generation by ``inspectdb`` (:ticket:`25274`). * Corrected ``__len`` query lookup on ``ArrayField`` for empty arrays (:ticket:`25772`). tests/postgres_tests/test_array.py +7 −0 Original line number Diff line number Diff line Loading @@ -231,6 +231,13 @@ class TestQuerying(PostgreSQLTestCase): self.objs[0:3] ) def test_len_empty_array(self): obj = NullableIntegerArrayModel.objects.create(field=[]) self.assertSequenceEqual( NullableIntegerArrayModel.objects.filter(field__len=0), [obj] ) def test_slice(self): self.assertSequenceEqual( NullableIntegerArrayModel.objects.filter(field__0_1=[2]), Loading Loading
django/contrib/postgres/fields/array.py +5 −1 Original line number Diff line number Diff line Loading @@ -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): Loading
docs/releases/1.8.8.txt +3 −0 Original line number Diff line number Diff line Loading @@ -11,3 +11,6 @@ Bugfixes * Fixed incorrect ``unique_together`` field name generation by ``inspectdb`` (:ticket:`25274`). * Corrected ``__len`` query lookup on ``ArrayField`` for empty arrays (:ticket:`25772`).
tests/postgres_tests/test_array.py +7 −0 Original line number Diff line number Diff line Loading @@ -231,6 +231,13 @@ class TestQuerying(PostgreSQLTestCase): self.objs[0:3] ) def test_len_empty_array(self): obj = NullableIntegerArrayModel.objects.create(field=[]) self.assertSequenceEqual( NullableIntegerArrayModel.objects.filter(field__len=0), [obj] ) def test_slice(self): self.assertSequenceEqual( NullableIntegerArrayModel.objects.filter(field__0_1=[2]), Loading