From 8b040e3cbbb2e81420e777afc3ca48a1c8f4dd5a Mon Sep 17 00:00:00 2001 From: Ian Foote Date: Sun, 15 Nov 2020 22:43:47 +0000 Subject: Fixed #25534, Fixed #31639 -- Added support for transform references in expressions. Thanks Mariusz Felisiak and Simon Charette for reviews. --- tests/postgres_tests/test_array.py | 16 ++++++++++++++++ tests/postgres_tests/test_hstore.py | 9 ++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) (limited to 'tests/postgres_tests') diff --git a/tests/postgres_tests/test_array.py b/tests/postgres_tests/test_array.py index 27ccf18581..3c7584e84c 100644 --- a/tests/postgres_tests/test_array.py +++ b/tests/postgres_tests/test_array.py @@ -434,6 +434,13 @@ class TestQuerying(PostgreSQLTestCase): self.objs[:1], ) + def test_index_annotation(self): + qs = NullableIntegerArrayModel.objects.annotate(second=models.F('field__1')) + self.assertCountEqual( + qs.values_list('second', flat=True), + [None, None, None, 3, 30], + ) + def test_overlap(self): self.assertSequenceEqual( NullableIntegerArrayModel.objects.filter(field__overlap=[1, 2]), @@ -495,6 +502,15 @@ class TestQuerying(PostgreSQLTestCase): self.objs[2:3], ) + def test_slice_annotation(self): + qs = NullableIntegerArrayModel.objects.annotate( + first_two=models.F('field__0_2'), + ) + self.assertCountEqual( + qs.values_list('first_two', flat=True), + [None, [1], [2], [2, 3], [20, 30]], + ) + def test_usage_in_subquery(self): self.assertSequenceEqual( NullableIntegerArrayModel.objects.filter( diff --git a/tests/postgres_tests/test_hstore.py b/tests/postgres_tests/test_hstore.py index 478e0e77ca..0c01129e18 100644 --- a/tests/postgres_tests/test_hstore.py +++ b/tests/postgres_tests/test_hstore.py @@ -2,7 +2,7 @@ import json from django.core import checks, exceptions, serializers from django.db import connection -from django.db.models import OuterRef, Subquery +from django.db.models import F, OuterRef, Subquery from django.db.models.expressions import RawSQL from django.forms import Form from django.test.utils import CaptureQueriesContext, isolate_apps @@ -137,6 +137,13 @@ class TestQuerying(PostgreSQLTestCase): self.objs[:2] ) + def test_key_transform_annotation(self): + qs = HStoreModel.objects.annotate(a=F('field__a')) + self.assertCountEqual( + qs.values_list('a', flat=True), + ['b', 'b', None, None, None], + ) + def test_keys(self): self.assertSequenceEqual( HStoreModel.objects.filter(field__keys=['a']), -- cgit v1.3