diff options
author | David Wobrock <david.wobrock@gmail.com> | 2023-03-13 15:03:28 +0100 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-03-24 06:09:27 +0100 |
commit | d6b6e5d0fd4e6b6d0183b4cf6e4bd4f9afc7bf67 (patch) | |
tree | 1e81239741fa0b7a576879c42040953ed64e9708 /tests | |
parent | 39d1e45227e060746ed461fddde80fa2b6cf0dcd (diff) | |
download | django-d6b6e5d0fd4e6b6d0183b4cf6e4bd4f9afc7bf67.tar.gz |
Fixed #28553 -- Fixed annotation mismatch with QuerySet.values()/values_list() on compound queries.
Co-authored-by: Matthias Kestenholz <mk@feinheit.ch>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/postgres_tests/test_array.py | 4 | ||||
-rw-r--r-- | tests/queries/test_qs_combinators.py | 16 |
2 files changed, 17 insertions, 3 deletions
diff --git a/tests/postgres_tests/test_array.py b/tests/postgres_tests/test_array.py index f7615c974e..5f8441ba1b 100644 --- a/tests/postgres_tests/test_array.py +++ b/tests/postgres_tests/test_array.py @@ -466,8 +466,8 @@ class TestQuerying(PostgreSQLTestCase): ], ) sql = ctx[0]["sql"] - self.assertIn("GROUP BY 1", sql) - self.assertIn("ORDER BY 1", sql) + self.assertIn("GROUP BY 2", sql) + self.assertIn("ORDER BY 2", sql) def test_index(self): self.assertSequenceEqual( diff --git a/tests/queries/test_qs_combinators.py b/tests/queries/test_qs_combinators.py index bf127ce703..71d2418f2b 100644 --- a/tests/queries/test_qs_combinators.py +++ b/tests/queries/test_qs_combinators.py @@ -246,7 +246,7 @@ class QuerySetSetOperationTests(TestCase): ) .values_list("num", "count") ) - self.assertCountEqual(qs1.union(qs2), [(1, 0), (2, 1)]) + self.assertCountEqual(qs1.union(qs2), [(1, 0), (1, 2)]) def test_union_with_extra_and_values_list(self): qs1 = ( @@ -368,6 +368,20 @@ class QuerySetSetOperationTests(TestCase): [reserved_name.pk], ) + def test_union_multiple_models_with_values_list_and_annotations(self): + ReservedName.objects.create(name="rn1", order=10) + Celebrity.objects.create(name="c1") + qs1 = ReservedName.objects.annotate(row_type=Value("rn")).values_list( + "name", "order", "row_type" + ) + qs2 = Celebrity.objects.annotate( + row_type=Value("cb"), order=Value(-10) + ).values_list("name", "order", "row_type") + self.assertSequenceEqual( + qs1.union(qs2).order_by("order"), + [("c1", -10, "cb"), ("rn1", 10, "rn")], + ) + def test_union_in_subquery(self): ReservedName.objects.bulk_create( [ |