Commit Graph

999 Commits

Author SHA1 Message Date
Anssi Kääriäinen bac187c0d8 [1.5.x] Fixed prefetch_related + pickle regressions
There were a couple of regressions related to field pickling. The
regressions were introduced by QuerySet._known_related_objects caching.

The regressions aren't present in master, the fix was likely in
f403653cf1.

Fixed #20157, fixed #20257. Also made QuerySets with model=None
picklable.
2013-05-21 11:45:24 +03:00
Anssi Kääriäinen 0eddedf7db [1.5.x] Fixed #20278 -- ensured .get() exceptions do not recurse infinitely
A regression caused by d5b93d3281 made .get() error
reporting recurse infinitely on certain rare conditions. Fixed this by
not trying to print the given lookup kwargs.

Backpatch of 266c0bb23e
2013-05-20 19:05:43 +03:00
Simon Charette d04e8f8c78 [1.5.x] Fixed #20207 -- Handle ManyToManyField with a unicode name correctly.
Backport of 216580e034.
2013-04-05 15:21:59 -04:00
Gavin Wahl d1b7bd030b [1.5.x] Fixed spelling errors
Backport of ec04fd1344 from master
2013-03-29 08:00:24 -04:00
Anssi Kääriäinen 207117ae73 [1.5.x] Fixed #20091 -- Oracle null promotion for empty strings
Backpatch of e17fa9e877
2013-03-26 15:05:37 +02:00
Marc Tamlyn dd897e4eeb [1.5.x] Fixed #20094 - Be more careful when checking for Iterator
Python 2.6 has some different behaviour when checking
isinstance(foo, collections.Iterator).
Backport of 829dc3c5 from master.
2013-03-22 17:45:41 +01:00
Claude Paroz b91067d9aa [1.5.x] Revert "Fixed #19895 -- Made second iteration over invalid queryset raise an exception too"
This reverts commit d1e87eb3ba.
This commit was the cause of a memory leak. See ticket for more details.
Thanks Anssi Kääriäinen for identifying the source of the bug.
2013-03-20 10:43:14 +01:00
Aymeric Augustin 702d39921c [1.5.x] Fixed #19634 -- Added proper __hash__ methods.
Classes overriding __eq__ need a __hash__ such that equal objects have
the same hash.

Thanks akaariai for the report and regebro for the patch.

Backport of e76147a from master.
2013-02-25 23:37:23 +01:00
Simon Charette f8b41da431 [1.5.x] Fixed #19688 -- Allow model subclassing with a custom metaclass using six.with_metaclass
Backport of 6b03179e12 from master.

Although we're post RC 2, I'm backporting this because it's arguably a
major bug in a new feauture that will prevent several well-known
third-party apps from being ported to Python 3.
2013-02-24 17:45:48 +01:00
Grzegorz Nosek d1e87eb3ba [1.5.x] Fixed #19895 -- Made second iteration over invalid queryset raise an exception too
When iteration over a queryset raised an exception, the result cache
remained initialized with an empty list, so subsequent iterations returned
an empty list instead of raising an exception

Backport of 2cd0edaa47 from master.
2013-02-23 14:39:05 -06:00
Anssi Kääriäinen 8a99d718f7 [1.5.x] Fixed empty strings + to_field regression on Oracle
Querying the reverse side of nullable to_field relation, where both
sides can contain null values resulted in incorrect results. The reason
was not detecting '' as NULL.

Refs #17541, backpatch of 09fcb70c80.
2013-02-23 00:09:48 +02:00
Anssi Kääriäinen 8ad436636f [1.5.x] Fixed #19672 -- Error in negated Q() filtering
There was a variable overwrite error in negated join filtering. This
happened when add_filter() was adding the IS NULL condition to the
WHERE clause.

This is not a backport from master as there have been some other
refactorings which made this patch irrelevant.

The patch is from Ian Kelly.
2013-02-20 21:57:39 +02:00
Anssi Kääriäinen 77f6eb2a60 [1.5.x] Made custom m2m fields without through easier to use
The change in f105fbe52b made through=None
m2m fields fail in cases where they worked before. It isn't possible to
create such fields using public APIs. The fix is trivial, so it seems
worth adding it.

This is not a backport from master. Master has gotten enough other
changes to related fields internal API that this fix alone isn't enough
to do any good.
2013-02-10 21:54:48 +02:00
Anssi Kääriäinen b18ad807e0 [1.5.x] Fixed #19720 -- Oracle ordering related delete regression
When a query had a complex where condition (a condition targeting more
than the base table) a subquery was used for deletion. However, the
query had default ordering from the model's meta and Oracle doesn't
work with ordered subqueries.

The regression was caused by fast-path deletion code introduced in
1cd6e04cd4 for fixing #18676.

Thanks to Dylan Klomparens for the report.

