# Django 5.2.9 documentation

# Django 2.2.1 release notes

May 1, 2019

Django 2.2.1 fixes several bugs in 2.2.

## Bugfixes

- Fixed a regression in Django 2.1 that caused the incorrect quoting of database user password when using `dbshell` on Oracle (#30307).

- Added compatibility for `psycopg2` 2.8 (#30331).

- Fixed a regression in Django 2.2 that caused a crash when loading the template for the technical 500 debug page (#30324).

- Fixed crash of `ordering` argument in `ArrayAgg` and `StringAgg` when it contains an expression with params (#30332).

- Fixed a regression in Django 2.2 that caused a single instance fast-delete to not set the primary key to `None` (#30330).

- Prevented `makemigrations` from generating infinite migrations for check constraints and partial indexes when `condition` contains a `range` object (#30350).

- Reverted an optimization in Django 2.2 (#29725) that caused the inconsistent behavior of `count()` and `exists()` on a reverse many-to-many relationship with a custom manager (#30325).

- Fixed a regression in Django 2.2 where `Paginator` crashes if `object_list` is a queryset ordered or aggregated over a nested `JSONField` key transform (#30335).

- Fixed a regression in Django 2.2 where `IntegerField` validation of database limits crashes if `limit_value` attribute in a custom validator is callable (#30328).

- Fixed a regression in Django 2.2 where `SearchVector` generates SQL that is not indexable (#30385).

- Fixed a regression in Django 2.2 that caused an exception to be raised when a custom error handler could not be imported (#30318).

- Relaxed the system check added in Django 2.2 for the admin app’s dependencies to reallow use of `SessionMiddleware` subclasses, rather than requiring `django.contrib.sessions` to be in `INSTALLED_APPS` (#30312).

- Increased the default timeout when using `Watchman` to 5 seconds to prevent falling back to `StatReloader` on larger projects and made it customizable via the `DJANGO_WATCHMAN_TIMEOUT` environment variable (#30361).

- Fixed a regression in Django 2.2 that caused a crash when migrating permissions for proxy models if the target permissions already existed. For example, when a permission had been created manually or a model had been migrated from concrete to proxy (#30351).

- Fixed a regression in Django 2.2 that caused a crash of `runserver` when URLConf modules raised exceptions (#30323).

- Fixed a regression in Django 2.2 where changes were not reliably detected by auto-reloader when using `StatReloader` (#30323).

- Fixed a migration crash on Oracle and PostgreSQL when adding a check constraint with a `contains`, `startswith`, or `endswith` lookup (or their case-insensitive variant) (#30408).

- Fixed a migration crash on Oracle and SQLite when adding a check constraint with `condition` contains `|` (`OR`) operator (#30412).