1
0
mirror of https://github.com/django/django.git synced 2025-01-22 00:02:15 +00:00

Fixed #34580 -- Avoided unnecessary computation of selected expressions in SQLCompiler.

Performance regression in 278881e37619278789942513916acafaa88d26f3.

Co-authored-by: David Smith <smithdc@gmail.com>
This commit is contained in:
Simon Charette 2023-05-21 16:59:56 +01:00 committed by Mariusz Felisiak
parent 00f5d2d110
commit 98f6ada0e2
2 changed files with 6 additions and 1 deletions

View File

@ -331,7 +331,9 @@ class SQLCompiler:
default_order, _ = ORDER_DIR["DESC"]
selected_exprs = {}
if select := self.select:
# Avoid computing `selected_exprs` if there is no `ordering` as it's
# relatively expensive.
if ordering and (select := self.select):
for ordinal, (expr, _, alias) in enumerate(select, start=1):
pos_expr = PositionRef(ordinal, alias, expr)
if alias:

View File

@ -22,3 +22,6 @@ Bugfixes
* Fixed a bug in Django 4.2 where :option:`makemigrations --update` didn't
respect the ``--name`` option (:ticket:`34568`).
* Fixed a performance regression in Django 4.2 when compiling queries without
ordering (:ticket:`34580`).