Backpatch of 8ef3235034
2013-02-10 19:58:22 +02:00
Tim Graham 5da6ce11ed [1.5.x] Fixed typos in docs and comments
Backport of ee26797cff from master
2013-01-29 10:58:24 -07:00
Anssi Kääriäinen f4132140f5 [1.5.x] Fixed #19652 -- Fixed .none() regression in related fields
The regression was caused by using .none() when querying for related
models, and the origin field's value was None. This resulted in missing
custom related manager subclass as .none() returns plain QuerySet.

This isn't backport from master, in master .none() correctly preserves
the queryset's class.

Patch provided by Simon Charette, with some minor polish by committer.
2013-01-23 08:26:34 +02:00
Simon Charette 78739faedb [1.5.x] Fixed #19576 -- Use `six.with_metaclass` uniformously accross code base.
Backport of f58efd07f from master.
2013-01-08 20:16:14 +01:00
Anssi Kääriäinen 9d6d0de7c1 [1.5.x] Fixed #17541 -- Fixed non-saved/nullable fk querying
Backpatch of 55da775ce1
2013-01-08 21:03:53 +02:00
Claude Paroz a893ee3315 Fixed #19426 -- Adapted EmptyQuerySet.distinct signature
1.5-only change, as EmptyQuerySet will be refactored in 1.6.
Thanks hongshuning@gmail.com for the patch.
2013-01-03 18:03:51 +01:00
Aymeric Augustin 056ace0f39 [1.5.x] Fixed #19547 -- Caching of related instances.
When &'ing or |'ing querysets, wrong values could be cached, and crashes
could happen.

Thanks Marc Tamlyn for figuring out the problem and writing the patch.

Backport of 07fbc6a.
2013-01-02 22:22:14 +01:00
Aymeric Augustin 5097d3c5fa [1.5.x] Fix #19524 -- Incorrect caching of parents of unsaved model instances.
Thanks qcwxezdas for the report. Refs #13839.

Backport of e9c24be.
2012-12-28 23:35:08 +01:00
Aymeric Augustin 3cb87ec605 [1.5.x] Fixed #19525 -- Reverted dcd4383107 and 05d333ba3b.
Refs #9893, #18515.

Thanks Russell for the report.

Backport of db278c3 from master.
2012-12-27 09:43:41 +01:00
Anssi Kääriäinen a0155f3534 [1.5.x] Refactored proxy model skipping in get_default_columns()
The refactoring allows custom subclasses to use different default
columns than the base model.
2012-12-21 20:56:04 +02:00
Russell Keith-Magee b7607003a5 [1.5.x] Fixed #19401 -- Ensure that swappable model references are case insensitive.
This is necessary because get_model() checks are case insensitive, and if the swapable check isn't, the
swappable logic gets tied up in knots with models that are partially swapped out.

Thanks to chris@cogdon.org for the report and extensive analysis, and Preston for his work on the draft patch.

Backport of c04c03d from trunk.
2012-12-20 16:14:10 +08:00
Claude Paroz 4214a22e06 [1.5.x] Fixed #19357 -- Allow non-ASCII chars in filesystem paths
Thanks kujiu for the report and Aymeric Augustin for the review.
Backport of c91667338 from master.
2012-12-08 11:16:03 +01:00
Anssi Kääriäinen e3ea668b47 [1.5.x] Fixed #14694 again -- Made defer() works with reverse relations
Master and stable/1.5.x had diverged in models/query.py.
2012-11-28 23:56:03 +02:00
Tai Lee a21e8dee76 [1.5.x] Fixed #14694 -- Made ``defer()`` work with reverse relations
Reverse o2o fields are now usable with defer.

Backpatch of [6ebf115206]
2012-11-28 18:25:34 +02:00
Anssi Kääriäinen 4467d86b61 [1.5.x] Removed duplicate opts.pk_index() method
Backpatch of [d37483c533]
2012-11-27 21:59:03 +02:00
Aymeric Augustin 71e5ad248e [1.5.x] Fixed #19362 -- Detected invalid use of @python_2_unicode_compatible.
Thanks m3wolf for the report and akaariai for reproducing the problem.

Backport of 2ea80b9.
2012-11-27 09:55:26 +01:00
Russell Keith-Magee 3fd8458fb3 [1.5.x] Fixed #19806 -- Ensure that content types and permissions aren't created for swapped models.
Thanks to rizumu for the report.

Backport of c8985a8a73.
2012-11-24 14:26:50 +08:00
Anssi Kääriäinen 90c7aa0740 [1.5.x] Fixed #18375 -- Removed dict-ordering dependency for F-expressions
F() expressions reuse joins like any lookup in a .filter() call -
reuse multijoins generated in the same .filter() call else generate
new joins. Also, lookups can now reuse joins generated by F().

This change is backwards incompatible, but it is required to prevent
dict randomization from generating different queries depending on
.filter() kwarg ordering. The new way is also more consistent in how
joins are reused.

