1
0
mirror of https://github.com/django/django.git synced 2025-03-14 11:20:46 +00:00

5626 Commits

Author SHA1 Message Date
Sarah Boyce
03051db758 [5.1.x] Fixed #35655 -- Reverted "Fixed #35295 -- Used INSERT with multiple rows on Oracle 23c."
This reverts commit 175b04942afaff978013db61495f3b39ea12989b due to a crash when Oracle > 23.3.

Backport of 5424151f96252e1289e9a6f7eb842cd1dc87850a from main.
2024-08-03 09:07:17 +02:00
Simon Charette
55f5292701 [5.1.x] Fixed #35643 -- Fixed a crash when ordering a QuerySet by a reference containing "__".
Regression in b0ad41198b3e333f57351e3fce5a1fb47f23f376.

Refs #34013. The initial logic did not consider that annotation aliases
can include lookup or transform separators.

Thanks Gert Van Gool for the report and Mariusz Felisiak for the review.
Backport of a16f13a8661297eda12c4177bb01fa2e5b5ccc56 from main.
2024-08-02 16:22:05 -03:00
Simon Charette
d8116bf7f5 [5.1.x] Fixed #35625 -- Fixed a crash when adding a field with db_default and check constraint.
This is the exact same issue as refs #30408 but for creating a model with a
constraint containing % escapes instead of column addition. All of these issues
stem from a lack of SQL and parameters separation from the BaseConstraint DDL
generating methods preventing them from being mixed with other parts of the
schema alteration logic that do make use of parametrization on some backends
(e.g. Postgres, MySQL for DEFAULT).

Prior to the addition of Field.db_default and GeneratedField in 5.0
parametrization of DDL was never exercised on model creation so this is
effectively a bug with db_default as the GeneratedField case was addressed by
refs #35336.

Thanks Julien Chaumont for the report and Mariusz Felisiak for the review.

Backport of f359990e4909db8722820849d61a6f5724338723 from main.
2024-07-25 07:51:45 +02:00
Simon Charette
8fb7d30456 [5.1.x] Fixed #35603 -- Prevented F.__contains__() from hanging.
Regression in 94b6f101f7dc363a8e71593570b17527dbb9f77f.

Backport of 6b3f55446fdc62bd277903fd188a1781e4d92d29 from main.
2024-07-18 08:41:55 +02:00
Simon Charette
4d8e574379 [5.1.x] Fixed #35594 -- Added unique nulls distinct validation for expressions.
Thanks Mark Gensler for the report.

Backport of adc0b6aac3f8a5c96e1ca282bc9f46e28d20281c from main.
2024-07-17 12:56:01 +02:00
Simon Charette
a2791f5ea2 [5.1.x] Refs #30581 -- Made unattached UniqueConstraint(fields) validation testable.
The logic allowing UniqueConstraint(fields).validate to preserve backward
compatiblity with Model.unique_error_message failed to account for cases where
the constraint might not be attached to a model which is a common pattern
during testing.

This changes allows for arbitrary UniqueConstraint(fields) to be tested in
isolation without requiring actual models backing them up.

Co-authored-by: Mark G <mark.gensler@protonmail.com>

Backport of 13922580cccfb9ab2922ff4943dd39da56dfbd8c from main.
2024-07-17 12:55:36 +02:00
Mark Gensler
2da007737c [5.1.x] Fixed #35560 -- Made Model.full_clean() ignore GeneratedFields for constraints.
Accessing generated field values on unsaved models caused a crash when
validating CheckConstraints and UniqueConstraints with expressions.

Backport of 1005c2abd1ef0c156f449641e38c33e473989d37 from main.
2024-07-04 11:47:20 +02:00
nessita
432b069b5f [5.1.x] Fixed #35561 -- Made *args and **kwargs parsing more strict in Model.save()/asave().
Backport of e56a32b89bb7fadffdfaa2cdf12b4863ccd5af9b from main.
2024-06-26 12:14:31 -03:00
Adam Johnson
387172918f [5.1.x] Fixed #35554, Refs #35060 -- Corrected deprecated *args parsing in Model.save()/asave().
The transitional logic added to deprecate the usage of *args for
Model.save()/asave() introduced two issues that this branch fixes:
 * Passing extra positional arguments no longer raised TypeError.
 * Passing a positional but empty update_fields would save all fields.

