Kaydet (Commit) dd2e4d7b authored tarafından Ed Morley's avatar Ed Morley Kaydeden (comit) Tim Graham

Refs #27558 -- Added test for no index on InnoDB ForeignKey.

The refactor in 3f76d140 fixed the creation
of redundant indexes.

Forwardport of 82ce55db from stable/1.10.x
üst 47744a0a
......@@ -26,3 +26,6 @@ Bugfixes
* Prevented ``LocaleMiddleware`` from redirecting on URLs that should return
404 when using ``prefix_default_language=False`` (:ticket:`27402`).
* Prevented an unnecessary index from being created on an InnoDB ``ForeignKey``
when the field was added after the model was created (:ticket:`27558`).
from unittest import skipUnless
from django.db import connection
from django.db.models.deletion import CASCADE
from django.db.models.fields.related import ForeignKey
from django.test import TestCase
from .models import Article, ArticleTranslation, IndexTogetherSingleList
......@@ -98,3 +100,15 @@ class SchemaIndexesTests(TestCase):
'CREATE INDEX `indexes_articletranslation_article_no_constraint_id_d6c0806b` '
'ON `indexes_articletranslation` (`article_no_constraint_id`)'
])
# The index also shouldn't be created if the ForeignKey is added after
# the model was created.
with connection.schema_editor() as editor:
new_field = ForeignKey(Article, CASCADE)
new_field.set_attributes_from_name('new_foreign_key')
editor.add_field(ArticleTranslation, new_field)
self.assertEqual(editor.deferred_sql, [
'ALTER TABLE `indexes_articletranslation` '
'ADD CONSTRAINT `indexes_articletrans_new_foreign_key_id_d27a9146_fk_indexes_a` '
'FOREIGN KEY (`new_foreign_key_id`) REFERENCES `indexes_article` (`id`)'
])
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment