Hannes Ljungberg
f3da09df0f
Fixed #31396 -- Added binary XOR operator to F expressions.
2020-03-25 10:16:30 +01:00
Rohit
486786c4c4
Fixed #31251 -- Disabled grouping by OuterRef() annotation.
2020-02-27 13:02:49 +01:00
Simon Charette
41ebe60728
Fixed #31312 -- Properly ordered temporal subtraction params on MySQL.
...
Regression in 9bcbcd599a
.
Thanks rick2ricks for the report.
2020-02-27 08:50:55 +01:00
Nick Pope
335c9c94ac
Simplified imports from django.db and django.contrib.gis.db.
2020-02-04 13:20:06 +01:00
Simon Charette
9bcbcd599a
Fixed #31133 -- Fixed crash when subtracting against a subquery annotation.
...
The subtract_temporals() database operation was not handling expressions
returning SQL params in mixed database types.
Regression in 3543129822
.
Thanks Reupen Shah for the report.
2020-01-03 10:35:08 +01:00
Mariusz Felisiak
45bcc6feac
Refs #31115 -- Added test for nested subquery that references related fields.
...
Thanks Dmitriy Gunchenko for the report and Simon Charette for the
analysis and tests.
Regression in 5a4d7285bd
.
Fixed in 5a4d7285bd
.
2019-12-23 12:17:56 +01:00
Mariusz Felisiak
8685e764ef
Fixed #30986 -- Fixed queryset crash when filtering against boolean RawSQL expressions on Oracle.
2019-11-18 08:50:09 +01:00
Min ho Kim
103a6f4307
Fixed some typos in comments and docs.
...
Thanks to Mads Jenson for review.
2019-10-02 15:50:46 +02:00
ElizabethU
54ea290e5b
Fixed #30651 -- Made __eq__() methods return NotImplemented for not implemented comparisons.
...
Changed __eq__ to return NotImplemented instead of False if compared to
an object of the same type, as is recommended by the Python data model
reference. Now these models can be compared to ANY (or other objects
with __eq__ overwritten) without returning False automatically.
2019-10-01 17:58:19 +02:00
Matthew Schinckel
4137fc2efc
Fixed #25367 -- Allowed boolean expressions in QuerySet.filter() and exclude().
...
This allows using expressions that have an output_field that is a
BooleanField to be used directly in a queryset filters, or in the
When() clauses of a Case() expression.
Thanks Josh Smeaton, Tim Graham, Simon Charette, Mariusz Felisiak, and
Adam Johnson for reviews.
Co-Authored-By: NyanKiyoshi <hello@vanille.bid>
2019-08-29 09:45:29 +02:00
Mariusz Felisiak
069bee7c12
Used skipUnlessDBFeature instead of checking vendor in test_filtering_on_annotate_that_uses_q.
2019-08-29 09:40:34 +02:00
Simon Charette
ee6e93ec87
Fixed #30628 -- Adjusted expression identity to differentiate bound fields.
...
Expressions referring to different bound fields should not be
considered equal.
Thanks Julien Enselme for the detailed report.
Regression in bc7e288ca9
.
2019-07-10 07:46:08 +02:00
Mariusz Felisiak
a9179ab032
Fixed typo in BasicExpressionsTests.test_object_update_fk() test.
2019-06-21 12:00:42 +02:00
can
567b9928a3
Fixed #29692 -- Fixed removing ordering parts for multiline RawSQL expressions.
2019-05-03 07:37:37 +02:00
Mariusz Felisiak
12b7956fc3
Refs #25507 -- Added tests for using QuerySet.count() with a RawSQL annotation.
...
Fixed in 3f32154f40
2019-04-19 11:40:04 +02:00
Mariusz Felisiak
2a431db0f5
Fixed #28621 -- Fixed crash of annotations with OuterRef.
2019-03-27 08:24:05 +01:00
Simon Charette
3f32154f40
Refs #30188 -- Avoided GROUP BY when aggregating over non-aggregates.
2019-03-23 10:11:41 -04:00
Simon Charette
d1e9c25162
Refs #30188 -- Prevented double annotation of subquery when aggregated over.
...
Thanks Can Sarıgöl for the suggested trimming approach.
2019-03-23 09:50:42 -04:00
Simon Charette
bdc07f176e
Fixed #30188 -- Fixed a crash when aggregating over a subquery annotation.
2019-03-23 09:48:31 -04:00
Simon Charette
9dc367dc10
Refs #30158 -- Added alias argument to Expression.get_group_by_cols().
2019-03-21 18:47:46 -04:00
Hasan Ramezani
741ce81a42
Fixed #29619 -- Added field names to some FieldErrors.
2019-02-14 18:58:08 -05:00
Simon Charette
9e5e5a657b
Fixed #30044 -- Raised a FieldError on inherited field update attempts.
2019-01-16 14:09:51 -05:00
Simon Charette
aa5d0a5a90
Removed unnecessary transaction wrapping in expressions test.
2019-01-16 13:23:55 -05:00
Nasir Hussain
f021c110d0
Fixed #30099 -- Fixed invalid SQL when filtering a Subquery by an aggregate.
2019-01-15 07:22:59 -05:00
Simon Charette
bc05547cd8
Fixed #28658 -- Added DISTINCT handling to the Aggregate class.
2019-01-09 17:52:36 -05:00
Simon Charette
84e7a9f4a7
Switched setUp() to setUpTestData() where possible in Django's tests.
2018-11-27 09:35:17 -05:00
Tim Graham
193c109327
Switched TestCase to SimpleTestCase where possible in Django's tests.
2018-11-27 08:58:44 -05:00
Simon Charette
bc7e288ca9
Fixed #29745 -- Based Expression equality on detailed initialization signature.
...
The old implementation considered objects initialized with an equivalent
signature different if some arguments were provided positionally instead of
as keyword arguments.
Refs #11964 , #26167 .
2018-10-02 19:15:20 -04:00
Mariusz Felisiak
7b159df942
Fixed expressions tests when run in reverse.
...
Regression in e7a0a5c8b2
.
2018-09-18 15:58:20 -04:00
Mariusz Felisiak
e7a0a5c8b2
Simplified expressions.tests.
2018-09-13 22:12:21 +02:00
Srinivas Reddy Thatiparthy
34d6bceec4
Fixed #29500 -- Fixed SQLite function crashes on null values.
...
Co-authored-by: Srinivas Reddy Thatiparthy <thatiparthysreenivas@gmail.com>
Co-authored-by: Nick Pope <nick.pope@flightdataservices.com>
2018-09-10 15:08:55 -04:00
Alexander Holmbäck
f315d0423a
Fixed #29727 -- Made nonexistent joins in F() raise FieldError.
...
Regression in 2162f0983d
.
2018-09-08 09:40:33 -04:00
Alexander Holmbäck
aa16ec5474
Moved test for nonexistent field in F() to BasicExpressionsTest.
2018-09-08 09:21:57 -04:00
Daniel Miller
60156750f6
Fixed #29330 -- Fixed crash when pickling BaseExpression.
...
Regression in cfff2af02b
.
2018-04-16 10:15:13 -04:00
Mariusz Felisiak
362813d628
Fixed hanging indentation in various code.
2018-03-16 10:54:34 +01:00
Simon Charette
277ed07209
Fixed #29195 -- Fixed Exists.output_field resolution on single-valued queries.
...
The Subquery class which Exists inherits from defaulted to using single-valued
querie's field if no output_field was explicitly specified on initialization
which was bypassing the Exists.output_field defined at the class level.
Moving Subquery's dynamic output_field resolution to _resolve_output_field
should make sure the fallback logic is only performed if required.
Regression in 08654a99bb
.
Thanks Oli Warner for the detailed report.
2018-03-08 13:30:41 -05:00
Matthew Schinckel
c412926a2e
Fixed #29142 -- Fixed crash when OuterRef is used with an operator.
2018-02-23 09:38:16 -05:00
Oliver Sauder
6f0b8c1c9e
Fixed #28442 -- Fixed crash with nested OuterRefs that reference AutoField.
2018-02-20 21:58:43 -05:00
Matthew Wilkes
2162f0983d
Fixed #24747 -- Allowed transforms in QuerySet.order_by() and distinct(*fields).
2018-02-10 19:08:55 -05:00
Raphael Gaschignard
bf26f66029
Fixed #29118 -- Fixed crash with QuerySet.order_by(Exists(...)).
2018-02-10 18:35:57 -05:00
priyanshsaxena
617d5f410f
Fixed #29066 -- Allowed negating query expressions.
2018-01-31 10:54:19 -05:00
Sergey Fedoseev
ae6fa914aa
Fixed #28926 -- Fixed loss of precision of big DurationField values on SQLite and MySQL.
2017-12-28 17:35:41 -05:00
Sergey Fedoseev
cf12257db2
Fixed #28863 -- Fixed filter on annotation that contains Q.
2017-12-01 21:48:49 -05:00
Mariusz Felisiak
81e357a7e1
Fixed #28689 -- Fixed unquoted table names in Subquery SQL when using OuterRef.
...
Regression in f48bc7c3db
.
2017-10-25 21:52:38 +02:00
Mads Jensen
81d5320db5
Added tests for Combinable's bitwise logical operation errors.
2017-10-09 11:49:19 -04:00
Tim Graham
a80903b711
Removed DatabaseFeatures.supports_microsecond_precision.
...
MySQL 5.5 (refs #28552 ) was the last database to use it.
2017-09-25 14:48:15 -04:00
Mads Jensen
d549b88050
Fixed #26608 -- Added support for window expressions (OVER clause).
...
Thanks Josh Smeaton, Mariusz Felisiak, Sergey Fedoseev, Simon Charettes,
Adam Chainz/Johnson and Tim Graham for comments and reviews and Jamie
Cockburn for initial patch.
2017-09-18 09:42:29 -04:00
Mads Jensen
1dafd8cb0b
Refs #24031 -- Added test for When.__repr__().
2017-09-15 06:13:38 -04:00
Tom
b78d100fa6
Fixed #27849 -- Added filtering support to aggregates.
2017-08-12 17:58:28 -04:00
Mads Jensen
a51c4de194
Used assertRaisesMessage() to test Django's error messages.
2017-07-29 19:07:23 -04:00
Mariusz Felisiak
28a02259cb
Fixed DatabaseFeatures.has_case_insensitive_like on MySQL and Oracle.
...
Incorrect since its introduction in 20bab2cf9d
.
2017-07-24 21:51:29 +02:00
Sergey Fedoseev
504ce3914f
Fixed #28394 -- Allowed setting BaseExpression.output_field (renamed from _output_field).
2017-07-14 21:56:01 -04:00
Tim Graham
f04495521a
Fixed #28199 -- Fixed Subquery generating unnecessary/invalid CAST.
...
Thanks Simon Charette for the fix.
2017-05-30 06:40:41 -04:00
Matthew Schinckel
f48bc7c3db
Fixed #27862 -- Fixed incorrectly quoted table aliases in Subquery SQL.
...
Add aliases from resolved querysets to the parent query's external
aliases to prevent those aliases from being quoted.
Thanks to Vasily Stepanov for the report and Tim Graham for the review.
2017-03-01 07:56:37 -05:00
Ian Foote
19b2dfd1bf
Refs #11964 , #26167 -- Made Expressions deconstructible.
2017-02-23 20:44:06 -05:00
Vytis Banaitis
4045fd56cb
Fixed #27856 -- Improved accuracy of date subtraction on PostgreSQL.
...
Accuracy was incorrect when dates differ by a month or more.
2017-02-21 12:06:16 -05:00
Vytis Banaitis
d5088f838d
Fixed #27828 -- Fixed a crash when subtracting Integer/DurationField from DateField on Oracle/PostgreSQL.
2017-02-16 11:46:32 -05:00
Claude Paroz
7b2f2e74ad
Refs #23919 -- Removed six.<various>_types usage
...
Thanks Tim Graham and Simon Charette for the reviews.
2017-01-18 20:18:46 +01:00
Claude Paroz
f3c43ad1fd
Refs #23919 -- Removed python_2_unicode_compatible decorator usage
2017-01-18 13:44:34 +01:00
Claude Paroz
d7b9aaa366
Refs #23919 -- Removed encoding preambles and future imports
2017-01-18 09:55:19 +01:00
Matthew Schinckel
236ebe94bf
Fixed #27149 -- Added Subquery and Exists database expressions.
...
Thanks Josh Smeaton for Oracle fixes.
2017-01-14 09:12:24 -05:00
anabelensc
1c12df4aa6
Fixed #25912 -- Added binary left/right shift operators to F expressions.
...
Thanks Mariusz Felisiak for review and MySQL advice.
2017-01-03 14:15:46 -05:00
Mariusz Felisiak
fd2f7e4767
Fixed #27681 -- Fixed binary &/| operators for negative values on MySQL.
2017-01-03 12:41:44 -05:00
Mariusz Felisiak
b059ddf066
Fixed #27561 -- Added Oracle support for binary "or" operator.
...
Removed DatabaseFeatures.supports_bitwise_or feature (unused, always True).
2016-12-02 16:59:39 -05:00
Mariusz Felisiak
b63d0c54b0
Fixed #24959 -- Fixed queries using negative timedeltas on MySQL and Oracle.
2016-11-23 09:10:47 -05:00
za
321e94fa41
Refs #27392 -- Removed "Tests that", "Ensures that", etc. from test docstrings.
2016-11-10 21:30:21 -05:00
Tim Graham
8119b679eb
Refs #27025 -- Fixed "invalid escape sequence" warnings in Python 3.6.
...
http://bugs.python.org/issue27364
2016-09-17 15:44:06 -04:00
François Freitag
631ef6b272
Made FieldError/FieldDoesNotExist messages uniform across Python versions.
...
Removed possible u'' prefixes on Python 2.
2016-09-17 09:29:14 -04:00
Mads Jensen
0c1f71635f
Fixed #27203 -- Replaced assertQuerysetEqual(..., lambda o: o) with assertSequenceEqual().
2016-09-13 10:07:37 -04:00
Adam Chainz
652bcc6f5f
Refs #25415 -- Fixed invalid models in the test suite.
2016-09-09 17:16:42 -04:00
Matthew Wilkes
4f138fe5a4
Fixed #22288 -- Fixed F() expressions with the __range lookup.
2016-08-19 13:40:56 -04:00
Ian Foote
39f35d4b9d
Fixed #25871 -- Added expressions support to QuerySet.values().
2016-08-18 16:05:15 -04:00
Josh Smeaton
2a4af0ea43
Fixed #25774 -- Refactor datetime expressions into public API
2016-05-18 20:14:58 +10:00
Tim Graham
92053acbb9
Fixed E128 flake8 warnings in tests/.
2016-04-08 10:12:33 -04:00
Tim Graham
1c8c0837c6
Sorted single letter imports per the latest version of isort.
2016-03-28 11:45:31 -04:00
Simon Charette
766afc22a1
Fixed #24793 -- Unified temporal difference support.
2016-02-26 12:25:12 -05:00
Simon Charette
31098e3288
Used setUpTestData for the timedelta expression tests.
2016-02-26 12:25:12 -05:00
Hasan
253adc2b8a
Refs #26022 -- Used context manager version of assertRaisesMessage in tests.
2016-01-29 13:03:39 -05:00
Hasan
3d0dcd7f5a
Refs #26022 -- Used context manager version of assertRaises in tests.
2016-01-29 12:32:18 -05:00
Antoine Catton
b971c1cd78
Fixed #25506 -- Allowed filtering over a RawSQL annotation.
...
Co-Authored-By: Gavin Wahl <gwahl@fusionbox.com>
2015-10-14 11:13:58 -07:00
Alex Hill
134ca4d438
Fixed #24509 -- Added Expression support to SQLInsertCompiler
2015-09-22 23:35:24 +10:00
Adam Chainz
3fe3887a2e
Fixed #25377 -- Changed Count queries to execute COUNT(*) instead of COUNT('*').
2015-09-14 13:41:35 -04:00
Flavio Curella
c2e70f0265
Fixed #21127 -- Started deprecation toward requiring on_delete for ForeignKey/OneToOneField
2015-07-27 18:28:13 -04:00
Michael Manfre
6cc2113204
Added comment to test_query_clone indicating lack of assert is intentional.
2015-06-05 00:51:49 -04:00
Josh Smeaton
02a2943e4c
Fixed #24485 -- Allowed combined expressions to set output_field
2015-03-22 17:36:55 +11:00
Josh Smeaton
88d798d71a
Refs #24485 -- Renamed some expression types
2015-03-17 08:40:18 -04:00
Josh Smeaton
ff2aa40192
Fixed #24486 -- Fixed error with datetime and DurationField arithmetic
2015-03-17 08:35:49 -04:00
Anssi Kääriäinen
fb146193c4
Fixed #24171 -- Fixed failure with complex aggregate query and expressions
...
The query used a construct of qs.annotate().values().aggregate() where
the first annotate used an F-object reference and the values() and
aggregate() calls referenced that F-object.
Also made sure the inner query's select clause is as simple as possible,
and made sure .values().distinct().aggreate() works correctly.
2015-03-09 07:49:23 -04:00
Tim Graham
0ed7d15563
Sorted imports with isort; refs #23860 .
2015-02-06 08:16:28 -05:00
Tim Graham
62df1834b8
Fixed expressions test on Python 3.5; refs #23763 .
2015-01-31 19:59:17 -05:00
Josh Smeaton
7171bf755b
Refs #14030 -- Added repr methods to all expressions
2015-01-28 10:59:30 +11:00
Michał Modzelewski
65246de7b1
Fixed #24031 -- Added CASE expressions to the ORM.
2015-01-12 18:15:34 -05:00
Josh Smeaton
8713ea7568
Fixed null handling in Value expression
2015-01-07 19:07:49 -05:00
Marc Tamlyn
57554442fe
Fixed #2443 -- Added DurationField.
...
A field for storing periods of time - modeled in Python by timedelta. It
is stored in the native interval data type on PostgreSQL and as a bigint
of microseconds on other backends.
Also includes significant changes to the internals of time related maths
in expressions, including the removal of DateModifierNode.
Thanks to Tim and Josh in particular for reviews.
2014-12-20 18:28:29 +00:00
Shabda Raaj
43041ee48c
Refs #18586 -- Refactored expressions tests.
2014-12-11 18:24:23 -05:00
Thomas Chaumeny
6b5d82749c
Fixed #16731 -- Made pattern lookups work properly with F() expressions
2014-11-28 12:50:42 +02:00
Simon Charette
68ef44c565
Removed references to the deprecated assertRaisesRegexp method.
2014-11-16 02:12:36 +01:00
Josh Smeaton
f59fd15c49
Fixed #14030 -- Allowed annotations to accept all expressions
2014-11-15 14:00:43 +00:00
Veres Lajos
a71a2ea756
Fixed typos using https://github.com/vlajos/misspell_fixer
2014-11-03 20:59:30 -05:00
Berker Peksag
f7969b0920
Fixed #23620 -- Used more specific assertions in the Django test suite.
2014-11-03 11:56:37 -05:00