Co-authored-by: Natalia <124304+nessita@users.noreply.github.com>

Backport of 28522c3c8d5eb581347aececc3ac61c134528114 from main.
2024-06-25 13:14:19 -03:00
AjmalPonneth
56180fb5ff [5.1.x] Fixed #35547 -- Added reset_queries to django.db.__all__.
Backport of 2a082d827de05528cb976109f219ec9b00490d2d from main.
2024-06-24 10:14:12 +02:00
Anže Pečar
48382a2ff6 [5.1.x] Fixed #34881 -- Fixed a crash when renaming a model with multiple ManyToManyField.through references on SQLite.
Thank you to dennisvang for the report and Jase Hackman for the test.

Co-authored-by: Jase Hackman <jase.hackman@zapier.com>

Backport of e99187e5c94516ee35f37cc41a36d906b395808d from main.
2024-06-14 14:16:34 +02:00
Jacob Walls
db349fc464 [5.1.x] Fixed #35469 -- Removed deferred SQL to create index removed by AlterField operation.
Backport of 99f23eaabd8da653f046dc1d19f5008c030a4f79 from main.
2024-06-14 13:56:43 +02:00
John Parton
9c5fe93349 Fixed #35139 -- Prevented file read after ImageField is saved to storage. 2024-05-22 00:25:56 +02:00
Adam Johnson
b9838c65ec Fixed #35405 -- Converted get_cache_name into a cached property in FieldCacheMixin.
FieldCacheMixin is used by related fields to track their cached values.
This work migrates get_cache_name() to be a cached property to optimize
performance by reducing unnecessary function calls when working with
related fields, given that its value remains constant.

Co-authored-by: Simon Charette <charette.s@gmail.com>
Co-authored-by: Sarah Boyce <42296566+sarahboyce@users.noreply.github.com>
Co-authored-by: Natalia <124304+nessita@users.noreply.github.com>
2024-05-21 16:19:29 -03:00
Jonny Park
c0b0ce85ed Fixed #35384 -- Raised FieldError when saving a file without a name to FileField. 2024-05-15 12:02:45 +02:00
Mariusz Felisiak
f030236a86 Fixed #35275 -- Fixed Meta.constraints validation crash on UniqueConstraint with OpClass().
This also introduces Expression.constraint_validation_compatible that
allows specifying that expression should be ignored during a constraint
validation.
2024-05-14 10:34:30 +02:00
Adam Johnson
7abe5112f4 Fixed #35407 -- Cached model's Options.swapped. 2024-05-07 14:25:51 +02:00
Jacob Walls
ceea86baa3 Fixed #35425 -- Avoided INSERT with force_update and explicit pk.
Affected models where the primary key field is defined with a
default or db_default, such as UUIDField.
2024-05-07 12:15:27 +02:00
Mariusz Felisiak
91a4b9a8ec Fixed #35422 -- Fixed migrations crash when altering GeneratedField referencing rename field.
Thanks Sarah Boyce for the report and Simon Charette for the
implementation idea.
2024-05-03 09:28:24 +02:00
DevilsAutumn
9aeb38c296 Fixed #35359 -- Fixed migration operations ordering when adding fields referenced by GeneratedField.expression.
Thank you to Simon Charette for the review.
2024-05-02 21:43:13 -03:00
David Sanders
97d48cd3c6 Refs #34007, Refs #35359 -- Added Q.referenced_based_fields property.
Thank you to Mariusz Felisiak and Natalia Bidart for the reviews.
2024-05-02 19:05:13 +02:00
Mariusz Felisiak
85c154da2f Fixed #35412 -- Dropped support for SQLite < 3.31. 2024-04-29 11:07:54 +02:00
Chris Muthig
42b567ab4c Refs #35339 -- Updated Aggregate class to return consistent source expressions.
Refactored the filter and order_by expressions in the Aggregate class to
return a list of Expression (or None) values, ensuring that the list
item is always available and represents the filter expression.
For the PostgreSQL OrderableAggMixin, the returned list will always
include the filter and the order_by value as the last two elements.

