summaryrefslogtreecommitdiff
path: root/tests/delete
diff options
context:
space:
mode:
authorSimon Charette <simon.charette@zapier.com>2019-10-07 16:03:50 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2019-10-09 09:49:53 +0200
commit26c66f45193fa65125ca06328817927d6bbc2b22 (patch)
tree0156823fb42a5a9400842c20f8f915ddd0a26ea4 /tests/delete
parent44522d1036604e13a5adf4e084e1c8f7b56c82c0 (diff)
downloaddjango-26c66f45193fa65125ca06328817927d6bbc2b22.tar.gz
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.
Diffstat (limited to 'tests/delete')
-rw-r--r--tests/delete/tests.py8
1 files changed, 8 insertions, 0 deletions
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()