Simon Charette
5a4d7285bd
Fixed #31094 -- Included columns referenced by subqueries in GROUP BY on aggregations.
...
Thanks Johannes Hoppe for the report.
Regression in fb3f034f1c
.
Co-authored-by: Mariusz Felisiak <felisiak.mariusz@gmail.com>
2019-12-19 10:04:56 +01:00
Baptiste Mispelon
09341856ed
Used Signature API instead of deprecated inspect.getcallargs().
...
inspect.getcallargs() was deprecated in Python 3.5 and the Signature
API (PEP 362) has better support for decorated functions (by default,
it follows the __wrapped__ attribute set by functools.wraps for
example).
2019-12-10 09:36:34 +01:00
Alex Aktsipetrov
723fc7fcf6
Made Query.check_filterable() use bool by default instead of str.
2019-12-06 13:52:36 +01:00
Alex Aktsipetrov
bf12273db4
Fixed #31060 -- Reallowed window expressions to be used in conditions outside of queryset filters.
...
Regression in 4edad1ddf6
.
Thanks utapyngo for the report.
2019-12-06 13:52:16 +01:00
Simon Charette
f97a6123c0
Refs #25367 -- Made Query.build_filter() raise TypeError on non-conditional expressions.
2019-11-21 11:56:35 +01:00
Simon Charette
e9a0e1d4f6
Fixed #30484 -- Added conditional expressions support to CheckConstraint.
2019-11-21 11:56:35 +01:00
Simon Charette
37e6c5b79b
Refs #25367 -- Moved conditional expression wrapping to the Exact lookup.
2019-11-21 11:56:35 +01:00
Simon Charette
306b687520
Refs #11964 -- Removed SimpleCol in favor of Query(alias_cols).
...
This prevent having to pass simple_col through multiple function calls
by defining whether or not references should be resolved with aliases
at the Query level.
2019-11-21 11:56:35 +01:00
George Marshall
8be79984dc
Fixed #30971 -- Prevented Query.resolve_lookup_value() from coercing list values to tuples.
...
Regression in 8a281aa7fe
.
2019-11-13 08:27:26 +01:00
Simon Charette
37f8f29377
Fixed #30796 -- Prevented select_related() from mutating a queryset on chaining.
...
Thanks Darren Maki for the report.
2019-09-24 09:17:45 +02:00
Simon Charette
13a8884a08
Fixed #30739 -- Fixed exclusion of multi-valued lookup against outer rhs.
...
OuterRef right hand sides have to be nested, just like F rhs have to,
during the subquery pushdown split_exclude performs to ensure they are
resolved against the outer query aliases.
2019-09-02 10:52:36 +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
Andrew Brown
8a281aa7fe
Fixed #30687 -- Fixed using of OuterRef() expressions in distance lookups.
2019-08-16 06:50:33 +02:00
aaktsipetrov
4edad1ddf6
Fixed #30668 -- Made QuerySet.filter() raise NotSupportedError if any of source expressions is not filterable.
2019-08-02 15:06:00 +02:00
Mariusz Felisiak
806ba19bbf
Added Query.is_sliced property.
...
Previously, we used Query.can_filter() mainly to check if a query is
sliced what was confusing.
2019-07-25 20:45:55 +02:00
can
f03b7bd114
Fixed #28408 -- Added error message when updating with annotated expressions on joined fields.
...
Co-Authored-By: Simon Charette <charette.s@gmail.com>
2019-06-28 07:55:32 +02:00
can
2cbd3967e0
Fixed #29834 -- Fixed column mismatch crash with QuerySet.values()/values_list() and order_by() on combined querysets.
2019-06-19 12:11:28 +02:00
Rob
6b736dd074
Fixed #30349 -- Fixed QuerySet.exclude() on FilteredRelation.
...
Using annotated FilteredRelations raised a FieldError when coupled with
exclude(). This is due to not passing filtered relation fields to the
subquery created in split_exclude(). We fixed this issue by passing the
filtered relation data to the newly created subquery.
Secondly, in the case where an INNER JOIN is used in the excluded
subquery, the ORM would trim the filtered relation INNER JOIN in attempt
to simplify the query. This will also remove the ON clause filters
generated by the FilteredRelation. We added logic to not trim the INNER
JOIN if it is from FilteredRelation.
2019-05-07 14:47:50 +02:00
can
719b746620
Fixed #30412 -- Fixed crash when adding check constraints with OR'ed condition on Oracle and SQLite.
2019-04-30 12:32:27 +02:00
Simon Charette
0cb4062482
Refs #23758 -- Used RecursionError instead of RuntimeError to raise nested subquery errors.
...
RecursionError was introduced in Python 3.5 and subclasses RuntimeError.
2019-04-15 15:20:41 +02:00
Simon Charette
c0969ee227
Refs #27149 -- Based recursive nested subquery detection on sys.getrecursionlimit().
...
This makes sure the test_avoid_infinite_loop_on_too_many_subqueries test
doesn't fail on systems with a non-default recursion limit.
2019-04-15 15:20:41 +02:00
Simon Charette
1ca825e4dc
Fixed #30246 -- Reused annotation aliases references in aggregation filters.
...
Thanks Jan Baryła for the detailed report and the reduced test case.
2019-03-23 10:11:45 -04: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
f19a4945e1
Fixed #21703 -- Fixed a crash when excluding a related field with a F().
2019-03-23 09:48:28 -04:00
Simon Charette
5935a9aead
Removed obsolete Lookup hook to prepare rhs expressions.
...
After 3a505c70e7
, all _prepare() methods
return self.
2019-03-21 20:54:21 -04:00
Simon Charette
3a505c70e7
Refs #27149 , #29542 -- Simplified subquery parentheses wrapping logic.
2019-03-21 20:42:26 -04:00
Simon Charette
3543129822
Refs #27149 -- Moved subquery expression resolving to Query.
...
This makes Subquery a thin wrapper over Query and makes sure it respects
the Expression source expression API by accepting the same number of
expressions as it returns. Refs #30188 .
It also makes OuterRef usable in Query without Subquery wrapping. This
should allow Query's internals to more easily perform subquery push downs
during split_exclude(). Refs #21703 .
2019-03-21 20:36: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
Dan Davis
2bd8df243a
Fixed #30184 -- Removed ellipsis characters from shell output strings.
...
Partially reverted 50b8493581
(refs #29654 )
to avoid a crash when the user shell doesn't support non-ASCII characters.
2019-02-13 13:59:44 -05:00
Nick Pope
24b82cd201
Fixed #30159 -- Removed unneeded use of OrderedDict.
...
Dicts preserve order since Python 3.6.
2019-02-06 13:48:39 -05:00
Simon Charette
9e5e5a657b
Fixed #30044 -- Raised a FieldError on inherited field update attempts.
2019-01-16 14:09:51 -05:00
Mariusz Felisiak
d5f4ce9849
Fixed #29949 -- Refactored db introspection identifier converters.
...
Removed DatabaseIntrospection.table_name_converter()/column_name_converter()
and use instead DatabaseIntrospection.identifier_converter().
Removed DatabaseFeatures.uppercases_column_names.
Thanks Tim Graham for the initial patch and review and Simon Charette
for the review.
2018-11-21 09:06:50 +01:00
Jon Dufresne
2ba588e773
Refs #27795 -- Removed force_text() usage in db/models/sql/query.py.
2018-10-08 14:47:01 -04:00
Abhinav Patil
bf01994a5c
Fixed #29804 -- Added 'did you mean' suggestions for unsupported lookup error.
2018-10-01 19:03:10 -04:00
Sergey Fedoseev
8ef8bc0f64
Refs #28909 -- Simplifed code using unpacking generalizations.
2018-09-28 09:57:12 -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
Claude Paroz
50b8493581
Refs #29654 -- Replaced three dots with ellipsis character in output strings.
2018-08-22 09:13:58 -04:00
Mariusz Felisiak
a73cf8110e
Removed duplicate words in various comments.
2018-07-18 11:54:15 -04:00
Ian Foote
952f05a6db
Fixed #11964 -- Added support for database check constraints.
2018-07-10 15:32:33 -04:00
Mariusz Felisiak
0e64e046a4
Fixed #29530 -- Fixed aliases ordering when chaining annotate() and filter().
2018-07-02 21:09:29 +02:00
Tom
c1c163b427
Fixed #28574 -- Added QuerySet.explain().
2018-04-19 10:52:19 -04:00
Dmitry Dygalo
c979c0a2b8
Fixed #25718 -- Made a JSONField lookup value of None match keys that have a null value.
2018-04-04 10:53:46 -04:00
Matthew Wilkes
2162f0983d
Fixed #24747 -- Allowed transforms in QuerySet.order_by() and distinct(*fields).
2018-02-10 19:08:55 -05:00
Raymond Hettinger
aba9763b51
Refs #28814 -- Imported from collections.abc to fix Python 3.7 deprecation warnings.
...
https://bugs.python.org/issue25988
2018-02-05 11:42:47 -05:00
Mariusz Felisiak
385e6fb352
Removed Query.split_exclude()'s unused prefix argument.
...
Unused since b4492a8ca4
.
2018-01-12 19:06:15 -05:00
Дилян Палаузов
a38ae914d8
Fixed #28996 -- Simplified some boolean constructs and removed trivial continue statements.
2018-01-12 12:44:50 -05:00
Дилян Палаузов
d7b2aa24f7
Fixed #28982 -- Simplified code with and/or.
2018-01-03 20:12:23 -05:00
Robin Ramael
fbf647287e
Fixed #28811 -- Fixed crash when combining regular and group by annotations.
2018-01-03 08:24:16 -05:00
Sergey Fedoseev
10bfa876be
Refs #27985 -- Reallowed using __exact=None as an alias for __isnull=True if a custom lookup class with lookup_name != None is registered as the exact lookup.
...
Regression in 58da81a5a3
and prerequisite
for refs #28896 .
2017-12-12 17:11:58 -10:00
Tim Graham
a862af3839
Fixed #28893 -- Removed unnecessary dict.items() calls.
2017-12-06 17:17:59 -05:00
Дилян Палаузов
d2afa5eb23
Fixed #28860 -- Removed unnecessary len() calls.
2017-12-04 10:35:23 -05:00
Дилян Палаузов
23bf4ad87f
Fixed #28795 -- Removed 'not in' checks and used dict.setdefault().
2017-11-14 10:52:52 -05:00
Дилян Палаузов
c69e4bc691
Fixed #28769 -- Replaced 'x if x else y' with 'x or y'.
2017-11-07 09:08:46 -05:00
Tim Graham
1b73ccc4bf
Fixed #28497 -- Restored the ability to use sliced QuerySets with __exact.
...
Regression in ec50937bcb
.
Thanks Simon Charette for review.
2017-10-16 13:56:38 -04:00
Nicolas Delaby
01d440fa1e
Fixed #27332 -- Added FilteredRelation API for conditional join (ON clause) support.
...
Thanks Anssi Kääriäinen for contributing to the patch.
2017-09-22 11:53:17 -04:00
Nicolas Delaby
a30ef353e2
Removed unused list in Query.resolve_lookup_value().
...
Unneeded since its introduction in 4f138fe5a4
.
2017-09-20 09:50:14 -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
Tim Graham
6e4c6281db
Reverted "Fixed #27818 -- Replaced try/except/pass with contextlib.suppress()."
...
This reverts commit 550cb3a365
because try/except performs better.
2017-09-07 08:16:21 -04:00
Mariusz Felisiak
fe0184b412
Updated EmpytResultSet import not to use the alias.
2017-09-03 11:06:06 -04:00
Jeremy Kerr
84b7cb7df0
Fixed #28549 -- Fixed QuerySet.defer() with super and subclass fields.
...
Previously, deferring fields in different classes didn't omit the
superclass' deferred field.
Thanks Simon Charette for the suggested fix.
2017-08-31 09:35:05 -04:00
Sergey Fedoseev
41640760df
Simplified generation of result in Query.get_aggregation().
2017-08-15 09:59:31 -04:00
Sergey Fedoseev
6141040813
Avoided creation of temporary set in Query.append_annotation_mask().
2017-08-15 09:43:47 -04:00
Sergey Fedoseev
0ec134e340
Simplified calculation of used joins in Query.build_filter().
2017-08-11 10:46:11 -04:00
Sergey Fedoseev
7fa92daa99
Removed outdated comment in Query.build_filter().
2017-08-11 09:19:19 -04:00
Sergey Fedoseev
ca46f4688c
Refs #28459 -- Improved performance of SQLCompiler.results_iter().
2017-08-07 17:06:15 -04:00
Matthew Wilkes
32d1bf2bdb
Fixed #28454 -- Simplifed use of Query.setup_joins() by returning a named tuple.
2017-08-01 14:25:54 -04:00
Sergey Fedoseev
58da81a5a3
Fixed #27985 -- Fixed query for __exact=value when get_prep_value() converts value to None.
...
Also fixed crash of .filter(field__transform=None).
2017-07-31 15:34:07 -04:00
Anssi Kääriäinen
6155bc4a51
Refs #20880 -- Removed non-cloning logic from Query.clone().
2017-07-31 15:31:29 -04:00
Sergey Fedoseev
0baea920c8
Fixed #28453 -- Made __exact=None lookup use transforms.
2017-07-31 13:31:04 -04:00
Sergey Fedoseev
aadd3aeb2b
Avoided creating temporary lists for obtaining the first item.
2017-07-31 11:02:23 -04:00
Sergey Fedoseev
38988f289f
Avoided creation of temporary sets.
2017-07-29 10:16:43 -04:00
Tim Graham
487362fa8f
Fixed #28370 -- Deprecated the context arg of Field.from_db_value() and Expression.convert_value().
...
Unused since a0d166306f
.
2017-07-20 16:30:08 -04:00
Florian Apolloner
adab280cef
Fixed #28399 -- Fixed QuerySet.count() for union(), difference(), and intersection() queries.
2017-07-15 08:20:12 -04:00
Tim Graham
23c529a774
Removed unused Query.clone() memo kwarg.
...
Unused since 23ca3a0194
.
2017-07-07 09:29:58 -04:00
Ran Benita
b9f7dce84b
Fixed #28010 -- Added FOR UPDATE OF support to QuerySet.select_for_update().
2017-06-29 16:00:15 -04:00
Anssi Kääriäinen
f7f5edd50d
Removed obsolete Query.tables attribute.
...
Obsolete since Query.alias_map became an OrderedDict (refs #26522 ).
2017-06-29 11:09:11 -04:00
Tim Graham
7acbe89cc2
Refs #23853 -- Updated sql.query.Query.join() docstring.
...
Follow up to ab89414f40
.
2017-06-13 14:16:52 -04:00
Claude Paroz
af69f14e7b
Removed unused sql.Query.query_terms
...
Unused since 5008a4db44
.
2017-06-08 13:11:51 -04:00
Jon Dufresne
2c69824e5a
Refs #23968 -- Removed unnecessary lists, generators, and tuple calls.
2017-06-01 19:08:59 -04:00
Jon Dufresne
21046e7773
Fixed #28249 -- Removed unnecessary dict.keys() calls.
...
iter(dict) is equivalent to iter(dict.keys()).
2017-05-27 19:08:46 -04:00
Simon Charette
9ae4362bec
Refs #16187 -- Stopped compiling query compilers during lookup rhs processing.
...
Lookup right hand side processing was compiling query compilers which happened
to work by chance as SQLCompiler defines a as_sql() method with two optional
parameters albeit it doesn't expect the same type of arguments.
2017-05-01 00:41:21 -04:00
Simon Charette
eb4724a063
Reverted "Refs #20939 -- Moved subquery ordering clearing optimization to the __in lookup."
...
This reverts commit e62ea0bb9c
since it
broke multi-column __in lookups and _meta.order_wrt on Oracle.
2017-04-28 09:30:35 -04:00
Simon Charette
e62ea0bb9c
Refs #20939 -- Moved subquery ordering clearing optimization to the __in lookup.
...
Queries could potentially be resolved in cases where ordering matter.
2017-04-27 16:58:08 -04:00
Jon Dufresne
7be94e0335
Replaced set |= operator with update() to avoid temporary set.
2017-04-27 08:16:19 -04:00
Simon Charette
c9159a082e
Refs #20939 -- Removed the Query._prepare_as_filter_value() hack.
2017-04-25 23:43:33 -04:00
Simon Charette
ec50937bcb
Refs #20939 -- Removed the Query._forced_pk hack.
2017-04-25 23:43:33 -04:00
Simon Charette
8ef35468b6
Fixed #28101 -- Fixed a regression with nested __in subquery lookups and to_field.
...
Thanks Kristian Klette for the report and Tim for the help.
2017-04-23 00:21:27 -04:00
Mads Jensen
19b8ca5824
Removed unused connector parameter of Query.build_filter().
...
Unused since 6fe2b001db
.
2017-03-18 09:04:56 -04:00
Mads Jensen
e45633086c
Removed unused rest_of_lookups parameter of Query.try_transform().
...
Unused since 534aaf56f4
.
2017-03-18 09:00:59 -04:00
Adam Johnson
af121b08e8
Refs #27624 -- Made many attributes of Query immutable.
2017-03-08 09:25:44 -05:00
Bo Marchman
9bbb6e2d25
Fixed #26522 -- Fixed a nondeterministic AssertionError in QuerySet combining.
...
Thanks Andrew Brown for the test case.
2017-03-06 13:40:17 -05:00
Anton Samarchyan
60e52a047e
Refs #27656 -- Updated django.db docstring verbs according to PEP 257.
2017-02-28 09:17:27 -05:00
François Freitag
e124d2da94
Fixed #26551 -- Fixed negated Q() queries that span relations.
...
Prevented queries from reusing trimmed joins.
2017-02-09 11:20:33 -05:00
Lex Berezhny
ac5f886c56
Fixed #27800 -- Fixed QuerySet.annotate(Length(...)).distinct() crash.
2017-01-31 18:45:55 -05:00
Simon Charette
cecc079168
Refs #23919 -- Stopped inheriting from object to define new style classes.
2017-01-19 08:39:46 +01:00
Claude Paroz
2b281cc35e
Refs #23919 -- Removed most of remaining six usage
...
Thanks Tim Graham for the review.
2017-01-18 21:33:28 +01:00
Tim Graham
bfe0d54514
Refs #26230 -- Removed support for model name query lookups when using Meta.default_related_name.
...
Per deprecation timeline.
2017-01-17 20:52:03 -05:00
Josh Smeaton
1df89a60c5
Fixed #25307 -- Fixed QuerySet.annotate() crash with conditional expressions.
...
Thanks Travis Newport for the tests and Josh Smeaton for contributing
to the patch.
2017-01-16 10:03:15 -05:00