| 1 | Index: db/models/sql/constants.py
|
|---|
| 2 | ===================================================================
|
|---|
| 3 | --- db/models/sql/constants.py (revisión: 17282)
|
|---|
| 4 | +++ db/models/sql/constants.py (copia de trabajo)
|
|---|
| 5 | @@ -5,6 +5,7 @@
|
|---|
| 6 | 'exact', 'iexact', 'contains', 'icontains', 'gt', 'gte', 'lt', 'lte', 'in',
|
|---|
| 7 | 'startswith', 'istartswith', 'endswith', 'iendswith', 'range', 'year',
|
|---|
| 8 | 'month', 'day', 'week_day', 'isnull', 'search', 'regex', 'iregex',
|
|---|
| 9 | + 'like', 'ilike',
|
|---|
| 10 | )])
|
|---|
| 11 |
|
|---|
| 12 | # Size of each "chunk" for get_iterator calls.
|
|---|
| 13 | Index: db/models/fields/__init__.py
|
|---|
| 14 | ===================================================================
|
|---|
| 15 | --- db/models/fields/__init__.py (revisión: 17282)
|
|---|
| 16 | +++ db/models/fields/__init__.py (copia de trabajo)
|
|---|
| 17 | @@ -303,7 +303,7 @@
|
|---|
| 18 | if lookup_type in (
|
|---|
| 19 | 'regex', 'iregex', 'month', 'day', 'week_day', 'search',
|
|---|
| 20 | 'contains', 'icontains', 'iexact', 'startswith', 'istartswith',
|
|---|
| 21 | - 'endswith', 'iendswith', 'isnull'
|
|---|
| 22 | + 'endswith', 'iendswith', 'isnull', 'ilike', 'like',
|
|---|
| 23 | ):
|
|---|
| 24 | return value
|
|---|
| 25 | elif lookup_type in ('exact', 'gt', 'gte', 'lt', 'lte'):
|
|---|
| 26 | @@ -340,7 +340,7 @@
|
|---|
| 27 | return QueryWrapper(('(%s)' % sql), params)
|
|---|
| 28 |
|
|---|
| 29 | if lookup_type in ('regex', 'iregex', 'month', 'day', 'week_day',
|
|---|
| 30 | - 'search'):
|
|---|
| 31 | + 'search', 'like', 'ilike'):
|
|---|
| 32 | return [value]
|
|---|
| 33 | elif lookup_type in ('exact', 'gt', 'gte', 'lt', 'lte'):
|
|---|
| 34 | return [self.get_db_prep_value(value, connection=connection,
|
|---|
| 35 | Index: db/backends/sqlite3/base.py
|
|---|
| 36 | ===================================================================
|
|---|
| 37 | --- db/backends/sqlite3/base.py (revisión: 17282)
|
|---|
| 38 | +++ db/backends/sqlite3/base.py (copia de trabajo)
|
|---|
| 39 | @@ -218,6 +218,8 @@
|
|---|
| 40 | 'endswith': "LIKE %s ESCAPE '\\'",
|
|---|
| 41 | 'istartswith': "LIKE %s ESCAPE '\\'",
|
|---|
| 42 | 'iendswith': "LIKE %s ESCAPE '\\'",
|
|---|
| 43 | + 'like': "LIKE %s ESCAPE '\\'",
|
|---|
| 44 | + 'ilike': "LIKE %s ESCAPE '\\'",
|
|---|
| 45 | }
|
|---|
| 46 |
|
|---|
| 47 | def __init__(self, *args, **kwargs):
|
|---|
| 48 | Index: db/backends/mysql/base.py
|
|---|
| 49 | ===================================================================
|
|---|
| 50 | --- db/backends/mysql/base.py (revisión: 17282)
|
|---|
| 51 | +++ db/backends/mysql/base.py (copia de trabajo)
|
|---|
| 52 | @@ -302,6 +302,8 @@
|
|---|
| 53 | 'endswith': 'LIKE BINARY %s',
|
|---|
| 54 | 'istartswith': 'LIKE %s',
|
|---|
| 55 | 'iendswith': 'LIKE %s',
|
|---|
| 56 | + 'like': 'LIKE BINARY %s',
|
|---|
| 57 | + 'ilike': 'LIKE %s',
|
|---|
| 58 | }
|
|---|
| 59 |
|
|---|
| 60 | def __init__(self, *args, **kwargs):
|
|---|
| 61 | Index: db/backends/oracle/base.py
|
|---|
| 62 | ===================================================================
|
|---|
| 63 | --- db/backends/oracle/base.py (revisión: 17282)
|
|---|
| 64 | +++ db/backends/oracle/base.py (copia de trabajo)
|
|---|
| 65 | @@ -218,7 +218,8 @@
|
|---|
| 66 | return cursor.fetchone()[0]
|
|---|
| 67 |
|
|---|
| 68 | def lookup_cast(self, lookup_type):
|
|---|
| 69 | - if lookup_type in ('iexact', 'icontains', 'istartswith', 'iendswith'):
|
|---|
| 70 | + if lookup_type in ('iexact', 'icontains',
|
|---|
| 71 | + 'istartswith', 'iendswith', 'ilike'):
|
|---|
| 72 | return "UPPER(%s)"
|
|---|
| 73 | return "%s"
|
|---|
| 74 |
|
|---|
| 75 | @@ -419,6 +420,8 @@
|
|---|
| 76 | 'endswith': "LIKE TRANSLATE(%s USING NCHAR_CS) ESCAPE TRANSLATE('\\' USING NCHAR_CS)",
|
|---|
| 77 | 'istartswith': "LIKE UPPER(TRANSLATE(%s USING NCHAR_CS)) ESCAPE TRANSLATE('\\' USING NCHAR_CS)",
|
|---|
| 78 | 'iendswith': "LIKE UPPER(TRANSLATE(%s USING NCHAR_CS)) ESCAPE TRANSLATE('\\' USING NCHAR_CS)",
|
|---|
| 79 | + 'like': "LIKE TRANSLATE(%s USING NCHAR_CS) ESCAPE TRANSLATE('\\' USING NCHAR_CS)",
|
|---|
| 80 | + 'ilike': "LIKE UPPER(TRANSLATE(%s USING NCHAR_CS)) ESCAPE TRANSLATE('\\' USING NCHAR_CS)",
|
|---|
| 81 | }
|
|---|
| 82 |
|
|---|
| 83 | _likec_operators = _standard_operators.copy()
|
|---|
| 84 | Index: db/backends/postgresql_psycopg2/base.py
|
|---|
| 85 | ===================================================================
|
|---|
| 86 | --- db/backends/postgresql_psycopg2/base.py (revisión: 17282)
|
|---|
| 87 | +++ db/backends/postgresql_psycopg2/base.py (copia de trabajo)
|
|---|
| 88 | @@ -101,6 +101,8 @@
|
|---|
| 89 | 'endswith': 'LIKE %s',
|
|---|
| 90 | 'istartswith': 'LIKE UPPER(%s)',
|
|---|
| 91 | 'iendswith': 'LIKE UPPER(%s)',
|
|---|
| 92 | + 'like': 'LIKE %s',
|
|---|
| 93 | + 'ilike': 'LIKE UPPER(%s)',
|
|---|
| 94 | }
|
|---|
| 95 |
|
|---|
| 96 | def __init__(self, *args, **kwargs):
|
|---|
| 97 | Index: db/backends/postgresql_psycopg2/operations.py
|
|---|
| 98 | ===================================================================
|
|---|
| 99 | --- db/backends/postgresql_psycopg2/operations.py (revisión: 17282)
|
|---|
| 100 | +++ db/backends/postgresql_psycopg2/operations.py (copia de trabajo)
|
|---|
| 101 | @@ -46,7 +46,8 @@
|
|---|
| 102 | lookup = "%s::text"
|
|---|
| 103 |
|
|---|
| 104 | # Use UPPER(x) for case-insensitive lookups; it's faster.
|
|---|
| 105 | - if lookup_type in ('iexact', 'icontains', 'istartswith', 'iendswith'):
|
|---|
| 106 | + if lookup_type in ('iexact', 'icontains',
|
|---|
| 107 | + 'istartswith', 'iendswith', 'ilike'):
|
|---|
| 108 | lookup = 'UPPER(%s)' % lookup
|
|---|
| 109 |
|
|---|
| 110 | return lookup
|
|---|