mirror of
https://github.com/django/django.git
synced 2024-12-01 15:42:04 +01:00
Fixed #24390 -- Made migration index names deterministic.
This commit is contained in:
parent
4fdc7015c0
commit
f37c11eea3
@ -798,7 +798,7 @@ class BaseDatabaseSchemaEditor(object):
|
|||||||
)
|
)
|
||||||
# Else generate the name for the index using a different algorithm
|
# Else generate the name for the index using a different algorithm
|
||||||
table_name = model._meta.db_table.replace('"', '').replace('.', '_')
|
table_name = model._meta.db_table.replace('"', '').replace('.', '_')
|
||||||
index_unique_name = '_%x' % abs(hash((table_name, ','.join(column_names))))
|
index_unique_name = '_%s' % self._digest(*column_names)
|
||||||
max_length = self.connection.ops.max_name_length() or 200
|
max_length = self.connection.ops.max_name_length() or 200
|
||||||
# If the index name is too long, truncate it
|
# If the index name is too long, truncate it
|
||||||
index_name = ('%s_%s%s%s' % (
|
index_name = ('%s_%s%s%s' % (
|
||||||
|
@ -10,6 +10,19 @@ class SchemaIndexesTests(TestCase):
|
|||||||
"""
|
"""
|
||||||
Test index handling by the db.backends.schema infrastructure.
|
Test index handling by the db.backends.schema infrastructure.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
def test_index_name_hash(self):
|
||||||
|
"""
|
||||||
|
Index names should be deterministic.
|
||||||
|
"""
|
||||||
|
with connection.schema_editor() as editor:
|
||||||
|
index_name = editor._create_index_name(
|
||||||
|
model=Article,
|
||||||
|
column_names=("column1", "column2", "column3"),
|
||||||
|
suffix="123",
|
||||||
|
)
|
||||||
|
self.assertEqual(index_name, "indexes_article_column1_856fe518123")
|
||||||
|
|
||||||
def test_index_together(self):
|
def test_index_together(self):
|
||||||
editor = connection.schema_editor()
|
editor = connection.schema_editor()
|
||||||
index_sql = editor._model_indexes_sql(Article)
|
index_sql = editor._model_indexes_sql(Article)
|
||||||
|
Loading…
Reference in New Issue
Block a user