diff --git a/alembic/versions/0088_reconcile_models_with_schema.py b/alembic/versions/0088_reconcile_models_with_schema.py index 30020dc..d5b84c2 100644 --- a/alembic/versions/0088_reconcile_models_with_schema.py +++ b/alembic/versions/0088_reconcile_models_with_schema.py @@ -29,13 +29,15 @@ guarantee built from different objects, which is why the two schemas did not line up. The model now declares the constraint and the plain index separately, so it describes what is actually there. No DDL is needed for it. -Also here: four CHECK constraints whose names carry their table prefix TWICE. +Also here: six CHECK constraints whose names carry their table prefix TWICE. `base.py`'s naming convention is `ck_%(table_name)s_%(constraint_name)s`, and unlike the uq/fk/ix entries it applies even to a constraint that already has a -name. Four migrations passed an already-prefixed name, so the convention +name. Six migrations passed an already-prefixed name, so the convention prefixed it again: + ck_external_link_ck_external_link_host + ck_external_link_ck_external_link_status ck_import_settings_ck_import_settings_singleton ck_ml_settings_ck_ml_settings_singleton ck_post_ck_post_translation_override @@ -67,7 +69,17 @@ branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None # (table, doubled name, single-prefix name) +# +# Six, not the four a first read of the migrations turned up. The list that +# settles it is the one extracted from the chain's pg_dump by matching +# `ck_(\w+?)_ck_\1_` — reading the migrations by eye missed external_link +# twice over, in the same way an earlier pass missed a UNIQUE constraint two +# lines above the index it was looking at (see the sha256 note above). DOUBLED_CHECKS = ( + ("external_link", "ck_external_link_ck_external_link_host", + "ck_external_link_host"), + ("external_link", "ck_external_link_ck_external_link_status", + "ck_external_link_status"), ("import_settings", "ck_import_settings_ck_import_settings_singleton", "ck_import_settings_singleton"), ("ml_settings", "ck_ml_settings_ck_ml_settings_singleton",