<feed xmlns='http://www.w3.org/2005/Atom'>
<title>django.git/django/db/models/sql/where.py, branch 4.2.29</title>
<subtitle>django
</subtitle>
<id>http://cgit.adnoto.dev/django.git/atom?h=4.2.29</id>
<link rel='self' href='http://cgit.adnoto.dev/django.git/atom?h=4.2.29'/>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/'/>
<updated>2022-11-09T12:22:14Z</updated>
<entry>
<title>Fixed #28477 -- Stripped unused annotations on aggregation.</title>
<updated>2022-11-09T12:22:14Z</updated>
<author>
<name>Simon Charette</name>
<email>charette.s@gmail.com</email>
</author>
<published>2022-11-06T04:28:33Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=59bea9efd2768102fc9d3aedda469502c218e9b7'/>
<id>urn:sha1:59bea9efd2768102fc9d3aedda469502c218e9b7</id>
<content type='text'>
Also avoid an unnecessary pushdown when aggregating over a query that doesn't
have aggregate annotations.
</content>
</entry>
<entry>
<title>Refs #33374 -- Adjusted full match condition handling.</title>
<updated>2022-11-07T19:23:53Z</updated>
<author>
<name>Simon Charette</name>
<email>charette.s@gmail.com</email>
</author>
<published>2022-11-06T16:19:33Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=76e37513e22f4d9a01c7f15eee36fe44388e6670'/>
<id>urn:sha1:76e37513e22f4d9a01c7f15eee36fe44388e6670</id>
<content type='text'>
Adjusting WhereNode.as_sql() to raise an exception when encoutering a
full match just like with empty matches ensures that all case are
explicitly handled.
</content>
</entry>
<entry>
<title>Refs #30158 -- Removed alias argument for Expression.get_group_by_cols().</title>
<updated>2022-10-06T10:04:00Z</updated>
<author>
<name>Simon Charette</name>
<email>charette.s@gmail.com</email>
</author>
<published>2022-09-28T14:51:06Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=c6350d594c359151ee17b0c4f354bb44f28ff69e'/>
<id>urn:sha1:c6350d594c359151ee17b0c4f354bb44f28ff69e</id>
<content type='text'>
Recent refactors allowed GROUP BY aliasing allowed for aliasing to be
entirely handled by the sql.Query.set_group_by and compiler layers.
</content>
</entry>
<entry>
<title>Fixed #34024 -- Fixed crash when aggregating querysets with Q objects annotations.</title>
<updated>2022-09-23T14:15:03Z</updated>
<author>
<name>David Sanders</name>
<email>shang.xiao.sanders@gmail.com</email>
</author>
<published>2022-09-23T14:15:03Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=1674c70525bc370132a1db27617e468081920d11'/>
<id>urn:sha1:1674c70525bc370132a1db27617e468081920d11</id>
<content type='text'>
This reverts b64db05b9cedd96905d637a2d824cbbf428e40e7.

It was reasonable to assume it was unnecessary code as there were
no failing tests upon its removal. This commit adds the necessary
regression tests for the failing condition identified in #34024
alongside the original tests added in the PR for which
WhereNode.is_summary was introduced.</content>
</entry>
<entry>
<title>Refs #28333 -- Added partial support for filtering against window functions.</title>
<updated>2022-08-15T06:26:26Z</updated>
<author>
<name>Simon Charette</name>
<email>charette.s@gmail.com</email>
</author>
<published>2022-08-10T12:22:01Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=f387d024fc75569d2a4a338bfda76cc2f328f627'/>
<id>urn:sha1:f387d024fc75569d2a4a338bfda76cc2f328f627</id>
<content type='text'>
Adds support for joint predicates against window annotations through
subquery wrapping while maintaining errors for disjointed filter
attempts.

The "qualify" wording was used to refer to predicates against window
annotations as it's the name of a specialized Snowflake extension to
SQL that is to window functions what HAVING is to aggregates.

While not complete the implementation should cover most of the common
use cases for filtering against window functions without requiring
the complex subquery pushdown and predicate re-aliasing machinery to
deal with disjointed predicates against columns, aggregates, and window
functions.

A complete disjointed filtering implementation should likely be
deferred until proper QUALIFY support lands or the ORM gains a proper
subquery pushdown interface.
</content>
</entry>
<entry>
<title>Refs #32948 -- Added Node.__copy__().</title>
<updated>2022-07-27T08:06:24Z</updated>
<author>
<name>Nick Pope</name>
<email>nick@nickpope.me.uk</email>
</author>
<published>2021-07-20T16:23:59Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=19b866c254b54d904a942f34d662dfacd9005a77'/>
<id>urn:sha1:19b866c254b54d904a942f34d662dfacd9005a77</id>
<content type='text'>
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 &lt;keryn@kerynknight.com&gt;
</content>
</entry>
<entry>
<title>Refs #32948 -- Simplified WhereNode and Node.__deepcopy__()/add().</title>
<updated>2022-07-27T08:06:24Z</updated>
<author>
<name>Nick Pope</name>
<email>nick@nickpope.me.uk</email>
</author>
<published>2021-09-20T22:38:47Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=ed9eca8457e1673d09adfc65392a214027053109'/>
<id>urn:sha1:ed9eca8457e1673d09adfc65392a214027053109</id>
<content type='text'>
We can use copy() in Node.add() instead of create() as we don't need the
children to be cloned via [:] subscript in __init__().
</content>
</entry>
<entry>
<title>Refs #32948 -- Renamed Node._new_instance() to Node.create().</title>
<updated>2022-07-27T08:06:24Z</updated>
<author>
<name>Nick Pope</name>
<email>nick@nickpope.me.uk</email>
</author>
<published>2021-09-20T22:34:24Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=ddf0002bb760e5f1df664a81bd2a554c522f2c0f'/>
<id>urn:sha1:ddf0002bb760e5f1df664a81bd2a554c522f2c0f</id>
<content type='text'>
Node._new_instance() was added in
6dd2b5468fa275d53aa60fdcaff8c28bdc5e9c25 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.
</content>
</entry>
<entry>
<title>Removed obsolete docstring from WhereNode.clone().</title>
<updated>2022-07-27T05:55:09Z</updated>
<author>
<name>Nick Pope</name>
<email>nick@nickpope.me.uk</email>
</author>
<published>2021-09-20T22:22:17Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=4f8bc75bc310a6a206d2d1b9550d3df313eb63eb'/>
<id>urn:sha1:4f8bc75bc310a6a206d2d1b9550d3df313eb63eb</id>
<content type='text'>
Node.subtree_parents was removed in
d3f00bd5706b35961390d3814dd7e322ead3a9a3. That commit also added
Q.clone() which was identical to WhereNode.clone(), but lacked the
docstring. Q.clone() was later removed in
b454e2cbc95eb26fa0c32b54c53ae24fc40e8c02.
</content>
</entry>
<entry>
<title>Fixed #29865 -- Added logical XOR support for Q() and querysets.</title>
<updated>2022-03-04T11:55:37Z</updated>
<author>
<name>Ryan Heard</name>
<email>ryanwheard@gmail.com</email>
</author>
<published>2021-07-02T20:09:13Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=c6b4d62fa2c7f73b87f6ae7e8cf1d64ee5312dc5'/>
<id>urn:sha1:c6b4d62fa2c7f73b87f6ae7e8cf1d64ee5312dc5</id>
<content type='text'>
</content>
</entry>
</feed>
