diff options
author | 4the4ryushin <aman2001mi@gmail.com> | 2023-04-28 02:33:25 +0530 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-05-01 10:20:20 +0200 |
commit | 0b0998dc151feb77068e2387c34cc50ef6b356ae (patch) | |
tree | 89076756b666cc024ec22d81f299400cdf52aaad /tests/delete_regress | |
parent | 5a6d4d3bfde07daab9777545694beb014c832264 (diff) | |
download | django-0b0998dc151feb77068e2387c34cc50ef6b356ae.tar.gz |
Fixed #33759 -- Avoided unnecessary subquery in QuerySet.delete() with self-referential subqueries if supported.
Diffstat (limited to 'tests/delete_regress')
-rw-r--r-- | tests/delete_regress/tests.py | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/tests/delete_regress/tests.py b/tests/delete_regress/tests.py index 173f767b28..2540fd2802 100644 --- a/tests/delete_regress/tests.py +++ b/tests/delete_regress/tests.py @@ -379,15 +379,20 @@ class DeleteTests(TestCase): child = Child.objects.create(name="Juan") Book.objects.create(pagecount=500, owner=child) PlayedWith.objects.create(child=child, toy=toy, date=datetime.date.today()) - Book.objects.filter( - Exists( - Book.objects.filter( - pk=OuterRef("pk"), - owner__toys=toy.pk, - ), - ) - ).delete() + with self.assertNumQueries(1) as ctx: + Book.objects.filter( + Exists( + Book.objects.filter( + pk=OuterRef("pk"), + owner__toys=toy.pk, + ), + ) + ).delete() + self.assertIs(Book.objects.exists(), False) + sql = ctx.captured_queries[0]["sql"].lower() + if connection.features.delete_can_self_reference_subquery: + self.assertEqual(sql.count("select"), 1) class DeleteDistinct(SimpleTestCase): |