mirror of
https://github.com/django/django.git
synced 2024-12-22 17:16:24 +00:00
Refs #25530 -- Changed _create_index_name to take a table as first parameter.
This commit is contained in:
parent
ad524980ac
commit
ea91ad4c13
@ -674,7 +674,9 @@ class BaseDatabaseSchemaEditor:
|
||||
self.execute(
|
||||
self.sql_create_pk % {
|
||||
"table": self.quote_name(model._meta.db_table),
|
||||
"name": self.quote_name(self._create_index_name(model, [new_field.column], suffix="_pk")),
|
||||
"name": self.quote_name(
|
||||
self._create_index_name(model._meta.db_table, [new_field.column], suffix="_pk")
|
||||
),
|
||||
"columns": self.quote_name(new_field.column),
|
||||
}
|
||||
)
|
||||
@ -711,7 +713,9 @@ class BaseDatabaseSchemaEditor:
|
||||
self.execute(
|
||||
self.sql_create_check % {
|
||||
"table": self.quote_name(model._meta.db_table),
|
||||
"name": self.quote_name(self._create_index_name(model, [new_field.column], suffix="_check")),
|
||||
"name": self.quote_name(
|
||||
self._create_index_name(model._meta.db_table, [new_field.column], suffix="_check")
|
||||
),
|
||||
"column": self.quote_name(new_field.column),
|
||||
"check": new_db_params['check'],
|
||||
}
|
||||
@ -824,14 +828,14 @@ class BaseDatabaseSchemaEditor:
|
||||
new_field.remote_field.through._meta.get_field(new_field.m2m_field_name()),
|
||||
)
|
||||
|
||||
def _create_index_name(self, model, column_names, suffix=""):
|
||||
def _create_index_name(self, table_name, column_names, suffix=""):
|
||||
"""
|
||||
Generate a unique name for an index/unique constraint.
|
||||
|
||||
The name is divided into 3 parts: the table name, the column names,
|
||||
and a unique digest and suffix.
|
||||
"""
|
||||
table_name = strip_quotes(model._meta.db_table)
|
||||
table_name = strip_quotes(table_name)
|
||||
hash_data = [table_name] + list(column_names)
|
||||
hash_suffix_part = '%s%s' % (self._digest(*hash_data), suffix)
|
||||
max_length = self.connection.ops.max_name_length() or 200
|
||||
@ -876,7 +880,7 @@ class BaseDatabaseSchemaEditor:
|
||||
sql_create_index = sql or self.sql_create_index
|
||||
return sql_create_index % {
|
||||
"table": self.quote_name(model._meta.db_table),
|
||||
"name": self.quote_name(self._create_index_name(model, columns, suffix=suffix)),
|
||||
"name": self.quote_name(self._create_index_name(model._meta.db_table, columns, suffix=suffix)),
|
||||
"using": "",
|
||||
"columns": ", ".join(self.quote_name(column) for column in columns),
|
||||
"extra": tablespace_sql,
|
||||
@ -933,7 +937,7 @@ class BaseDatabaseSchemaEditor:
|
||||
|
||||
return self.sql_create_fk % {
|
||||
"table": self.quote_name(from_table),
|
||||
"name": self.quote_name(self._create_index_name(model, [from_column], suffix=suffix)),
|
||||
"name": self.quote_name(self._create_index_name(model._meta.db_table, [from_column], suffix=suffix)),
|
||||
"column": self.quote_name(from_column),
|
||||
"to_table": self.quote_name(to_table),
|
||||
"to_column": self.quote_name(to_column),
|
||||
@ -943,7 +947,7 @@ class BaseDatabaseSchemaEditor:
|
||||
def _create_unique_sql(self, model, columns):
|
||||
return self.sql_create_unique % {
|
||||
"table": self.quote_name(model._meta.db_table),
|
||||
"name": self.quote_name(self._create_index_name(model, columns, suffix="_uniq")),
|
||||
"name": self.quote_name(self._create_index_name(model._meta.db_table, columns, suffix="_uniq")),
|
||||
"columns": ", ".join(self.quote_name(column) for column in columns),
|
||||
}
|
||||
|
||||
|
@ -111,7 +111,7 @@ class DatabaseSchemaEditor(BaseDatabaseSchemaEditor):
|
||||
(old_type.startswith('varchar') and not new_type.startswith('varchar')) or
|
||||
(old_type.startswith('text') and not new_type.startswith('text'))
|
||||
):
|
||||
index_name = self._create_index_name(model, [old_field.column], suffix='_like')
|
||||
index_name = self._create_index_name(model._meta.db_table, [old_field.column], suffix='_like')
|
||||
self.execute(self._delete_constraint_sql(self.sql_delete_index, model, index_name))
|
||||
|
||||
super()._alter_field(
|
||||
@ -127,5 +127,5 @@ class DatabaseSchemaEditor(BaseDatabaseSchemaEditor):
|
||||
|
||||
# Removed an index? Drop any PostgreSQL-specific indexes.
|
||||
if old_field.unique and not (new_field.db_index or new_field.unique):
|
||||
index_to_remove = self._create_index_name(model, [old_field.column], suffix='_like')
|
||||
index_to_remove = self._create_index_name(model._meta.db_table, [old_field.column], suffix='_like')
|
||||
self.execute(self._delete_constraint_sql(self.sql_delete_index, model, index_to_remove))
|
||||
|
@ -321,6 +321,9 @@ backends.
|
||||
* The first argument of ``SchemaEditor._alter_column_type_sql()`` is now
|
||||
``model`` rather than ``table``.
|
||||
|
||||
* The first argument of ``SchemaEditor._create_index_name()`` is now
|
||||
``table_name`` rather than ``model``.
|
||||
|
||||
Dropped support for Oracle 11.2
|
||||
-------------------------------
|
||||
|
||||
|
@ -19,7 +19,7 @@ class SchemaIndexesTests(TestCase):
|
||||
"""
|
||||
with connection.schema_editor() as editor:
|
||||
index_name = editor._create_index_name(
|
||||
model=Article,
|
||||
table_name=Article._meta.db_table,
|
||||
column_names=("c1",),
|
||||
suffix="123",
|
||||
)
|
||||
@ -35,7 +35,7 @@ class SchemaIndexesTests(TestCase):
|
||||
long_name = 'l%sng' % ('o' * 100)
|
||||
with connection.schema_editor() as editor:
|
||||
index_name = editor._create_index_name(
|
||||
model=Article,
|
||||
table_name=Article._meta.db_table,
|
||||
column_names=('c1', 'c2', long_name),
|
||||
suffix='ix',
|
||||
)
|
||||
@ -56,7 +56,7 @@ class SchemaIndexesTests(TestCase):
|
||||
# Ensure the index name is properly quoted
|
||||
self.assertIn(
|
||||
connection.ops.quote_name(
|
||||
editor._create_index_name(Article, ['headline', 'pub_date'], suffix='_idx')
|
||||
editor._create_index_name(Article._meta.db_table, ['headline', 'pub_date'], suffix='_idx')
|
||||
),
|
||||
index_sql[0]
|
||||
)
|
||||
|
@ -1640,7 +1640,7 @@ class SchemaTests(TransactionTestCase):
|
||||
author_index_name = index.name
|
||||
with connection.schema_editor() as editor:
|
||||
db_index_name = editor._create_index_name(
|
||||
model=AuthorWithIndexedName,
|
||||
table_name=AuthorWithIndexedName._meta.db_table,
|
||||
column_names=('name',),
|
||||
)
|
||||
if connection.features.uppercases_column_names:
|
||||
|
Loading…
Reference in New Issue
Block a user