From 96bc4254ee84596e0d1fef1f2356d8736da3857a Mon Sep 17 00:00:00 2001 From: Mariusz Felisiak Date: Tue, 21 Feb 2023 12:47:52 +0100 Subject: [PATCH] Refs #31445 -- Added test for nesting QuerySet.union(). This was fixed in MySQL 8.0.31. --- django/db/backends/mysql/features.py | 10 ++++++++++ tests/queries/test_qs_combinators.py | 9 +++++++++ 2 files changed, 19 insertions(+) diff --git a/django/db/backends/mysql/features.py b/django/db/backends/mysql/features.py index 14fde6b08e..c657860b5d 100644 --- a/django/db/backends/mysql/features.py +++ b/django/db/backends/mysql/features.py @@ -154,6 +154,16 @@ class DatabaseFeatures(BaseDatabaseFeatures): }, } ) + if self.connection.mysql_version < (8, 0, 31): + skips.update( + { + "Nesting of UNIONs at the right-hand side is not supported on " + "MySQL < 8.0.31": { + "queries.test_qs_combinators.QuerySetSetOperationTests." + "test_union_nested" + }, + } + ) return skips @cached_property diff --git a/tests/queries/test_qs_combinators.py b/tests/queries/test_qs_combinators.py index 96a5b24cc1..bf127ce703 100644 --- a/tests/queries/test_qs_combinators.py +++ b/tests/queries/test_qs_combinators.py @@ -114,6 +114,15 @@ class QuerySetSetOperationTests(TestCase): [1, 2, 3, 4, 6, 7, 8, 9, 10, None], ) + def test_union_nested(self): + qs1 = Number.objects.all() + qs2 = qs1.union(qs1) + self.assertNumbersEqual( + qs1.union(qs2), + [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], + ordered=False, + ) + @skipUnlessDBFeature("supports_select_intersection") def test_intersection_with_empty_qs(self): qs1 = Number.objects.all()