mirror of
https://github.com/django/django.git
synced 2025-10-23 21:59:11 +00:00
Refs #34058 -- Fixed changing/deleting sequences when altering pre-Django 4.1 auto fields on PostgreSQL.
Thanks Anders Kaseorg for the report. Follow up to19e6efa50b. Regression in2eea361eff.
This commit is contained in:
@@ -1896,14 +1896,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}"')
|
||||
|
||||
Reference in New Issue
Block a user