From 4edd24841d15ee3bb1533eb6ae7cc57a51f162bf Mon Sep 17 00:00:00 2001 From: Ben Ford <bford@digium.com> Date: Tue, 26 Mar 2019 14:56:37 -0500 Subject: [PATCH] alembic: Fix errors during upgrade head. When trying to upgrade using alembic, a couple different errors kept popping up that prevented the upgrade. An additional parameter was needed when changing the schema for mwi_subscribe_replaces_unsolicited from an integer to an enum. When changing from a string to an enum, the type needed to be cast for postgresql. The other issue was a parameter being used during column creation that did not exist. After fixing the upgrade process, it revealed errors with the downgrade process. One was a variable not being defined in the downgrade function, and the other was tables not existing when using MySQL. This was due to a context check that should have encompassed MySQL, but in the end was not doing so. Change-Id: Ib4d70cf3ce5080023a50be496272a777b55d6c8e --- .../ef7efc2d3964_ps_contacts_add_endpoint_and_modify_.py | 3 ++- .../f3c0b8695b66_taskprocessor_overload_trigger.py | 7 ++++--- .../versions/fe6592859b85_fix_mwi_subscribe_replaces_.py | 4 ++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/contrib/ast-db-manage/config/versions/ef7efc2d3964_ps_contacts_add_endpoint_and_modify_.py b/contrib/ast-db-manage/config/versions/ef7efc2d3964_ps_contacts_add_endpoint_and_modify_.py index 0ac63c83a2..4818185a09 100644 --- a/contrib/ast-db-manage/config/versions/ef7efc2d3964_ps_contacts_add_endpoint_and_modify_.py +++ b/contrib/ast-db-manage/config/versions/ef7efc2d3964_ps_contacts_add_endpoint_and_modify_.py @@ -27,7 +27,8 @@ def upgrade(): op.create_index('ps_contacts_qualifyfreq_exp', 'ps_contacts', ['qualify_frequency', 'expiration_time']) op.create_index('ps_aors_qualifyfreq_contact', 'ps_aors', ['qualify_frequency', 'contact']) def downgrade(): - if op.get_context().bind.dialect.name != 'mssql': + context_name = op.get_context().bind.dialect.name + if context_name != 'mssql' and context_name != 'mysql': op.drop_index('ps_aors_qualifyfreq_contact') op.drop_index('ps_contacts_qualifyfreq_exp') else: diff --git a/contrib/ast-db-manage/config/versions/f3c0b8695b66_taskprocessor_overload_trigger.py b/contrib/ast-db-manage/config/versions/f3c0b8695b66_taskprocessor_overload_trigger.py index 6a5b9b230b..fccda35b57 100644 --- a/contrib/ast-db-manage/config/versions/f3c0b8695b66_taskprocessor_overload_trigger.py +++ b/contrib/ast-db-manage/config/versions/f3c0b8695b66_taskprocessor_overload_trigger.py @@ -28,11 +28,12 @@ def upgrade(): op.add_column('ps_globals', sa.Column('taskprocessor_overload_trigger', sa.Enum(*PJSIP_TASKPROCESSOR_OVERLOAD_TRIGGER_VALUES, - name=PJSIP_TASKPROCESSOR_OVERLOAD_TRIGGER_NAME, - create_type=False))) + name=PJSIP_TASKPROCESSOR_OVERLOAD_TRIGGER_NAME))) def downgrade(): - if op.get_context().bind.dialect.name == 'mssql': + context = op.get_context() + + if context.bind.dialect.name == 'mssql': op.drop_constraint('ck_ps_globals_taskprocessor_overload_trigger_pjsip_taskprocessor_overload_trigger_values', 'ps_globals') op.drop_column('ps_globals', 'taskprocessor_overload_trigger') diff --git a/contrib/ast-db-manage/config/versions/fe6592859b85_fix_mwi_subscribe_replaces_.py b/contrib/ast-db-manage/config/versions/fe6592859b85_fix_mwi_subscribe_replaces_.py index 4ecaaf789f..c0f528a541 100644 --- a/contrib/ast-db-manage/config/versions/fe6592859b85_fix_mwi_subscribe_replaces_.py +++ b/contrib/ast-db-manage/config/versions/fe6592859b85_fix_mwi_subscribe_replaces_.py @@ -34,7 +34,7 @@ def upgrade(): op.alter_column('ps_endpoints', 'mwi_subscribe_replaces_unsolicited', type_=sa.String(5)) op.alter_column('ps_endpoints', 'mwi_subscribe_replaces_unsolicited', - type_=ast_bool_values) + type_=ast_bool_values, postgresql_using='mwi_subscribe_replaces_unsolicited::{0}'.format(AST_BOOL_NAME)) def downgrade(): @@ -55,7 +55,7 @@ def downgrade(): op.alter_column('ps_endpoints', 'mwi_subscribe_replaces_unsolicited', type_=sa.String(5)) op.alter_column('ps_endpoints', 'mwi_subscribe_replaces_unsolicited', - type_=sa.Integer) + type_=sa.Integer, postgresql_using='mwi_subscribe_replaces_unsolicited::Integer') if op.get_context().bind.dialect.name == 'postgresql': ENUM(name=AST_BOOL_NAME).drop(op.get_bind(), checkfirst=False) -- GitLab