summaryrefslogtreecommitdiff
path: root/tests/backends
diff options
context:
space:
mode:
authorHannes Ljungberg <hannes.ljungberg@gmail.com>2021-10-15 22:17:26 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2021-10-18 08:25:23 +0200
commit86971c40909430a798e4e55b140004c4b1fb02ff (patch)
treec0a04010d73086c968ec0bcfe2f7d982ba01d87e /tests/backends
parent0d4e575c96d408e0efb4dfd0cbfc864219776950 (diff)
downloaddjango-86971c40909430a798e4e55b140004c4b1fb02ff.tar.gz
Fixed #33194 -- Fixed migrations when altering a field with functional indexes/unique constraints on SQLite.
This adjusts Expressions.rename_table_references() to only update alias when needed. Regression in 83fcfc9ec8610540948815e127101f1206562ead. Co-authored-by: Simon Charette <charettes@users.noreply.github.com>
Diffstat (limited to 'tests/backends')
-rw-r--r--tests/backends/test_ddl_references.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/backends/test_ddl_references.py b/tests/backends/test_ddl_references.py
index bd4036ee33..ab3ba6ccd2 100644
--- a/tests/backends/test_ddl_references.py
+++ b/tests/backends/test_ddl_references.py
@@ -5,6 +5,7 @@ from django.db.backends.ddl_references import (
from django.db.models import ExpressionList, F
from django.db.models.functions import Upper
from django.db.models.indexes import IndexExpression
+from django.db.models.sql import Query
from django.test import SimpleTestCase, TransactionTestCase
from .models import Person
@@ -229,6 +230,27 @@ class ExpressionsTests(TransactionTestCase):
str(self.expressions),
)
+ def test_rename_table_references_without_alias(self):
+ compiler = Query(Person, alias_cols=False).get_compiler(connection=connection)
+ table = Person._meta.db_table
+ expressions = Expressions(
+ table=table,
+ expressions=ExpressionList(
+ IndexExpression(Upper('last_name')),
+ IndexExpression(F('first_name')),
+ ).resolve_expression(compiler.query),
+ compiler=compiler,
+ quote_value=self.editor.quote_value,
+ )
+ expressions.rename_table_references(table, 'other')
+ self.assertIs(expressions.references_table(table), False)
+ self.assertIs(expressions.references_table('other'), True)
+ expected_str = '(UPPER(%s)), %s' % (
+ self.editor.quote_name('last_name'),
+ self.editor.quote_name('first_name'),
+ )
+ self.assertEqual(str(expressions), expected_str)
+
def test_rename_column_references(self):
table = Person._meta.db_table
self.expressions.rename_column_references(table, 'first_name', 'other')