id summary reporter owner description type status component version severity resolution keywords cc stage has_patch needs_docs needs_tests needs_better_patch easy ui_ux 8597 PostgreSQL: r8536 broke iexact lookups with underscores rene.puls@… nobody "Changeset [8536] changed the way field iexact lookups are translated in the PostgreSQL backend. Before the patch, these were translated to ""ILIKE %s"". Now it's ""UPPER(field) = UPPER(%s)"". However, the %s value is still escaped for use in a LIKE expression, that is, all underscores are prepended with ""\\"". Before the patch (correct): {{{ >>> User.objects.filter(username__iexact='test_user').query.as_sql() ('SELECT [...] FROM ""auth_user"" WHERE ""auth_user"".""username""::text ILIKE %s ', (u'test\\_user',)) }}} After the patch (wrong): {{{ User.objects.filter(username__iexact='test_user').query.as_sql() ('SELECT [...] FROM ""auth_user"" WHERE UPPER(""auth_user"".""username""::text) = UPPER(%s) ', (u'test\\_user',)) }}} As a result, iexact lookups no longer work in the current version with PostgreSQL, if the comparison value contains an underscore. " closed Database layer (models, ORM) dev fixed Accepted 0 0 0 0 0 0