Fixed #29778 -- Fixed quoting of unique index names.
Regression in 3b429c9673
.
This commit is contained in:
parent
8624459586
commit
d1d5c97bc2
|
@ -1013,11 +1013,13 @@ class BaseDatabaseSchemaEditor:
|
||||||
)
|
)
|
||||||
|
|
||||||
def _create_unique_sql(self, model, columns):
|
def _create_unique_sql(self, model, columns):
|
||||||
|
def create_unique_name(*args, **kwargs):
|
||||||
|
return self.quote_name(self._create_index_name(*args, **kwargs))
|
||||||
table = model._meta.db_table
|
table = model._meta.db_table
|
||||||
return Statement(
|
return Statement(
|
||||||
self.sql_create_unique,
|
self.sql_create_unique,
|
||||||
table=Table(table, self.quote_name),
|
table=Table(table, self.quote_name),
|
||||||
name=IndexName(table, columns, '_uniq', self._create_index_name),
|
name=IndexName(table, columns, '_uniq', create_unique_name),
|
||||||
columns=Columns(table, columns, self.quote_name),
|
columns=Columns(table, columns, self.quote_name),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -19,3 +19,6 @@ Bugfixes
|
||||||
(:ticket:`29755`).
|
(:ticket:`29755`).
|
||||||
|
|
||||||
* Added compatibility for ``cx_Oracle`` 7 (:ticket:`29759`).
|
* Added compatibility for ``cx_Oracle`` 7 (:ticket:`29759`).
|
||||||
|
|
||||||
|
* Fixed a regression in Django 2.0 where unique index names weren't quoted
|
||||||
|
(:ticket:`29778`).
|
||||||
|
|
|
@ -1558,6 +1558,18 @@ class SchemaTests(TransactionTestCase):
|
||||||
TagUniqueRename.objects.create(title="bar", slug2="foo")
|
TagUniqueRename.objects.create(title="bar", slug2="foo")
|
||||||
Tag.objects.all().delete()
|
Tag.objects.all().delete()
|
||||||
|
|
||||||
|
def test_unique_name_quoting(self):
|
||||||
|
old_table_name = TagUniqueRename._meta.db_table
|
||||||
|
try:
|
||||||
|
with connection.schema_editor() as editor:
|
||||||
|
editor.create_model(TagUniqueRename)
|
||||||
|
editor.alter_db_table(TagUniqueRename, old_table_name, 'unique-table')
|
||||||
|
TagUniqueRename._meta.db_table = 'unique-table'
|
||||||
|
# This fails if the unique index name isn't quoted.
|
||||||
|
editor.alter_unique_together(TagUniqueRename, [], (('title', 'slug2'),))
|
||||||
|
finally:
|
||||||
|
TagUniqueRename._meta.db_table = old_table_name
|
||||||
|
|
||||||
@isolate_apps('schema')
|
@isolate_apps('schema')
|
||||||
@unittest.skipIf(connection.vendor == 'sqlite', 'SQLite naively remakes the table on field alteration.')
|
@unittest.skipIf(connection.vendor == 'sqlite', 'SQLite naively remakes the table on field alteration.')
|
||||||
@skipUnlessDBFeature('supports_foreign_keys')
|
@skipUnlessDBFeature('supports_foreign_keys')
|
||||||
|
|
Loading…
Reference in New Issue