diff options
| author | Rajiv Makhijani <rajiv@blue-tech.org> | 2014-08-08 03:08:26 -0700 |
|---|---|---|
| committer | Anssi Kääriäinen <akaariai@gmail.com> | 2014-08-11 09:35:37 +0300 |
| commit | 4ce5ced230481fc93288aeea922398bc36102d1e (patch) | |
| tree | 982f3ea1553afe483af7db1b6b06a7c07a208f18 /tests | |
| parent | 07c79252828c17b9b799d59a3bbbe45c62fe6d38 (diff) | |
[1.7.x] 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 2f35c6f10fcbae541691207fb0c0560a13b754fc.
Backport of f0b358880a from master
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/queries/tests.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/queries/tests.py b/tests/queries/tests.py index 60d1083879..0fff68b21f 100644 --- a/tests/queries/tests.py +++ b/tests/queries/tests.py @@ -2129,6 +2129,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'}) |
