summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAnssi Kääriäinen <akaariai@gmail.com>2013-02-19 04:47:47 +0200
committerAnssi Kääriäinen <akaariai@gmail.com>2013-02-20 21:43:44 +0200
commitedf93127bf2f9dc35b45cdea5d39a1b417ab1638 (patch)
treef9f40e3136ea830305130751fc2edce1480e997e /tests
parent3fef304ff237fe692459c1f5b840acf7886c50bb (diff)
Removed join() promote kwarg
The join promote=True was over-aggressive in select_related handling. After that was removed, the only other user was query.combine(). That use case is very easy to handle locally, so there is no more need for the join(promote=True) flag. Refs #19849.
Diffstat (limited to 'tests')
-rw-r--r--tests/regressiontests/select_related_regress/tests.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/regressiontests/select_related_regress/tests.py b/tests/regressiontests/select_related_regress/tests.py
index 7f93a1c33c..0e27d07c4d 100644
--- a/tests/regressiontests/select_related_regress/tests.py
+++ b/tests/regressiontests/select_related_regress/tests.py
@@ -139,3 +139,26 @@ class SelectRelatedRegressTests(TestCase):
self.assertEqual(troy.name, 'Troy Buswell')
self.assertEqual(troy.value, 42)
self.assertEqual(troy.state.name, 'Western Australia')
+
+ def test_null_join_promotion(self):
+ australia = Country.objects.create(name='Australia')
+ active = ClientStatus.objects.create(name='active')
+
+ wa = State.objects.create(name="Western Australia", country=australia)
+ bob = Client.objects.create(name='Bob', status=active)
+ jack = Client.objects.create(name='Jack', status=active, state=wa)
+ qs = Client.objects.filter(state=wa).select_related('state')
+ with self.assertNumQueries(1):
+ self.assertEqual(list(qs), [jack])
+ self.assertEqual(qs[0].state, wa)
+ # The select_related join wasn't promoted as there was already an
+ # existing (even if trimmed) inner join to state.
+ self.assertFalse('LEFT OUTER' in str(qs.query))
+ qs = Client.objects.select_related('state').order_by('name')
+ with self.assertNumQueries(1):
+ self.assertEqual(list(qs), [bob, jack])
+ self.assertIs(qs[0].state, None)
+ self.assertEqual(qs[1].state, wa)
+ # The select_related join was promoted as there is already an
+ # existing join.
+ self.assertTrue('LEFT OUTER' in str(qs.query))