Lastly, emtpy Q objects passed directly into aggregate objects using
Aggregate.filter in admin facets are filtered out when resolving the
expression to avoid errors in get_refs().

Thanks Simon Charette for the review.
2024-04-25 17:40:03 -03:00
Simon Charette
195d885ca0 Refs #35356 -- Clarified select related with masked field logic.
By always including related objects in the select mask via adjusting the
defer logic (_get_defer_select_mask()), it becomes possible for
select_related_descend() to treat forward and reverse relationships
indistinctively.

This work also simplifies and adds comments to
select_related_descend() to make it easier to understand.
2024-04-23 13:17:17 -03:00
Simon Charette
83f5478225 Fixed #35356 -- Deferred self-referential foreign key fields adequately.
While refs #34612 surfaced issues with reverse one-to-one fields
deferrals, it missed that switching to storing remote fields would break
self-referential relationships.

This change switches to storing related objects in the select mask
instead of remote fields to prevent collisions when dealing with
self-referential relationships that might have a different directional
mask.

Despite fixing #21204 introduced a crash under some self-referential
deferral conditions, it was simply not working even before that as it
aggregated the sets of deferred fields by model.

Thanks Joshua van Besouw for the report and Mariusz Felisiak for the
review.
2024-04-23 13:17:17 -03:00
James Ostrander
36b7024b7f Fixed #35392, Refs #34331 -- Allowed importing aprefetch_related_objects from django.db.models.
Thanks James Ostrander for the report and fix, and to Tim Graham and
Mariusz Felisiak for the reviews.
2024-04-22 17:05:05 -03:00
Simon Charette
d048f0d311 Fixed #35373 -- Fixed a crash when indexing a generated field on SQLite.
Generated fields have to be excluded from the INSERT query against the remade
table including the index.

Thanks Moshe Dicker for the report, David Sanders and Mariusz Felisiak for the
review.
2024-04-16 17:27:38 +02:00
Mariusz Felisiak
dd23821208 Fixed backends.oracle.tests.TransactionalTests.test_hidden_no_data_found_exception() on oracledb >= 2.1.2.
python-oracledb 2.1.2+ no longer hides 'ORA-1403: no data found'
exceptions raised in database triggers:

https://github.com/oracle/python-oracledb/issues/321
2024-04-15 09:01:53 +02:00
Sarah Boyce
8b53560eea Fixed #35350 -- Fixed save() with pk set on models with GeneratedFields.
Thanks Matt Hegarty for the report and Simon Charette and Natalia Bidart for the reviews.

Regression in f333e35.
2024-04-10 15:43:50 +02:00
Simon Charette
888b9042b3
Fixed #35336 -- Addressed crash when adding a GeneratedField with % literals.
A longer term solution is likely to have a better separation of parametrized
DDL altogether to handle checks, constraints, defaults, and generated fields
but such a change would require a significant refactor that isn't suitable
for a backport.

Thanks Adrian Garcia for the report.
2024-04-02 17:33:31 -03:00
Johannes Westphal
5f18021640 Fixed #35344, Refs #34838 -- Corrected output_field of resolved columns for GeneratedFields in aliased tables.
Thanks Simon Charette for the review.
2024-04-01 18:54:38 +01:00
Mariusz Felisiak
425b26092f
Refs #35234 -- Skipped CheckConstraint system checks if not supported.
Thanks Tim Graham for the report.

