Ticket #9682: django-force-collation-for-ci.diff

File django-force-collation-for-ci.diff, 1.1 KB (added by to.roma.from.djbug@…, 15 years ago)

A patch implementing proposal #2.

  • db/backends/mysql/base.py

     
    199199        second = '%s-12-31 23:59:59.99'
    200200        return [first % value, second % value]
    201201
     202_icollate = hasattr(settings, "MYSQL_FORCE_COLLATION_FOR_CI") and ("COLLATE %s " % settings.MYSQL_FORCE_COLLATION_FOR_CI) or ""
     203
    202204class DatabaseWrapper(BaseDatabaseWrapper):
    203205
    204206    operators = {
    205207        'exact': '= %s',
    206         'iexact': 'LIKE %s',
     208        'iexact': _icollate + 'LIKE %s',
    207209        'contains': 'LIKE BINARY %s',
    208         'icontains': 'LIKE %s',
     210        'icontains': _icollate + 'LIKE %s',
    209211        'regex': 'REGEXP BINARY %s',
    210         'iregex': 'REGEXP %s',
     212        'iregex': _icollate + 'REGEXP %s',
    211213        'gt': '> %s',
    212214        'gte': '>= %s',
    213215        'lt': '< %s',
    214216        'lte': '<= %s',
    215217        'startswith': 'LIKE BINARY %s',
    216218        'endswith': 'LIKE BINARY %s',
    217         'istartswith': 'LIKE %s',
    218         'iendswith': 'LIKE %s',
     219        'istartswith': _icollate + 'LIKE %s',
     220        'iendswith': _icollate + 'LIKE %s',
    219221    }
    220222
    221223    def __init__(self, **kwargs):
Back to Top