summaryrefslogtreecommitdiff
path: root/tests/schema
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2022-10-01 07:53:32 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2022-10-01 07:59:28 +0200
commit96c541ecef98e2b93db8eba144be2d8c48e6c2cf (patch)
tree1072b7ffefd0686935dd8c868e041820100f918c /tests/schema
parent7a1675806a37375698df208c00f892cc81afe1b9 (diff)
[4.1.x] Refs #34058 -- Fixed changing/deleting sequences when altering pre-Django 4.1 auto fields on PostgreSQL.
Thanks Anders Kaseorg for the report. Follow up to 19e6efa50b603af325e7f62058364f278596758f. Regression in 2eea361eff58dd98c409c5227064b901f41bd0d6. Backport of bc3b8f152452ba0e41f28baa93c0bf8f39cddb09 from main
Diffstat (limited to 'tests/schema')
-rw-r--r--tests/schema/tests.py18
1 files changed, 17 insertions, 1 deletions
diff --git a/tests/schema/tests.py b/tests/schema/tests.py
index e6cdf563f4..126c03c63c 100644
--- a/tests/schema/tests.py
+++ b/tests/schema/tests.py
@@ -1808,14 +1808,30 @@ class SchemaTests(TransactionTestCase):
new_field.set_attributes_from_name("id")
with connection.schema_editor() as editor:
editor.alter_field(SerialAutoField, old_field, new_field, strict=True)
+ sequence_name = f"{table}_{column}_seq"
with connection.cursor() as cursor:
cursor.execute(
"SELECT data_type FROM pg_sequences WHERE sequencename = %s",
- [f"{table}_{column}_seq"],
+ [sequence_name],
)
row = cursor.fetchone()
sequence_data_type = row[0] if row and row[0] else None
self.assertEqual(sequence_data_type, "bigint")
+ # Rename the column.
+ old_field = new_field
+ new_field = AutoField(primary_key=True)
+ new_field.model = SerialAutoField
+ new_field.set_attributes_from_name("renamed_id")
+ with connection.schema_editor() as editor:
+ editor.alter_field(SerialAutoField, old_field, new_field, strict=True)
+ with connection.cursor() as cursor:
+ cursor.execute(
+ "SELECT data_type FROM pg_sequences WHERE sequencename = %s",
+ [sequence_name],
+ )
+ row = cursor.fetchone()
+ sequence_data_type = row[0] if row and row[0] else None
+ self.assertEqual(sequence_data_type, "integer")
finally:
with connection.cursor() as cursor:
cursor.execute(f'DROP TABLE "{table}"')