Simon Charette
f6405c0b8e
Fixed #31965 -- Adjusted multi-table fast-deletion on MySQL/MariaDB.
...
The optimization introduced in 7acef095d7
did not properly handle
deletion involving filters against aggregate annotations.
It initially was surfaced by a MariaDB test failure but misattributed
to an undocumented change in behavior that resulted in the systemic
generation of poorly performing database queries in 5b83bae031
.
Thanks Anton Plotkin for the report.
Refs #23576 .
2020-08-31 08:11:28 +02:00
Simon Charette
972000420e
Fixed #31624 -- Avoided subquery usage on QuerySet.all().delete().
...
Thanks Adam Johnson for the report.
Regression in 7acef095d7
.
2020-05-25 08:14:49 +02:00
Hasan Ramezani
35a67b3731
Fixed #31474 -- Made QuerySet.delete() not return the number of deleted objects if it's zero.
2020-04-20 09:51:54 +02:00
Nick Pope
335c9c94ac
Simplified imports from django.db and django.contrib.gis.db.
2020-02-04 13:20:06 +01:00
Matthias Kestenholz
4e8d89020c
Fixed #31219 -- Fixed object deletion crash for nested protected related objects.
2020-01-31 09:07:58 +01:00
Hasan Ramezani
4ca5c565f4
Refs #27852 -- Fixed object deletion to show all restricted related objects rather than just the first one.
2020-01-29 09:02:23 +01:00
Mariusz Felisiak
c00b863ac6
Made OnDeleteTests.test_protect() assert more specific ProtectedError.
2020-01-27 12:21:02 +01:00
Hasan Ramezani
ab3cbd8b9a
Refs #27852 -- Fixed object deletion to show all protected related objects rather than just the first one.
...
Thanks Anton Samarchyan for the initial patch.
2020-01-27 12:21:02 +01:00
Daniel Izquierdo
89abecc75d
Fixed #27272 -- Added an on_delete RESTRICT handler to allow cascading deletions while protecting direct ones.
2019-11-19 10:55:05 +01:00
Simon Charette
7acef095d7
Fixed #23576 -- Implemented multi-alias fast-path deletion in MySQL backend.
...
This required moving the entirety of DELETE SQL generation to the
compiler where it should have been in the first place and implementing
a specialized compiler on MySQL/MariaDB.
The MySQL compiler relies on the "DELETE table FROM table JOIN" syntax
for queries spanning over multiple tables.
2019-10-24 12:24:53 +02:00
Simon Charette
26c66f4519
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.
2019-10-09 09:49:53 +02:00
Rob
c231a75112
Fixed #30436 -- Added check that on_delete is callable in ForeignKey and OneToOneField.
2019-05-13 07:25:42 +02:00
Stephen Brown
86a3ad351e
Fixed #30339 -- Made Model.delete(keep_parents=True) preserves nested parent reverse relationships.
...
Thanks Simon Charette for the review.
2019-05-06 13:04:31 +02:00
Simon Charette
f110de5c04
Fixed #30191 -- Selected only referenced fields during cascade deletion.
...
The non-referenced fields can only be deferred if no deletion signals
receivers are connected for their respective model as connected as these
receivers might expect all fields of the deleted model to be present.
Thanks Ed Morley for the report.
2019-04-17 13:41:23 +02:00
Florian Apolloner
afc708cf6d
Fixed #30330 -- Fixed setting of primary key to None during fast-delete.
...
Regression in bc7dd8490b
.
2019-04-08 21:14:00 +02:00
Mariusz Felisiak
3fb1ad9505
Fixed incorrect integer division in DeletionTests.test_large_delete_related.
2017-10-02 10:11:20 -04:00
Mariusz Felisiak
d896809a3a
Refs #23919 -- Removed unneeded float()/int() calls.
2017-10-02 08:49:26 -04:00
Mads Jensen
a51c4de194
Used assertRaisesMessage() to test Django's error messages.
2017-07-29 19:07:23 -04:00
Jon Dufresne
2c69824e5a
Refs #23968 -- Removed unnecessary lists, generators, and tuple calls.
2017-06-01 19:08:59 -04:00
Claude Paroz
2b281cc35e
Refs #23919 -- Removed most of remaining six usage
...
Thanks Tim Graham for the review.
2017-01-18 21:33:28 +01:00
Claude Paroz
d7b9aaa366
Refs #23919 -- Removed encoding preambles and future imports
2017-01-18 09:55:19 +01:00
Simon Charette
31a56e30cf
Fixed #27407 -- Made Model.delete(keep_parents=True) preserve parent reverse relationships.
...
Thanks Tim for the review.
2016-11-15 20:16:06 -05:00
za
321e94fa41
Refs #27392 -- Removed "Tests that", "Ensures that", etc. from test docstrings.
2016-11-10 21:30:21 -05:00
Simon Charette
0bbab97c28
Refs #15250 -- Removed an obsolete comment regarding MTI cascade deletion.
2016-09-08 00:20:54 -04:00
Tim Graham
1c8c0837c6
Sorted single letter imports per the latest version of isort.
2016-03-28 11:45:31 -04:00
Hasan
3d0dcd7f5a
Refs #26022 -- Used context manager version of assertRaises in tests.
2016-01-29 12:32:18 -05:00
Simon Charette
8035cee922
Fixed #25882 -- Prevented fast deletes matching no rows from crashing on MySQL.
...
Thanks to Trac aliases gerricom for the report, raphaelmerx for the
attempts to reproduce and Sergey Fedoseev and Tim for the review.
Refs #16891
2015-12-14 13:12:36 -05:00
Simon Charette
6d03bc14e7
Fixed #25685 -- Fixed a duplicate query regression on deletion of proxied models.
...
Thanks to Trac alias ppetrid for the report and Tim for the review.
Conflicts:
django/db/models/deletion.py
tests/delete/tests.py
Forward port of 7c3ef19978
from stable/1.8.x
2015-11-22 23:20:33 -05:00
Laura Feier
7862cbda86
Fixed #24576 -- Made deletion of related objects deterministic.
2015-11-09 15:04:48 -05:00
Tim Graham
b60375d4bb
Fixed #25129 -- Made model instance defaults work with migrations (refs #24919 ).
2015-07-21 09:19:40 -04:00
Alexander Sosnovskiy
04e8d890ae
Fixed #16891 -- Made Model/QuerySet.delete() return the number of deleted objects.
2015-05-22 13:27:16 -04:00
Alasdair Nicol
eaeea6f947
Fixed #24714 -- Used more specific assertions than assertEqual in tests.
2015-04-28 09:31:04 -04:00
Anssi Kääriäinen
8f30556329
Renamed Field.rel attribute to remote_field
...
Field.rel is now deprecated. Rel objects have now also remote_field
attribute. This means that self == self.remote_field.remote_field.
In addition, made the Rel objects a bit more like Field objects. Still,
marked ManyToManyFields as null=True.
2015-03-25 08:16:12 -04:00
Andriy Sokolovskiy
81c2d9f60b
Fixed #15579 -- Added ability to delete only child models in multi-table inheritance.
2015-03-17 08:33:16 -04:00
Tim Graham
0ed7d15563
Sorted imports with isort; refs #23860 .
2015-02-06 08:16:28 -05:00
Adam Taylor
039465a6a7
Fixed typos in code comments.
2015-01-20 12:18:03 -05:00
Michael Hall
895dc880eb
Fixed #23812 -- Changed django.utils.six.moves.xrange imports to range
2014-12-13 12:45:58 -05:00
Anssi Kääriäinen
dfadbdac6a
Fixed #16426 -- deletion of 1000+ objects with relations on SQLite
...
SQLite doesn't work with more than 1000 parameters in a single query.
The deletion code could generate queries that try to get related
objects for more than 1000 objects thus breaking the limit. Django now
splits the related object fetching into batches with at most 1000
parameters.
The tests and patch include some work done by Trac alias NiGhTTraX in
ticket #21205 .
2014-08-11 12:47:37 +03:00
Jason Myers
7a61c68c50
PEP8 cleanup
...
Signed-off-by: Jason Myers <jason@jasonamyers.com>
2013-11-02 23:50:49 -05:00
Tim Graham
36ded01527
Fixed #21302 -- Fixed unused imports and import *.
2013-11-02 15:24:56 -04:00
Alasdair Nicol
c3aa2948c6
Fixed #21298 -- Fixed E301 pep8 warnings
2013-10-23 13:45:03 +01:00
Alex Gaynor
9d11522599
Removed some more unused local vars
2013-09-08 12:20:01 -07:00
Claude Paroz
5c1143910e
Removed most of absolute_import imports
...
Should be unneeded with Python 2.7 and up.
Added some unicode_literals along the way.
2013-07-29 20:28:13 +02:00
Florian Apolloner
89f40e3624
Merged regressiontests and modeltests into the test root.
2013-02-26 14:36:57 +01:00