Ticket #3575: 3575-upper.patch

File 3575-upper.patch, 2.2 KB (added by cgrady, 7 years ago)
  • django/db/backends/postgresql/base.py

     
    6060        return iter(self.cursor)
    6161
    6262class DatabaseFeatures(BaseDatabaseFeatures):
    63     pass # This backend uses all the defaults.
     63    needs_upper_for_iops = True
    6464
    6565class DatabaseWrapper(BaseDatabaseWrapper):
    6666    features = DatabaseFeatures()
    6767    ops = DatabaseOperations()
    6868    operators = {
    6969        'exact': '= %s',
    70         'iexact': 'ILIKE %s',
     70        'iexact': '= UPPER(%s)',
    7171        'contains': 'LIKE %s',
    72         'icontains': 'ILIKE %s',
     72        'icontains': 'LIKE UPPER(%s)',
    7373        'regex': '~ %s',
    7474        'iregex': '~* %s',
    7575        'gt': '> %s',
     
    7878        'lte': '<= %s',
    7979        'startswith': 'LIKE %s',
    8080        'endswith': 'LIKE %s',
    81         'istartswith': 'ILIKE %s',
    82         'iendswith': 'ILIKE %s',
     81        'istartswith': 'LIKE UPPER(%s)',
     82        'iendswith': 'LIKE UPPER(%s)',
    8383    }
    8484
    8585    def _cursor(self, settings):
  • django/db/backends/postgresql_psycopg2/base.py

     
    2222
    2323class DatabaseFeatures(BaseDatabaseFeatures):
    2424    needs_datetime_string_cast = False
     25    needs_upper_for_iops = True
    2526
    2627class DatabaseOperations(PostgresqlDatabaseOperations):
    2728    def last_executed_query(self, cursor, sql, params):
     
    3536    ops = DatabaseOperations()
    3637    operators = {
    3738        'exact': '= %s',
    38         'iexact': 'ILIKE %s',
     39        'iexact': '= UPPER(%s)',
    3940        'contains': 'LIKE %s',
    40         'icontains': 'ILIKE %s',
     41        'icontains': 'LIKE UPPER(%s)',
    4142        'regex': '~ %s',
    4243        'iregex': '~* %s',
    4344        'gt': '> %s',
     
    4647        'lte': '<= %s',
    4748        'startswith': 'LIKE %s',
    4849        'endswith': 'LIKE %s',
    49         'istartswith': 'ILIKE %s',
    50         'iendswith': 'ILIKE %s',
     50        'istartswith': 'LIKE UPPER(%s)',
     51        'iendswith': 'LIKE UPPER(%s)',
    5152    }
    5253
    5354    def _cursor(self, settings):
Back to Top