From 024abe5b82d95ee60cb18a77ebf841ad715467fa Mon Sep 17 00:00:00 2001 From: Mariusz Felisiak Date: Wed, 26 Sep 2018 20:18:48 +0200 Subject: Fixed #29630 -- Fixed crash of sliced queries with multiple columns with the same name on Oracle 12.1. Regression in 0899d583bdb140910698d00d17f5f1abc8774b07. Thanks Tim Graham for the review and Jani Tiainen for help. --- tests/queries/tests.py | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) (limited to 'tests') diff --git a/tests/queries/tests.py b/tests/queries/tests.py index 65917f84fb..25e3b283ec 100644 --- a/tests/queries/tests.py +++ b/tests/queries/tests.py @@ -1836,15 +1836,15 @@ class Queries6Tests(TestCase): @classmethod def setUpTestData(cls): generic = NamedCategory.objects.create(name="Generic") - t1 = Tag.objects.create(name='t1', category=generic) - Tag.objects.create(name='t2', parent=t1, category=generic) - t3 = Tag.objects.create(name='t3', parent=t1) - t4 = Tag.objects.create(name='t4', parent=t3) - Tag.objects.create(name='t5', parent=t3) + cls.t1 = Tag.objects.create(name='t1', category=generic) + cls.t2 = Tag.objects.create(name='t2', parent=cls.t1, category=generic) + cls.t3 = Tag.objects.create(name='t3', parent=cls.t1) + cls.t4 = Tag.objects.create(name='t4', parent=cls.t3) + cls.t5 = Tag.objects.create(name='t5', parent=cls.t3) n1 = Note.objects.create(note='n1', misc='foo', id=1) - ann1 = Annotation.objects.create(name='a1', tag=t1) + ann1 = Annotation.objects.create(name='a1', tag=cls.t1) ann1.notes.add(n1) - Annotation.objects.create(name='a2', tag=t4) + Annotation.objects.create(name='a2', tag=cls.t4) def test_parallel_iterators(self): # Parallel iterators work. @@ -1923,6 +1923,24 @@ class Queries6Tests(TestCase): def test_distinct_ordered_sliced_subquery_aggregation(self): self.assertEqual(Tag.objects.distinct().order_by('category__name')[:3].count(), 3) + def test_multiple_columns_with_the_same_name_slice(self): + self.assertEqual( + list(Tag.objects.order_by('name').values_list('name', 'category__name')[:2]), + [('t1', 'Generic'), ('t2', 'Generic')], + ) + self.assertSequenceEqual( + Tag.objects.order_by('name').select_related('category')[:2], + [self.t1, self.t2], + ) + self.assertEqual( + list(Tag.objects.order_by('-name').values_list('name', 'parent__name')[:2]), + [('t5', 't3'), ('t4', 't3')], + ) + self.assertSequenceEqual( + Tag.objects.order_by('-name').select_related('parent')[:2], + [self.t5, self.t4], + ) + class RawQueriesTests(TestCase): def setUp(self): -- cgit v1.3