| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
While deferring many-to-many and GFK has no effect, the previous
implementation of QuerySet.defer() ignore them instead of crashing.
Regression in b3db6c8dcb5145f7d45eff517bcd96460475c879.
Thanks Paco Martínez for the report.
|
|
|
|
| |
self-referential subqueries if supported.
|
|
|
|
| |
It was a copy of sql.Query._add_q that avoided JOIN updates.
|
|
|
|
|
| |
It's unused now that the specialized FilteredRelation.as_sql logic is
no more.
|
|
|
|
|
|
|
|
|
|
|
| |
The previous implementation resolved condition at Join compilation time
which required introducing a specialized expression resolving mode to
alter the join reuse logic solely during that phase.
FilteredRelation.condition is now resolved when the relation is first
referenced which maintains the existing behavior while allowing the
removal of the specialized resolving mode and address an issue where
conditions couldn't spawn new joins.
|
|
|
|
| |
get_joining_columns()/get_reverse_joining_columns() methods.
|
|
|
|
| |
relation on PostgreSQL.
|
|
|
|
|
|
|
|
| |
Regression in 59bea9efd2768102fc9d3aedda469502c218e9b7.
Refs #28477.
Thanks Ian Cubitt for the report.
|
|
|
|
|
|
| |
Thanks Andrew Cordery for the report.
Regression in b3db6c8dcb5145f7d45eff517bcd96460475c879.
|
|
|
|
| |
Thanks Roman Odaisky for the report.
|
|
|
| |
Bug in cd1afd553f9c175ebccfc0f50e72b43b9604bd97.
|
|
|
|
|
| |
While the add_fields() call from set_values() does trigger validation it
does so after annotations are masked resulting in them being excluded
from the choices of valid options surfaced through a FieldError.
|
|
|
|
|
|
| |
QuerySet.values()/values_list() on compound queries.
Co-authored-by: Matthias Kestenholz <mk@feinheit.ch>
|
| |
|
|
|
|
|
|
|
|
| |
window expression.
Regression in f387d024fc75569d2a4a338bfda76cc2f328f627.
Co-authored-by: Jannis Vajen <jvajen@gmail.com>
|
|
|
|
|
|
| |
Regression in 278881e37619278789942513916acafaa88d26f3 caused by a lack
of expression copying when an OrderBy expression is explicitly provided.
Thanks Jannis Vajen for the report and regression test.
|
|
|
|
|
|
|
|
|
| |
Used the same approach as for #34176 by using selected expressions
position to prevent ambiguous aliases in collisions.
Thanks henribru for the report.
Regression in 04518e310d4552ff7595a34f5a7f93487d78a406.
|
|
|
|
| |
This avoids conceptual collisions with the notion of indices.
|
|
|
|
| |
FilteredRelation.
|
|
|
|
|
|
| |
Regression in 3d734c09ff0138441dfe0a59010435871d17950f.
Thanks Raphaël Stefanini for the report.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Regression in b7b28c7c189615543218e81319473888bc46d831.
Refs #31377.
Thanks Shai Berger for the report and reviews.
test_aggregation_subquery_annotation_values_collision() has been
updated as queries that are explicitly grouped by a subquery should
always be grouped by it and not its outer columns even if its alias
collides with referenced table columns. This was not possible to
accomplish at the time 10866a10 landed because we didn't have compiler
level handling of colliding aliases.
|
| |
|
|
|
|
| |
FilteredRelations to the OneToOneField.
|
|
|
|
| |
SQLCompiler.get_related_selections() to avoid redefinition.
|
|
|
|
|
|
|
| |
to JSONField & co.
JSON should be provided as literal Python objects an not in their
encoded string literal forms.
|
|
|
|
|
|
|
|
|
|
| |
By avoiding to annotate aggregations meant to be possibly pushed to an
outer query until their references are resolved it is possible to
aggregate over a query with the same alias.
Even if #34176 is a convoluted case to support, this refactor seems
worth it given the reduction in complexity it brings with regards to
annotation removal when performing a subquery pushdown.
|
|
|
|
|
|
|
|
| |
unique_fields/update_fields.
Bug in 0f6946495a8ec955b471ca1baaf408ceb53d4796.
Thanks Joshua Brooks for the report.
|
|
|
|
|
|
|
|
| |
Regression in c58a8acd413ccc992dd30afd98ed900897e1f719.
Thanks to Shai Berger for the report and tests.
Co-Authored-By: David Sanders <shang.xiao.sanders@gmail.com>
|
|
|
|
| |
This ensures proper alias quoting.
|
|
|
|
|
| |
The latter offers a more generic interface that doesn't require
specialized expression types handling.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Just like when using .annotate(), the .alias() method will generate the
necessary JOINs to resolve the alias even if not selected.
Since these JOINs could be multi-valued non-selected aggregates must be
considered to require subquery wrapping as a GROUP BY is required to
combine duplicated tuples from the base table.
Regression in 59bea9efd2768102fc9d3aedda469502c218e9b7.
|
| |
|
|
|
|
|
| |
Also avoid an unnecessary pushdown when aggregating over a query that doesn't
have aggregate annotations.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
No core backend require the feature anymore as it was only added to
support a MySQL'ism that has been deprecated since then.
|
|
|
|
|
|
| |
MySQL 5.7.15 supports group by functional dependences so there is no
need to special case group by main table primary key anymore and
special case the ONLY_FULL_GROUP_BY sql mode.
|
|
|
|
|
|
| |
Identified using the following command:
$ git grep -I '\(\<[_a-zA-Z0-9]\+\>\) *= *\1 *[-+/*^%&|<>@]'
|
|
|
|
|
|
|
|
|
| |
queryset.
The bug existed since sliced query union was added but was elevated to
query union slices by moving the .exists() optimization to the compiler
in 3d734c09ff0138441dfe0a59010435871d17950f.
Thanks Stefan Hammer for the report.
|
| |
|
|
|
|
|
|
|
|
| |
This stops ordering by nested selected references. It's not supported on
PostgreSQL and not required to support psycopg3.
Regression in 04518e310d4552ff7595a34f5a7f93487d78a406.
Thanks Matt Westcott for the report.
|
|
|
|
|
| |
Recent refactors allowed GROUP BY aliasing allowed for aliasing to be
entirely handled by the sql.Query.set_group_by and compiler layers.
|
|
|
|
|
|
|
| |
This ensures implicit grouping from aggregate function annotations
groups by uncollapsed selected aliases if supported.
The feature is disabled on Oracle because it doesn't support it.
|
|
|
|
|
|
|
|
|
|
|
| |
This required moving the combined queries slicing logic to the compiler
in order to allow Query.exists() to be called at expression resolving
time.
It allowed for Query.exists() to be called at Exists() initialization
time and thus ensured that get_group_by_cols() was operating on the
terminal representation of the query that only has a single column
selected.
|
|
|
|
|
|
|
| |
This ensures explicit grouping from using values() before annotating an
aggregate function groups by selected aliases if supported.
The GROUP BY feature is disabled on Oracle because it doesn't support it.
|
|
|
|
|
|
|
|
|
|
|
| |
MySQL.
Columns of the left outer most select statement in a combined query
can be referenced by alias just like by index.
This removes combined query ordering by column index and avoids an
unnecessary usage of RawSQL which causes issues for backends that
specialize the treatment of null ordering.
|
|
|
|
|
| |
The SQLCompiler._order_by_pairs() generator method yields instances of
OrderBy and not Expression.
|
|
|
|
|
|
|
|
|
|
|
| |
for models with Meta.ordering.
This makes QuerySet.order_by() no longer ignore trailing transforms for
models with Meta.ordering. As a consequence, FieldError is raised in
such cases for non-existent fields.
Thanks to Klaas van Schelven for the report and Mariusz Felisiak for the
review and advice.
|
|
|
|
|
|
|
|
|
|
|
| |
annotations.
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.
|