Add a patch for fixing broken db_indexes on MySQL on Django 1.8-1.10.

Review Request #11172 — Created Sept. 14, 2020 and submitted — Latest diff uploaded

Information

Django Evolution
master

Reviewers

The MySQL backend on Django 1.8 through 1.10 has a heavy-handed
workaround for some of its SQL generation around indexes. It tries to
disable setting indexes on a ForeignKey, leaving that up to MySQL
itself, by setting db_index = False. It claims this is "temporary,"
but it never restores the values. This impacts signatures of these
fields on these versions of Django (and breaks unit tests).

This patch preserves the list of fields that would have their values
reset and then restores db_index on each of them, allowing Django to
continue to avoid those indexes without breaking any future usage of
the flags on these fields.

MySQL unit tests pass on all supported versions of Django.

Diff Revision 1

This is not the most recent revision of the diff. The latest diff is revision 2. See what's changed.

orig
1
2

Commits

First Last Summary ID Author
Add a patch for fixing broken db_indexes on MySQL on Django 1.8-1.10.
The MySQL backend on Django 1.8 through 1.10 has a heavy-handed workaround for some of its SQL generation around indexes. It tries to disable setting indexes on a `ForeignKey`, leaving that up to MySQL itself, by setting `db_index = False`. It claims this is "temporary," but it never restores the values. This impacts signatures of these fields on these versions of Django (and breaks unit tests). This patch preserves the list of fields that would have their values reset and then restores `db_index` on each of them, allowing Django to continue to avoid those indexes without breaking any future usage of the flags on these fields.
1b46d20b53a1e853bd2c4c6ccc941f1a6eb92eb6 Christian Hammond
django_evolution/compat/patches/__init__.py
django_evolution/compat/patches/django1_8__1_10_mysql_preserve_db_index.py
Loading...