Django

Code

Ticket #3575: 3575-upper.patch

File 3575-upper.patch, 2.2 kB (added by cgrady, 6 months ago)
  • django/db/backends/postgresql/base.py

    old new  
    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

    old new  
    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):