<feed xmlns='http://www.w3.org/2005/Atom'>
<title>django.git/tests/regressiontests/queries/models.py, branch main</title>
<subtitle>django
</subtitle>
<id>http://cgit.adnoto.dev/django.git/atom?h=main</id>
<link rel='self' href='http://cgit.adnoto.dev/django.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/'/>
<updated>2013-02-26T13:36:57Z</updated>
<entry>
<title>Merged regressiontests and modeltests into the test root.</title>
<updated>2013-02-26T13:36:57Z</updated>
<author>
<name>Florian Apolloner</name>
<email>florian@apolloner.eu</email>
</author>
<published>2013-02-26T08:53:47Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=89f40e36246100df6a11316c31a76712ebc6c501'/>
<id>urn:sha1:89f40e36246100df6a11316c31a76712ebc6c501</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Added a test for negated Q object querying</title>
<updated>2013-02-20T19:45:36Z</updated>
<author>
<name>Anssi Kääriäinen</name>
<email>akaariai@gmail.com</email>
</author>
<published>2013-02-20T19:09:27Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=e8fc3f3783744e4fcd3ff0ac43e3ce2572292f3a'/>
<id>urn:sha1:e8fc3f3783744e4fcd3ff0ac43e3ce2572292f3a</id>
<content type='text'>
The added test is from the patch in ticket #19672 (written by Ian
Kelly). Fixed #19672, refs #19849.
</content>
</entry>
<entry>
<title>Fixed #19837 -- Refactored split_exclude() join generation</title>
<updated>2013-02-18T23:10:49Z</updated>
<author>
<name>Anssi Kääriäinen</name>
<email>akaariai@gmail.com</email>
</author>
<published>2013-02-17T23:56:24Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=b4492a8ca4a7ae4daa3a6b03c3d7a845fad74931'/>
<id>urn:sha1:b4492a8ca4a7ae4daa3a6b03c3d7a845fad74931</id>
<content type='text'>
The refactoring mainly concentrates on making sure the inner and outer
query agree about the split position. The split position is where the
multijoin happens, and thus the split position also determines the
columns used in the "WHERE col1 IN (SELECT col2 from ...)" condition.

This commit fixes a regression caused by #10790 and commit
69597e5bcc89aadafd1b76abf7efab30ee0b8b1a. The regression was caused
by wrong cols in the split position.
</content>
</entry>
<entry>
<title>Fixed #18854 -- Join promotion in disjunction cases</title>
<updated>2012-12-20T19:45:15Z</updated>
<author>
<name>Anssi Kääriäinen</name>
<email>akaariai@gmail.com</email>
</author>
<published>2012-08-25T11:13:37Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=d407164c0499c234ec043f5720b3209311b2f4e9'/>
<id>urn:sha1:d407164c0499c234ec043f5720b3209311b2f4e9</id>
<content type='text'>
The added promotion logic is based on promoting any joins used in only
some of the childs of an OR clause unless the join existed before the
OR clause addition.
</content>
</entry>
<entry>
<title>Fixed #10790 -- Refactored sql.Query.setup_joins()</title>
<updated>2012-12-16T15:23:26Z</updated>
<author>
<name>Anssi Kääriäinen</name>
<email>akaariai@gmail.com</email>
</author>
<published>2012-08-25T13:33:07Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=69597e5bcc89aadafd1b76abf7efab30ee0b8b1a'/>
<id>urn:sha1:69597e5bcc89aadafd1b76abf7efab30ee0b8b1a</id>
<content type='text'>
This is a rather large refactoring. The "lookup traversal" code was
splitted out from the setup_joins. There is now names_to_path() method
which does the lookup traveling, the actual work of setup_joins() is
calling names_to_path() and then adding the joins found into the query.

As a side effect it was possible to remove the "process_extra"
functionality used by genric relations. This never worked for left
joins. Now the extra restriction is appended directly to the join
condition instead of the where clause.

