From 26c66f45193fa65125ca06328817927d6bbc2b22 Mon Sep 17 00:00:00 2001 From: Simon Charette Date: Mon, 7 Oct 2019 16:03:50 +0200 Subject: Fixed #30856 -- Combined fast-delete queries by model during cascade deletion. Reduced the number of queries required when performing cascade deletion for a model referenced multiple time by another one by performing an union of reference lookups. --- tests/delete/tests.py | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'tests') diff --git a/tests/delete/tests.py b/tests/delete/tests.py index 505fd843d7..8cb028344b 100644 --- a/tests/delete/tests.py +++ b/tests/delete/tests.py @@ -582,3 +582,11 @@ class FastDeleteTests(TestCase): User.objects.filter(avatar__desc='missing').delete(), (0, {'delete.User': 0}) ) + + def test_fast_delete_combined_relationships(self): + # The cascading fast-delete of SecondReferrer should be combined + # in a single DELETE WHERE referrer_id OR unique_field. + origin = Origin.objects.create() + referer = Referrer.objects.create(origin=origin, unique_field=42) + with self.assertNumQueries(2): + referer.delete() -- cgit v1.3