From 490efad97a00f1473251b0fce1f76d3b5ce2b3d4 Mon Sep 17 00:00:00 2001 From: Rebecca Law Date: Fri, 23 Apr 2021 15:08:23 +0100 Subject: [PATCH] To avoid any table locks and contention on the production database we are going to add the unique index concurrently. This only works if we execute a commit first. --- .../versions/0351_unique_key_annual_billing.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/migrations/versions/0351_unique_key_annual_billing.py b/migrations/versions/0351_unique_key_annual_billing.py index 2f814b815..288b18395 100644 --- a/migrations/versions/0351_unique_key_annual_billing.py +++ b/migrations/versions/0351_unique_key_annual_billing.py @@ -5,16 +5,28 @@ Revises: 0350_update_rates Create Date: 2021-04-12 09:02:45.098875 """ +import os + from alembic import op revision = '0351_unique_key_annual_billing' down_revision = '0350_update_rates' +environment = os.environ['NOTIFY_ENVIRONMENT'] + def upgrade(): - op.create_unique_constraint( - 'uix_service_id_financial_year_start', 'annual_billing', ['service_id', 'financial_year_start'] - ) + index = """ + CREATE UNIQUE INDEX CONCURRENTLY uix_service_id_financial_year_start + ON annual_billing (service_id, financial_year_start) + """ + constraint = """ + ALTER TABLE annual_BILLING add constraint uix_service_id_financial_year_start + UNIQUE USING INDEX uix_service_id_financial_year_start + """ + op.execute('COMMIT') + op.execute(index) + op.execute(constraint) def downgrade():