Commit 61cc4a1e authored by Malcolm Tredinnick's avatar Malcolm Tredinnick
Browse files

Fixed #8819 -- Don't include two copies of extra-select columns in the query.

This was triggered by r8794, but was, in fact, fairly fragile before then. The
current fix is the correct way we should be doing this.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@8898 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent d2ca6fd5
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -630,7 +630,7 @@ class Query(object):
            else:
                col, order = get_order_dir(field, asc)
                elt = qn2(col)
                if distinct and elt not in select_aliases:
                if distinct and col not in select_aliases:
                    ordering_aliases.append(elt)
                result.append('%s %s' % (elt, order))
        self.ordering_aliases = ordering_aliases
+9 −0
Original line number Diff line number Diff line
@@ -98,4 +98,13 @@ True
>>> Order.objects.extra(where=["username=%s"], params=["fred"], tables=["auth_user"]).order_by('created_by')
[]

# Regression test for #8819: Fields in the extra(select=...) list should be
# available to extra(order_by=...).
>>> User.objects.extra(select={'extra_field': 1}).distinct()
[<User: fred>]
>>> User.objects.extra(select={'extra_field': 1}, order_by=['extra_field'])
[<User: fred>]
>>> User.objects.extra(select={'extra_field': 1}, order_by=['extra_field']).distinct()
[<User: fred>]

"""}