Fix SQLite 3.25 and earlier on Django 1.6.

Review Request #11118 — Created Aug. 4, 2020 and submitted — Latest diff uploaded

Information

Django Evolution
master

Reviewers

A recent change introduced an elaborate form of schema rewriting for
SQLite databases that works around issues in renaming primary keys that
have references pointed toward them. SQLite 3.26 had a sane solution for
this, but earlier versions required the workaround.

The testing performed at that time had a flaw. The Django 1.6
environment was running SQLite 3.26, and while the other environments
were a mix of 3.24 and 3.26, it turns out that there was one key
difference separating Django 1.6 and newer versions: Django didn't
bother to create references from the M2M intermediary table to the
owning model.

This prevented the schema rewriting logic from kicking in (and also
masked an issue with a return type difference from Django 1.7 and 1.8+'s
versions of connection.introspection.get_table_list()).

Both these issues are now fixed. The return type is checked for, and the
SQLite test queries have been updated to expect the appropriate
variations on Django 1.6.

Unit tests pass for SQLite on all versions of Django and Python.

Tested Django 1.6 with SQLite 3.24 and 3.26.

Commits

Files

    Loading...