From 5a4d7285bd10bd40d9f7e574a7c421eb21094858 Mon Sep 17 00:00:00 2001 From: Simon Charette Date: Tue, 17 Dec 2019 01:21:13 -0500 Subject: Fixed #31094 -- Included columns referenced by subqueries in GROUP BY on aggregations. Thanks Johannes Hoppe for the report. Regression in fb3f034f1c63160c0ff13c609acd01c18be12f80. Co-authored-by: Mariusz Felisiak --- tests/aggregation/tests.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'tests/aggregation') diff --git a/tests/aggregation/tests.py b/tests/aggregation/tests.py index 322db8ea1a..ecbe81c151 100644 --- a/tests/aggregation/tests.py +++ b/tests/aggregation/tests.py @@ -1172,3 +1172,23 @@ class AggregateTestCase(TestCase): Exists(long_books_qs), ).annotate(total=Count('*')) self.assertEqual(dict(has_long_books_breakdown), {True: 2, False: 3}) + + def test_aggregation_subquery_annotation_related_field(self): + publisher = Publisher.objects.create(name=self.a9.name, num_awards=2) + book = Book.objects.create( + isbn='159059999', name='Test book.', pages=819, rating=2.5, + price=Decimal('14.44'), contact=self.a9, publisher=publisher, + pubdate=datetime.date(2019, 12, 6), + ) + book.authors.add(self.a5, self.a6, self.a7) + books_qs = Book.objects.annotate( + contact_publisher=Subquery( + Publisher.objects.filter( + pk=OuterRef('publisher'), + name=OuterRef('contact__name'), + ).values('name')[:1], + ) + ).filter( + contact_publisher__isnull=False, + ).annotate(count=Count('authors')) + self.assertSequenceEqual(books_qs, [book]) -- cgit v1.3