Regression in 0fb104dda287431f5ab74532e45e8471e22b58c8.
2024-03-30 14:15:03 +01:00
Mariusz Felisiak
b98271a6e4
Fixed #35329 -- Fixed migrations crash when adding partial unique constraints with nulls_distinct.
Bug in 595a2abb58e04caa4d55fb2589bb80fb2a8fdfa1.

Thanks Lucas Lemke Saunitti for the report.
2024-03-26 22:58:47 +01:00
Mariusz Felisiak
ae10146793
Removed unused _alter_column_collation_sql() in PostgreSQL DatabaseSchemaEditor.
Unused since ae0899be0d787fbfc5f5ab2b18c5a8219d822d2b.
2024-03-25 08:50:26 +01:00
David Sanders
b6e2b83901 Fixed #34841 -- Avoided rendering apps on state still requiring mutation. 2024-03-22 21:29:59 +01:00
sharonwoo
6a37e9bfae Fixed #35257 -- Corrected resolving output_field for IntegerField/DecimalField with NULL. 2024-03-21 10:13:54 +01:00
Laurent Lyaudet
f2388a4b73 Fixed #35309 -- Made prefetch clear ordering for single-valued relationships. 2024-03-20 05:26:18 +01:00
Adam Johnson
7646b9023d
Fixed #35301 -- Fixed Options._property_names for overriden properties.
Regression in faeb92ea13f0c1b2cc83f45b512f2c41cfb4f02d.
2024-03-17 09:43:04 +01:00
Mariusz Felisiak
b07e2d57a0
Stopped skipping model_fields.test_jsonfield.TestQuerying.test_usage_in_subquery on Oracle 23c. 2024-03-16 11:50:59 +01:00
Mariusz Felisiak
36a000858b
Refs #33996 -- Updated CheckConstraint validation on NULL values on Oracle 23c+.
Oracle 23c supports comparing boolean expressions.
2024-03-15 12:34:54 +01:00
Adam Johnson
cbf1e87398 Fixed #35294 -- Fixed TEXT format of QuerySet.explain() for long plans.
co-authored-by: Gordon <gordon.wrigley@gmail.com>
co-authored-by: Simon Charette <charette.s@gmail.com>
2024-03-15 06:58:14 +01:00
Ben Cail
593067a8ee Fixed #28541 -- Fixed migrations crash when changing primary key on SQLite. 2024-03-14 20:56:43 +01:00
Mariusz Felisiak
175b04942a Fixed #35295 -- Used INSERT with multiple rows on Oracle 23c. 2024-03-14 11:11:15 +01:00
Mariusz Felisiak
912f72a6f0 Refs #35295 -- Added BaseDatabaseOperations.bulk_insert_sql().
Co-authored-by: Nick Pope <nick@nickpope.me.uk>
2024-03-14 11:11:15 +01:00
Mariusz Felisiak
33c06ca0da
Refs #32673, Refs #35295 -- Avoided wrapping rhs direct values in lookups. 2024-03-13 17:46:37 +01:00
Mariusz Felisiak
3592e9fcb1
Optimized DatabaseOperations.bulk_insert_sql() a bit on Oracle. 2024-03-11 13:24:18 +01:00
Adam Johnson
e5ec11a84d Fixed #35285 -- Optimized ForeignObject._check_unique_target(). 2024-03-11 06:52:50 +01:00
Adam Johnson
faeb92ea13 Fixed #35270 -- Optimized model's Options._property_names.
co-authored-by: Nick Pope <nick@nickpope.me.uk>
2024-03-09 16:14:18 +01:00
Giannis Terzopoulos
73df8b54a2 Fixed #35044 -- Avoided clearing reverse relations and private fields when accessing deferred fields.
Regression in a7b5ad8b19a08d7d57302ece74f6e26d2887fd9f for reverse
relations and possibly in 123b1d3fcf79f091573c40be6da7113a6ef35b62 for
private fields.
2024-03-08 11:09:54 +01:00
Giannis Terzopoulos
74f7fe3f3d Optimized Model.refresh_from_db(fields=...) by using a set. 2024-03-08 10:33:18 +01:00