Nick Pope
9dff316be4
Refs #32948 , Refs #32946 -- Used Q.create() internally for dynamic Q() objects.
...
Node.create() which has a compatible signature with Node.__init__()
takes in a single `children` argument rather than relying in unpacking
*args in Q.__init__() which calls Node.__init__().
In addition, we were often needing to unpack iterables into *args and
can instead pass a list direct to Node.create().
2022-07-27 10:06:24 +02:00
Nick Pope
845667f2d1
Refs #32948 -- Simplified and optimized Q._combine() and __invert__().
...
- Removed use of Q.deconstruct() in Q._combine().
- Simplified and optimized Q.__invert__() by taking a shallow copy and
swapping the negated attribute only.
- Simplified construction in Q._combine().
- Simplified conditions in Q._combine() as Q.conditional = True the
first isinstance() check is unnecessary.
- Removed copy.copy() branch in Q._combine().
Co-authored-by: Keryn Knight <keryn@kerynknight.com>
2022-07-27 10:06:24 +02:00
Nick Pope
19b866c254
Refs #32948 -- Added Node.__copy__().
...
This allows the copy.copy() usage in the Q._combine() method to finish
sooner, instead of having to fallback to using the __reduce_ex__(4)
method.
Thia also avoids having to fall into copy.copy() at in Q._combine(),
when combining a Q() with another Q().
Co-authored-by: Keryn Knight <keryn@kerynknight.com>
2022-07-27 10:06:24 +02:00
Nick Pope
ed9eca8457
Refs #32948 -- Simplified WhereNode and Node.__deepcopy__()/add().
...
We can use copy() in Node.add() instead of create() as we don't need the
children to be cloned via [:] subscript in __init__().
2022-07-27 10:06:24 +02:00
Nick Pope
ddf0002bb7
Refs #32948 -- Renamed Node._new_instance() to Node.create().
...
Node._new_instance() was added in
6dd2b5468f
to work around Q.__init__()
having an incompatible signature with Node.__init__().
It was intended as a hook that could be overridden if subclasses needed
to change the behaviour of instantiation of their specialised form of
Node. In practice this doesn't ever seem to have been used for this
purpose and there are very few calls to Node._new_instance() with other
code, e.g. Node.__deepcopy__() calling Node and overriding __class__ as
required.
Rename this to Node.create() to make it a more "official" piece of
private API that we can use to simplify a lot of other areas internally.
The docstring and nearby comment have been reworded to read more
clearly.
2022-07-27 10:06:24 +02:00
Nick Pope
4f8bc75bc3
Removed obsolete docstring from WhereNode.clone().
...
Node.subtree_parents was removed in
d3f00bd570
. That commit also added
Q.clone() which was identical to WhereNode.clone(), but lacked the
docstring. Q.clone() was later removed in
b454e2cbc9
.
2022-07-27 07:55:09 +02:00
Nick Pope
769d7cce4a
Used AND, OR, XOR constants instead of hard-coded values.
2022-07-27 07:55:09 +02:00
Mariusz Felisiak
66f30dbf25
Refs #27236 -- Reverted "Refs #27236 -- Refactored out DeprecationForHistoricalMigrationMixin."
...
This reverts commit 57793b4765
.
2022-07-26 11:41:19 +02:00
Mariusz Felisiak
f810325721
Refs #27236 -- Made cosmetic edits to Meta.index_together deprecation.
...
This should make it more straightforward to move forward when
deprecation ends.
2022-07-21 07:05:50 +02:00
David Wobrock
a6385b382e
Fixed #27236 -- Deprecated Meta.index_together in favor of Meta.indexes.
...
This also deprecates AlterIndexTogether migration operation.
2022-07-12 09:04:31 +02:00
Stéphane "Twidi" Angel
ccbf714ebe
Fixed #33829 -- Made BaseConstraint.deconstruct() and equality handle violation_error_message.
...
Regression in 667105877e
.
2022-07-08 08:17:42 +02:00
David Wobrock
57793b4765
Refs #27236 -- Refactored out DeprecationForHistoricalMigrationMixin.
2022-07-07 12:21:35 +02:00
Simon Charette
877c800f25
Refs CVE-2022-34265 -- Properly escaped Extract() and Trunc() parameters.
...
Co-authored-by: Mariusz Felisiak <felisiak.mariusz@gmail.com>
2022-07-06 07:40:07 +02:00
Mariusz Felisiak
54eb8a374d
Fixed CVE-2022-34265 -- Protected Trunc(kind)/Extract(lookup_name) against SQL injection.
...
Thanks Takuto Yoshikai (Aeye Security Lab) for the report.
2022-07-04 08:13:41 +02:00
Ipakeev
425718726b
Fixed #33816 -- Fixed QuerySet.only() after select_related() crash on proxy models.
2022-07-04 06:37:36 +02:00
Mariusz Felisiak
c48b34e26d
Refs #32786 -- Made query clear ordering when ordered combined queryset is used in subquery on Oracle.
2022-06-27 06:21:31 +02:00
Mariusz Felisiak
44ffd8d06f
Fixed #33796 -- Fixed ordered combined queryset crash when used in subquery on PostgreSQL and MySQL.
...
Thanks Shai Berger for the report.
Regression in 30a0144134
.
2022-06-27 06:21:31 +02:00
DhruvaPatil98
c627226d05
Fixed #33799 , Refs #31685 -- Added parameters for updating conflicts to QuerySeta.abulk_create().
2022-06-23 11:12:35 +02:00
David Wobrock
3ef37a5245
Fixed #28897 -- Fixed QuerySet.update() on querysets ordered by annotations.
2022-06-17 10:06:17 +02:00
Pablo Pissi
d287294885
Fixed #33772 -- Added QuerySet.first()/last() error message on unordered queryset with aggregation.
2022-06-14 12:24:43 +02:00
Ebram Shehata
4996eaa7b5
Made QuerySet.bulk_update() raise an error when batch_size is zero.
2022-06-13 06:25:25 +02:00
kshivakumar
46efd03d26
Fixed #33733 -- Preserved wrapper assignment for manager methods.
2022-06-01 10:44:34 +02:00
Allen Jonathan David
1058fc7023
Fixed #33191 -- Avoided clearing cached reference when saving child after parent.
...
Thanks Barry Johnson for the report.
2022-05-31 10:19:54 +02:00
David Wobrock
9f55489529
Fixed #33705 -- Fixed crash when using IsNull() lookup in filters.
...
Thanks Florian Apolloner for the report.
Thanks Simon Charette for the review.
2022-05-19 07:02:22 +02:00
Mariusz Felisiak
4286378a08
Updated source translation catalogs.
...
Forward port of d1f1a0168a
from
stable/4.1.x.
2022-05-17 14:17:07 +02:00
非法操作
19dc3f0f96
Fixed typo in Query.clone()'s docstring.
2022-05-13 06:56:20 +02:00
Mariusz Felisiak
68da6b389c
Fixed #33543 -- Deprecated passing nulls_first/nulls_last=False to OrderBy and Expression.asc()/desc().
...
Thanks Allen Jonathan David for the initial patch.
2022-05-12 11:30:03 +02:00
Ed Rivas
2798c937de
Fixed #29538 -- Fixed crash of ordering by related fields when Meta.ordering contains expressions.
...
Thanks Simon Charette for the review.
2022-05-12 07:19:16 +02:00
Gagaro
667105877e
Fixed #30581 -- Added support for Meta.constraints validation.
...
Thanks Simon Charette, Keryn Knight, and Mariusz Felisiak for reviews.
2022-05-10 11:22:23 +02:00
Gagaro
5d91dc8ee3
Refs #30581 -- Added Q.check() hook.
2022-05-04 08:47:52 +02:00
Simon Charette
1109e66990
Refs #33646 -- Reduced sync_to_async hops on async QuerySet iteration.
...
Until we add support for truly asynchronous database backends it's
actually detrimental to have complete set retrieval require multiple
hops between sync and async emulated contexts via asgiref.
By defaulting to sending the whole sync _fetch_all() to the current
context thread pool we reduce unncessary work when dealing with large
result sets since the queryset cannot be iterated anyway before all
results are retrieved and cached.
2022-05-04 08:31:59 +02:00
Gagaro
9d04711261
Refs #30581 -- Added Q.flatten().
2022-05-03 15:31:53 +02:00
Mariusz Felisiak
271a8e73ee
Refs #33646 -- Made QuerySet.raw() async-compatible.
2022-05-02 10:52:33 +02:00
Mariusz Felisiak
77926176b2
Refs #33646 -- Added RawModelIterable.
2022-05-02 10:52:33 +02:00
David Wobrock
aca9bb2a12
Fixed #33413 -- Made migrations propage collations to related fields.
2022-05-02 08:13:38 +02:00
David Wobrock
87da283338
Refs #33413 -- Added collation to CharField/TextField's db_parameters.
2022-04-29 06:30:15 +02:00
Andrew Godwin
58b27e0dbb
Fixed #33646 -- Added async-compatible interface to QuerySet.
...
Thanks Simon Charette for reviews.
Co-authored-by: Carlton Gibson <carlton.gibson@noumenal.es>
Co-authored-by: Mariusz Felisiak <felisiak.mariusz@gmail.com>
2022-04-26 20:25:23 +02:00
marcperrinoptel
4282fd468f
Fixed #33655 -- Removed unnecessary constant from GROUP BY clause for QuerySet.exists().
2022-04-26 06:19:18 +02:00
Hannes Ljungberg
ed0a2c3238
Removed unnecessary variable in Index.create_sql().
...
Unnecessary since fdfb3086fc
.
2022-04-22 19:07:56 +02:00
Collin Anderson
0de89b6f8d
Refs #31223 -- Added __class_getitem__() to ForeignKey.
2022-04-22 14:13:12 +02:00
sarahboyce
cd4da34fc1
Fixed #33004 -- Made saving objects with unsaved GenericForeignKey raise ValueError.
...
This aligns to the behaviour of OneToOneField and ForeignKey fields.
Thanks Jonny Park for the initial patch.
2022-04-21 10:12:28 +02:00
Mariusz Felisiak
f4f2afeb45
Refs #32226 -- Fixed JSON format of QuerySet.explain() on PostgreSQL when format is uppercased.
...
Follow up to aba9c2de66
.
2022-04-19 08:24:24 +02:00
Mariusz Felisiak
a0bd006306
Made select_for_update() don't raise TransactionManagementError on databases that don't support transactions.
2022-04-14 07:53:15 +02:00
Mariusz Felisiak
fdfb3086fc
Fixed DatabaseFeatures.supports_index_column_ordering and related tests with MyISAM storage engine.
2022-04-13 11:56:24 +02:00
David Smith
856b528801
Removed unnecessary tuple call in SQLInsertCompiler.
2022-04-13 08:10:52 +02:00
mgaligniana
0ad5316f22
Fixed #24296 -- Made QuerySet.exists() clear selected columns for not sliced distinct querysets.
2022-04-12 08:18:22 +02:00
Himanshu-Balasamanta
06ebaa9e28
Fixed #33626 -- Cleared cache when unregistering a lookup.
2022-04-12 06:24:02 +02:00
Mariusz Felisiak
6723a26e59
Fixed CVE-2022-28347 -- Protected QuerySet.explain(**options) against SQL injection on PostgreSQL.
2022-04-11 08:59:58 +02:00
Mariusz Felisiak
93cae5cb2f
Fixed CVE-2022-28346 -- Protected QuerySet.annotate(), aggregate(), and extra() against SQL injection in column aliases.
...
Thanks Splunk team: Preston Elder, Jacob Davis, Jacob Moore,
Matt Hanson, David Briggs, and a security researcher: Danylo Dmytriiev
(DDV_UA) for the report.
2022-04-11 08:59:33 +02:00
Simon Charette
0b31e02487
Fixed #33618 -- Fixed MTI updates outside of primary key chain.
2022-04-07 07:54:56 +02:00