summaryrefslogtreecommitdiff
path: root/django/db
AgeCommit message (Collapse)Author
2025-03-30[5.2.x] Fixed warnings per flake8 7.2.0.Mariusz Felisiak
https://github.com/PyCQA/flake8/releases/tag/7.2.0 Backport of 281910ff8e9ae98fa78ee5d26ae3f0b713ccf418 from main
2025-02-18[5.2.x] Fixed #35167 -- Delegated to super() in JSONField.get_db_prep_save().Jacob Walls
Avoids reports of bulk_update() sending Cast expressions to JSONField.get_prep_value(). Co-authored-by: Simon Charette <charette.s@gmail.com> Backport of 0bf412111be686b6b23e00863f5d449d63557dbf from main.
2025-02-18[5.2.x] Fixed #36197 -- Fixed improper many-to-many count() and exists() for ↵Simon Charette
non-pk to_field. Regression in 66e47ac69a7e71cf32eee312d05668d8f1ba24bb. Thanks mfontana-elem for the report and Sarah for the tests. Backport of c3a23aa02faa1cf1d32e43d66858e793cd9ecac4 from main.
2025-02-16[5.2.x] Fixed #35967 -- Deferred test suite fixtures serialization after all ↵Simon Charette
dbs setup. While the top-level objects fed to serialization are bound to the test database being created nothing prevents code invoked during serialization from performing queries against other connections entries that haven't been swapped yet. The reported example of that is a database router directing all reads to a test mirror for a set of models involving auto-created many-to-many fields. It might be tempting to address the many-to-many field case but this a symptom of a larger problem where the test framework yields the flow execution to user code that could interact with non-test databases in unexpected ways. Deferring test database fixture serialization until the point where all connections entries have been swapped for their test equivalent ensures that no code triggered during serialization can interact with non-test databases. Thanks Jake Howard for the report and Jacob Walls for the initial investigation. Backport of dc69a63f844b2ef3bc3371edde91644cf0bef0ee from main
2025-02-15[5.2.x] Refs #36181 -- Removed the obsolete SubqueryConstraint machinery.Mariusz Felisiak
Adding proper support for subquery right-hand-sides to TupleIn made it obsolete. Backport of d386405e04dac50656af50d100a14efdf8c58e8f from main Co-authored-by: Simon Charette <charette.s@gmail.com>
2025-02-15[5.2.x] Fixed #36173 -- Stabilized identity of Concat with an explicit ↵Simon Charette
output_field. When Expression.__init__() overrides make use of *args, **kwargs captures their argument values are respectively bound as a tuple and dict instances. These composite values might themselves contain values that require special identity treatments such as Concat(output_field) as it's a Field instance. Refs #30628 which introduced bound Field differentiation but lacked argument captures handling. Thanks erchenstein for the report. Backport of df2c4952df6d93c575fb8a3c853dc9d4c2449f36 from main
2025-02-13[5.2.x] Fixed #36181 -- Allowed Subquery usage in __in lookups against ↵Simon Charette
composite pks. Thanks Jacob Walls for the report. Backport of 8561100425876bde3be4b2a22324655f74ff9609 from main.
2025-02-11[5.2.x] Fixed #36149 -- Allowed subquery values against tuple exact and in ↵Simon Charette
lookups. Non-tuple exact and in lookups have specialized logic for subqueries that can be adapted to properly assign select mask if unspecified and ensure the number of involved members are matching on both side of the operator. Backport of 41239fe34d64e801212dccaa4585e4802d0fac68 from main.
2025-02-11[5.2.x] Refs #36148 -- Relied on a feature switch to define tuple lookups ↵Simon Charette
support. This should allow backends more easily opt-in or out of native support and rely on the fallback if unavailable. Backport of a0a765ddeb5056c85e084773d3f6432e2a426638 from main.
2025-02-09[5.2.x] Refs #373 -- Delegated Tuple compilation to compiler.Simon Charette
This should allow third-party backends to define Tuple.as_vendor() overrides that are taken into consideration which calling as_sql() directly prevents. Backport of c326cfe3b1683e6c205f53a4ad11feba6623a399 from main
2025-02-06[5.2.x] Refs #34975 -- Removed unnecessary lookups.In.get_refs().Simon Charette
Now that In.get_source_expression() includes its right-hand-side when it contains expressions (refs #36025) it no longer requires a specialized get_refs() method. Backport of 0bac41fc7e4a842e8d20319cba31cc645501c245 from main.
2025-02-06[5.2.x] Fixed #36025 -- Fixed re-aliasing of iterable (in/range) lookups rhs.Simon Charette
In order for Expression.relabeled_clone to work appropriately its get_source_expressions method must return all resolvable which wasn't the case for Lookup when its right-hand-side is "direct" (not a compilable). While refs #22288 added support for non-literals iterable right-hand-side lookups it predated the subclassing of Lookup(Expression) refs #27021 which could have been an opportunity to ensure right-hand-sides are always resolvable (ValueList and ExpressionList). Addressing all edge case with non-resolvable right-hand-sides would require a significant refactor and deprecation of some parts of the Lookup interface so this patch only focuses on FieldGetDbPrepValueIterableMixin (In and Range lookups) by making sure that a right-hand-side containing resolvables are dealt with appropriately during the resolving phase. Thanks Aashay Amballi for the report. Backport of 089deb82b9ac2d002af36fd36f288368cdac4b53 from main.
2025-02-06[5.2.x] Fixed #36061 -- Added migration support for ↵brian
ManyToManyField.through_fields. Added through_fields support to ManyToManyField.deconstruct. Thanks to Simon Charette for pointers and the review. Backport of b13b8684a04d0bc1081104c5973c62c27dc673b0 from main.
2025-02-06[5.2.x] Fixed #35677 -- Avoided non-sticky filtering of prefetched many-to-many.Simon Charette
The original queryset._next_is_sticky() call never had the intended effect as no further filtering was applied internally after the pk__in lookup making it a noop. In order to be coherent with how related filters are applied when retrieving objects from a related manager the effects of what calling _next_is_sticky() prior to applying annotations and filters to the queryset provided for prefetching are emulated by allowing the reuse of all pre-existing JOINs. Thanks David Glenck and Thiago Bellini Ribeiro for the detailed reports and tests. Backport of 2598b371a93e21d84b7a2a99b2329535c8c0c138 from main.
2025-02-06[5.2.x] Refs #22997 -- Prevented requesting a default value for auto fields.Ben Cail
Backport of db7b1ae9f6d9e26facbb3da4cf5f5a513704bfe5 from main.
2025-02-03[5.2.x] Fixed #36135 -- Fixed reverse GenericRelation prefetching.Simon Charette
The get_(local|foreign)_related_value methods of GenericRelation must be reversed because it defines (from|to)_fields and associated related_fields in the reversed order as it's effectively a reverse GenericForeignKey itself. The related value methods must also account for the fact that referenced primary key values might be stored as a string on the model defining the GenericForeignKey but as integer on the model defining the GenericRelation. This is achieved by calling the to_python method of the involved content type in get_foreign_related_value just like GenericRelatedObjectManager does. Lastly reverse many-to-one manager's prefetch_related_querysets should use set_cached_value instead of direct attribute assignment as direct assignment might are disallowed on ReverseManyToOneDescriptor descriptors. This is likely something that was missed in f5233dc (refs #32511) when the is_cached guard was added. Thanks 1xinghuan for the report. Backport of 198b30168d4e94af42e0dc7967bd3259b5c5790b from main.
2025-01-30[5.2.x] Fixed #35235 -- Removed caching of BaseExpression._output_field_or_none.sharonwoo
Backport of cbb0812683cf3236e4a4003bf7f74b119d3cde0c from main.
2025-01-30[5.2.x] Fixed #36155 -- Improved error handling when annotate arguments ↵Vinko Mlačić
require an alias. Regression in ed0cbc8d8b314e3b4a0305d0be3cf366d8ee4a74. Backport of c6ace896a2da73356f7c9a655bbe32a0e3ce0435 from main.
2025-01-29[5.2.x] Fixed #36118 -- Accounted for multiple primary keys in bulk_update ↵Sarah Boyce
max_batch_size. Co-authored-by: Simon Charette <charette.s@gmail.com> Backport of 5a2c1bc07d126ce32efaa157e712a8f3a7457b74 from main.
2025-01-28[5.2.x] Fixed #36122 -- Raised FieldError when updating with composite ↵Simon Charette
reference value. Thanks Jacob Walls for the report and test. Backport of efec74b90868c2e611f863bf4301d92ce08067e8 from main.
2025-01-28[5.2.x] Fixed #36120 -- Raised FieldError when targeting a composite primary ↵Jacob Walls
key field with QuerySet.update(). Backport of 72ff18d41cfb004ae180bdf87fd8bad93041c691 from main.
2025-01-27[5.2.x] Fixed #36109 -- Fixed RecursionError when stacking FilteredRelation ↵Peter DeVita
joins. Backport of 8eca4077f60fa0705ecfd9437c9ceaeef7a3808b from main.
2025-01-25[5.2.x] Fixed #36111 -- Fixed test --debug-sql crash on Oracle when no prior ↵Jacob Walls
query has executed. Backport of 330d89d4fe7832355535580383523f1749a3ee45 from main
2025-01-22[5.2.x] Fixed #36117 -- Raised ValueError when providing composite ↵Simon Charette
expressions to case / when. Remove redundant Case and When.resolve_expression to delegate composite expression support to BaseExpression. Thanks Jacob Tyler Walls for the report and test. Backport of 00c690efbc0b10f67924687f24a7b30397bf47d9 from main.
2025-01-22[5.2.x] Refs #36042 -- Consolidated composite expression checks in ↵Simon Charette
BaseExpression. Remove redundant Func.resolve_expression and adjust CombinedExpression to delegate source expression resolving to super() to perform checks against allows_composite_expressions in a single location. Backport of a76035e925ff4e6d8676c65cb135c74b993b1039 from main.
2025-01-21[5.2.x] Fixed #36116 -- Optimized multi-column ForwardManyToOne prefetching.Simon Charette
Rely on ColPairs and TupleIn which support a single column to be specified to avoid special casing ForwardManyToOne.get_prefetch_querysets(). Thanks Jacob Walls for the report. Backport of 626d77e52a3f247358514bcf51c761283968099c from main.
2025-01-20[5.2.x] Fixed #36107 -- Adjusted UNNEST bulk_create strategy to opt-out ↵Simon Charette
sized arrays. The array fields opt-out heuristic failed to account for sized arrays. Note that we keep relying on db_type as opposed to performing an ArrayField instance check against the column's field as there could be other implementations of model fields that use Postgres arrays to store the optimization must be disabled for all of them. Refs #35936. Thanks Claude Paroz for the report and test. Backport of 22fc151bb86a553d84c62d7effd289356e9b6c6c from main.
2025-01-15Fixed #36100 -- Checked if composite pk is set in get_next/get_previous.Jacob Walls
2025-01-14Fixed #36051 -- Declared arity on aggregate functions.Jacob Walls
Follow-up to 4a66a69239c493c05b322815b18c605cd4c96e7c.
2025-01-14Refs #36075 -- Adjusted MTI handling of _non_pk_concrete_field_names.Simon Charette
Regression in bf7b17d16d3978b2e1cee4a0f7ce8840bd1a8dc4. Thanks Sage Abdullah for the report.
2025-01-14Refs #36075 -- Adjusted pk_fields usage in bulk_update eligibility checks.Simon Charette
Regression in bf7b17d16d3978b2e1cee4a0f7ce8840bd1a8dc4. Thanks Sage Abdullah for the report.
2025-01-14Fixed #36093 -- Adjusted unique checks to account for inherited primary keys.Simon Charette
Regression in bf7b17d16d3978b2e1cee4a0f7ce8840bd1a8dc4 refs #36075. Thanks Sage Abdullah for the report and tests.
2025-01-14Fixed CVE-2024-56374 -- Mitigated potential DoS in IPv6 validation.Michael Manfre
Thanks Saravana Kumar for the report, and Sarah Boyce and Mariusz Felisiak for the reviews. Co-authored-by: Natalia <124304+nessita@users.noreply.github.com>
2025-01-13Fixed #36092 -- Disallowed non-local fields in composite primary keys.Bendeguz Csirmaz
2025-01-13Refs #36075 -- Used field in pk_fields over field.primary_key.Sarah Boyce
2025-01-13Refs #36050 -- Fixed OuterRef support for CompositePrimaryKey on Oracle.Simon Charette
Oracle doesn't support native tuple comparison so each as_oracle implementation of tuple lookups must also perform right-hand-side sanitization.
2025-01-13Fixed #36086 -- Fixed crash when using GeneratedField with non-AutoField pk.Simon Charette
The previous logic was systematically attempting to retrieve last_insert_id even for models without an AutoField primary key when they had a GeneratedField on backends that can't return columns from INSERT. The issue affected MySQL, SQLite < 3.35, and Oracle when the use_returning_into option was disabled and could result in either crashes when the non-auto primary key wasn't an IntegerField subclass or silent misassignment of bogus insert ids (0 or the previous auto primary key insert value) to the first defined generated field value.
2025-01-13Refs #373 -- Removed unused composite pk code in SQLInsertCompiler.Simon Charette
This logic could only be exercised if the composite primary key included an AutoField but it's not allowed yet (refs #35957). It was also slightly broken as it expected the AutoField to always be the first member of returning_fields.
2025-01-10Fixed #36050 -- Added OuterRef support to CompositePrimaryKey.Bendeguz Csirmaz
2025-01-10Fixed #36064 -- Skipped an UPDATE when adding a model instance with a ↵Bendeguz Csirmaz
composite primary key with default values.
2025-01-10Refs #36064 -- Added Model.has_db_default() to encapsulate NOT_PROVIDED checks.Simon Charette
This avoids many awkward checks against NOT_PROVIDED and provides symmetry with Field.has_default() which is also the reason why it wasn't made a property.
2025-01-10Fixed #36068 -- Raised ValueError when providing a composite PK field to ↵Jacob Walls
bulk_create() update_fields.
2025-01-09Fixed #36074 -- Excluded composite primary key fields on save() updates.Simon Charette
2025-01-08Fixed #36062 -- Handled serialization of CompositePrimaryKeys.Sarah Boyce
2025-01-08Fixed #36065 -- Fixed ordering by expression referencing composite primary key.Simon Charette
Thanks Jacob Walls for the report and test and Csirmaz Bendegúz for the review.
2025-01-07Refs #36042 -- Raised ValueError when providing composite expressions to ↵Jacob Walls
aggregates.
2025-01-07Fixed #36042 -- Raised ValueError when using CompositePrimaryKey as rhs.Jacob Walls
2025-01-06Fixed #35718 -- Add JSONArray to django.db.models.functions.John Parton
Co-authored-by: Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> Co-authored-by: Mariusz Felisiak <felisiak.mariusz@gmail.com>
2025-01-06Fixed #36048 -- Preferred ValueError to NotSupportedError for composite pk ↵Jacob Walls
sanity checks. These checks are not backend-dependent.
2025-01-03Fixed #35918 -- Added support for execute_sql to directly return row counts.Raphael Gaschignard