To generate the extra condition we need to have the join field
available in the compiler. This has the side-effect that we need more
ugly code in Query.__getstate__ and __setstate__ as Field objects
aren't pickleable.

The join trimming code got a big change - now we trim all direct joins
and never trim reverse joins. This also fixes the problem in #10790
which was join trimming in null filter cases.
</content>
</entry>
<entry>
<title>Fixed #17886 -- Fixed join promotion in ORed nullable queries</title>
<updated>2012-08-21T18:23:57Z</updated>
<author>
<name>Anssi Kääriäinen</name>
<email>akaariai@gmail.com</email>
</author>
<published>2012-08-21T15:43:08Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=a193372753ad9d1d15ad5e2d6d06bbc07ca3f433'/>
<id>urn:sha1:a193372753ad9d1d15ad5e2d6d06bbc07ca3f433</id>
<content type='text'>
The ORM generated a query with INNER JOIN instead of LEFT OUTER JOIN
in a somewhat complicated case. The main issue was that there was a
chain of nullable FK -&gt; non-nullble FK, and the join promotion logic
didn't see the need to promote the non-nullable FK even if the
previous nullable FK was already promoted to LOUTER JOIN. This resulted
in a query like a LOUTER b INNER c, which incorrectly prunes results.
</content>
</entry>
<entry>
<title>[py3] Refactored __unicode__ to __str__.</title>
<updated>2012-08-12T12:44:40Z</updated>
<author>
<name>Aymeric Augustin</name>
<email>aymeric.augustin@m4x.org</email>
</author>
<published>2012-08-12T10:32:08Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=d4a0b27838c815af87698920cc4db7d2afd6f05b'/>
<id>urn:sha1:d4a0b27838c815af87698920cc4db7d2afd6f05b</id>
<content type='text'>
* Renamed the __unicode__ methods
* Applied the python_2_unicode_compatible decorator
* Removed the StrAndUnicode mix-in that is superseded by
  python_2_unicode_compatible
* Kept the __unicode__ methods in classes that specifically
  test it under Python 2
</content>
</entry>
<entry>
<title>[py3] Replaced unicode/str by six.text_type/bytes.</title>
<updated>2012-07-22T07:29:54Z</updated>
<author>
<name>Aymeric Augustin</name>
<email>aymeric.augustin@m4x.org</email>
</author>
<published>2012-07-20T12:48:51Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=bdca5ea345c548a82a80d198906818c9ccbef896'/>
<id>urn:sha1:bdca5ea345c548a82a80d198906818c9ccbef896</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fixed #18269 -- Applied unicode_literals for Python 3 compatibility.</title>
<updated>2012-06-07T16:08:47Z</updated>
<author>
<name>Claude Paroz</name>
<email>claude@2xlibre.net</email>
</author>
<published>2012-06-07T16:08:47Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=4a103086d5c67fa4fcc53c106c9fdf644c742dd8'/>
<id>urn:sha1:4a103086d5c67fa4fcc53c106c9fdf644c742dd8</id>
<content type='text'>
Thanks Vinay Sajip for the support of his django3 branch and
Jannis Leidel for the review.
</content>
</entry>
<entry>
<title>Fixed qs.order_by() join promotion for already existing joins</title>
<updated>2012-05-24T15:42:06Z</updated>
<author>
<name>Anssi Kääriäinen</name>
<email>akaariai@gmail.com</email>
</author>
<published>2012-05-23T20:25:23Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=8c72aa237918e31a525022f72b22cac75451af86'/>
<id>urn:sha1:8c72aa237918e31a525022f72b22cac75451af86</id>
<content type='text'>
When order_by causes new joins to be added to the query, the joins must
be LEFT OUTER joins for nullable relations, otherwise the order_by
could cause the results to be altered. This commit fixes the logic to
only promote new joins, previously all joins in the order_by lookup
path were promoted.

Thanks to Bruno Desthuilliers for spotting this corner case.
</content>
</entry>
</feed>
