mirror of
https://github.com/django/django.git
synced 2025-08-03 18:38:50 +00:00
Fixed #23259 -- Corrected insertion order of extra() select_params
A regression caused queries to produce incorrect results for cases where
extra(select) is excluded by values() but included by extra(order_by)
The regression was caused by 2f35c6f10f
.
This commit is contained in:
parent
12ad61aa9f
commit
f0b358880a
2 changed files with 22 additions and 1 deletions
|
@ -2130,6 +2130,26 @@ class ValuesQuerysetTests(BaseQuerysetTest):
|
|||
order_by=['value_minus_one'])
|
||||
qs = qs.values('num')
|
||||
|
||||
def test_extra_select_params_values_order_in_extra(self):
|
||||
# testing for 23259 issue
|
||||
qs = Number.objects.extra(
|
||||
select={'value_plus_x': 'num+%s'},
|
||||
select_params=[1],
|
||||
order_by=['value_plus_x'])
|
||||
qs = qs.filter(num=72)
|
||||
qs = qs.values('num')
|
||||
self.assertQuerysetEqual(qs, [{'num': 72}], self.identity)
|
||||
|
||||
def test_extra_multiple_select_params_values_order_by(self):
|
||||
# testing for 23259 issue
|
||||
qs = Number.objects.extra(select=OrderedDict([('value_plus_x', 'num+%s'),
|
||||
('value_minus_x', 'num-%s')]),
|
||||
select_params=(72, 72))
|
||||
qs = qs.order_by('value_minus_x')
|
||||
qs = qs.filter(num=1)
|
||||
qs = qs.values('num')
|
||||
self.assertQuerysetEqual(qs, [], self.identity)
|
||||
|
||||
def test_extra_values_list(self):
|
||||
# testing for ticket 14930 issues
|
||||
qs = Number.objects.extra(select={'value_plus_one': 'num+1'})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue