From 2ceb10f3b02cbebad6ed908880f49a7c3e901d12 Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Wed, 24 Dec 2014 15:55:57 +0100 Subject: Fixed #14180 -- Prevented unneeded index creation on MySQL-InnoDB Thanks zimnyx for the report and Simon Charette, Tim Graham for the reviews. --- tests/indexes/tests.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'tests/indexes') diff --git a/tests/indexes/tests.py b/tests/indexes/tests.py index 86000bb94c..0710446245 100644 --- a/tests/indexes/tests.py +++ b/tests/indexes/tests.py @@ -5,7 +5,7 @@ from django.db import connection from django.test import TestCase from django.test.utils import IgnorePendingDeprecationWarningsMixin -from .models import Article, IndexTogetherSingleList +from .models import Article, ArticleTranslation, IndexTogetherSingleList class CreationIndexesTests(IgnorePendingDeprecationWarningsMixin, TestCase): @@ -82,3 +82,17 @@ class SchemaIndexesTests(TestCase): """Test indexes are not created for related objects""" index_sql = connection.schema_editor()._model_indexes_sql(Article) self.assertEqual(len(index_sql), 1) + + @skipUnless(connection.vendor == 'mysql', "This is a mysql-specific issue") + def test_no_index_for_foreignkey(self): + """ + MySQL on InnoDB already creates indexes automatically for foreign keys. + (#14180). + """ + storage = connection.introspection.get_storage_engine( + connection.cursor(), ArticleTranslation._meta.db_table + ) + if storage != "InnoDB": + self.skip("This test only applies to the InnoDB storage engine") + index_sql = connection.schema_editor()._model_indexes_sql(ArticleTranslation) + self.assertEqual(index_sql, []) -- cgit v1.2.1