Backpatch of 90b86291d0
2012-11-23 20:07:50 +02:00
Anssi Kääriäinen 33f1181c31 [1.5.x] Fixed #19058 -- Fixed Oracle GIS crash
The problem is the same as in #10888 which was reintroduced when
bulk_insert was added. Thanks to Jani Tiainen for report, patch and
also testing the final patch on Oracle GIS.

Backpatch of 92d7f541da
2012-11-15 16:11:22 +02:00
Anssi Kääriäinen af044d86b8 Fixed select_related performance regressions
The regression was caused by select_related fix for Oracle, commit
c159d9cec0.
2012-11-13 23:02:08 +02:00
Anssi Kääriäinen fe21c233d4 Removed use of SortedDict for query.alias_refcount
This will have a smallish impact on performance. Refs #19276.
2012-11-13 23:01:34 +02:00
Anssi Kääriäinen 908226cf1a [1.5.x] Fixed #17144 -- MySQL again groups by PK only
Thanks to Christian Oudard for the report and tests.

Backpatch of [cafb266954]

Conflicts:

	django/db/models/sql/compiler.py
2012-11-08 01:10:24 +02:00
Alex Gaynor 69a0c91c90 [1.5.x]Merge pull request #494 from mrj0/model_split
model_split: Fixed #19236 - fixed error for abstract models with a split method

Backport of 8d3f932f18
2012-11-04 14:21:49 -08:00
Alex Gaynor 6f716e9e5f [1.5.x] Fixed #5805 -- it is now possible to specify multi-column indexes. Thanks to jgelens for the original patch. Backport of 4285571c5a. 2012-11-04 10:26:59 -08:00
Aymeric Augustin d7688a010a [1.5.x] Fixed #18963 -- Used a subclass-friendly pattern
for Python 2 object model compatibility methods.

Backport of fc10418 from master.
2012-11-03 22:08:05 +01:00
Preston Holmes 0131da0622 [1.5.x] Deprecated depth kwarg on select_related.
This is the start of a deprecation path for the depth kwarg on
select_related. Removing this will allow us to update select_related so
it chains properly and have an API similar to prefetch_related.

Thanks to Marc Tamlyn for spearheading and initial patch.

refs #16855
2012-11-02 22:03:55 -07:00
Anssi Kääriäinen f105fbe52b [1.5.x] Fixed #18823 -- Ensured m2m.clear() works when using through+to_field
There was a potential data-loss issue involved -- when clearing
instance's m2m assignments it was possible some other instance's
m2m data was deleted instead.

This commit also improved None handling for to_field cases.

Backpatch of 611c4d6f1c
2012-10-28 17:34:14 +02:00
Anssi Kääriäinen fa1083fb0c [1.5.x] Fixed Oracle failure caused by None converted to '' in select_related case
Backpatch of c159d9cec0
2012-10-27 19:25:14 +03:00
Luke Plant 142f69eb8c [1.5.x] Fixed #15040 - Boolean fields return 0 and 1 when loaded through select_related
Thanks to homm for the report and ramiro for the patch.

Backport of f3a2bcdee9 from master
2012-10-26 00:34:47 +01:00
Anssi Kääriäinen bd6d9ea87c Fixed regression caused by #19102 2012-10-25 19:13:10 +03:00
Anssi Kääriäinen 7de439f32d Fixed #19187 -- Raise consistent error from qs.values().delete() 2012-10-25 17:16:56 +03:00
Anssi Kääriäinen 11b8712cc7 Added docstring to DeleteQuery.delete_qs() 2012-10-25 17:16:56 +03:00
Anssi Kääriäinen f64a5ef404 Fixed #19102 -- Fixed fast-path delete for modified SELECT clause cases
There was a bug introduced in #18676 which caused fast-path deletes
implemented as "DELETE WHERE pk IN <subquery>" to fail if the SELECT
clause contained additional stuff (for example extra() and annotate()).

Thanks to Trac alias pressureman for spotting this regression.
2012-10-25 17:16:44 +03:00
Jan Bednařík b87e2f46c8 Fixed #19151 -- Added missing methods to EmptyQuerySet.
Added values() and values_list() methods to EmptyQuerySet.
2012-10-21 00:19:38 +02:00
Anssi Kääriäinen b625e8272b Moved F() '&' and '|' to .bitand() and .bitor()
Done for consistency with Q() expressions and QuerySet combining. This
will allow usage of '&' and '|' as boolean logical operators in the
future. Refs #16211.
2012-10-10 01:15:29 +03:00
Anssi Kääriäinen a8b1861fc4 Revert "Fixed #16211 -- Added comparison and negation ops to F() expressions"
This reverts commit 28abf5f0eb.

Conflicts:

	docs/releases/1.5.txt
2012-10-10 01:15:29 +03:00
Michael Manfre c2150d4d2c Fixed #19096 -- Made can_return_id_from_insert more extendable
RETURNING is an extension of the SQL standard, which is not implemented
the same by all databases. Allow DatabaseOperations.return_insert_id to
return a None to allow for other 3rd party backends with a different
implementation.
2012-10-10 01:00:58 +03:00