Ticket #7580: binary_patch.diff

File binary_patch.diff, 2.2 KB (added by Paul Kenjora <pkenjora@…>, 7 years ago)
  • db/models/sql/query.py

     
    557557        else:
    558558            asc, desc = ORDER_DIR['DESC']
    559559        for field in ordering:
     560            binary_extra = ''
     561            if field.endswith('__binary'):
     562                field = field.rstrip('__binary') 
     563                binary_extra = 'BINARY '
     564 
    560565            if field == '?':
    561566                result.append(self.connection.ops.random_function_sql())
    562567                continue
     
    566571                    field = -field
    567572                else:
    568573                    order = asc
    569                 result.append('%s %s' % (field, order))
     574                result.append('%s %s' % (binary_extra + field, order))
    570575                continue
    571576            if '.' in field:
    572577                # This came in through an extra(order_by=...) addition. Pass it
     
    575580                table, col = col.split('.', 1)
    576581                elt = '%s.%s' % (qn(table), col)
    577582                if not distinct or elt in select_aliases:
    578                     result.append('%s %s' % (elt, order))
     583                    result.append('%s %s' % (binary_extra + elt, order))
    579584            elif get_order_dir(field)[0] not in self.extra_select:
    580585                # 'col' is of the form 'field' or 'field1__field2' or
    581586                # '-field1__field2__field', etc.
     
    584589                    elt = '%s.%s' % (qn(table), qn2(col))
    585590                    if distinct and elt not in select_aliases:
    586591                        ordering_aliases.append(elt)
    587                     result.append('%s %s' % (elt, order))
     592                    result.append('%s %s' % (binary_extra + elt, order))
    588593            else:
    589594                col, order = get_order_dir(field, asc)
    590595                elt = qn(col)
    591596                if distinct and elt not in select_aliases:
    592597                    ordering_aliases.append(elt)
    593                 result.append('%s %s' % (elt, order))
     598                result.append('%s %s' % (binary_extra + elt, order))
    594599        self.ordering_aliases = ordering_aliases
    595600        return result
    596601
Back to Top