summaryrefslogtreecommitdiff
path: root/contrib/ast-db-manage/config/versions/4c573e7135bd_fix_tos_field_types.py
diff options
context:
space:
mode:
authorGeorge Joseph <george.joseph@fairview5.com>2016-03-01 19:03:04 -0700
committerGeorge Joseph <george.joseph@fairview5.com>2016-03-02 15:42:01 -0700
commitb8b7c2e4280a0cd354c79896b5a38091ef718849 (patch)
tree1a35f39004474398905ceee6d63c8b36333427bd /contrib/ast-db-manage/config/versions/4c573e7135bd_fix_tos_field_types.py
parentd0b26c3133e831e915990fd806257d9ef07c508b (diff)
alembic: Fix downgrade and tweak for sqlite
Downgrade had a few issues. First there was an errant 'update' statement in add_auto_dtmf_mode that looks like it was a copy/paste error. Second, we weren't cleaning up the ENUMs so subsequent upgrades on postgres failed because the types already existed. For sqlite... sqlite doesn't support ALTER or DROP COLUMN directly. Fortunately alembic batch_operations takes care of this for us if we use it so the alter and drops were converted to use batch operations. Here's an example downgrade: with op.batch_alter_table('ps_endpoints') as batch_op: batch_op.drop_column('tos_audio') batch_op.drop_column('tos_video') batch_op.add_column(sa.Column('tos_audio', yesno_values)) batch_op.add_column(sa.Column('tos_video', yesno_values)) batch_op.drop_column('cos_audio') batch_op.drop_column('cos_video') batch_op.add_column(sa.Column('cos_audio', yesno_values)) batch_op.add_column(sa.Column('cos_video', yesno_values)) with op.batch_alter_table('ps_transports') as batch_op: batch_op.drop_column('tos') batch_op.add_column(sa.Column('tos', yesno_values)) # Can't cast integers to YESNO_VALUES, so dropping and adding is required batch_op.drop_column('cos') batch_op.add_column(sa.Column('cos', yesno_values)) Upgrades from base to head and downgrades from head to base were tested repeatedly for postgresql, mysql/mariadb, and sqlite3. Change-Id: I862b0739eb3fd45ec3412dcc13c2340e1b7baef8
Diffstat (limited to 'contrib/ast-db-manage/config/versions/4c573e7135bd_fix_tos_field_types.py')
-rwxr-xr-xcontrib/ast-db-manage/config/versions/4c573e7135bd_fix_tos_field_types.py54
1 files changed, 27 insertions, 27 deletions
diff --git a/contrib/ast-db-manage/config/versions/4c573e7135bd_fix_tos_field_types.py b/contrib/ast-db-manage/config/versions/4c573e7135bd_fix_tos_field_types.py
index aefddd12e..d9bbf8977 100755
--- a/contrib/ast-db-manage/config/versions/4c573e7135bd_fix_tos_field_types.py
+++ b/contrib/ast-db-manage/config/versions/4c573e7135bd_fix_tos_field_types.py
@@ -19,43 +19,43 @@ YESNO_NAME = 'yesno_values'
YESNO_VALUES = ['yes', 'no']
def upgrade():
- op.alter_column('ps_endpoints', 'tos_audio',
+ with op.batch_alter_table('ps_endpoints') as batch_op:
+ batch_op.alter_column('tos_audio',
type_=sa.String(10))
- op.alter_column('ps_endpoints', 'tos_video',
+ batch_op.alter_column('tos_video',
type_=sa.String(10))
- op.alter_column('ps_transports', 'tos',
+ batch_op.drop_column('cos_audio')
+ batch_op.drop_column('cos_video')
+ batch_op.add_column(sa.Column('cos_audio', sa.Integer))
+ batch_op.add_column(sa.Column('cos_video', sa.Integer))
+
+ with op.batch_alter_table('ps_transports') as batch_op:
+ batch_op.alter_column('tos',
type_=sa.String(10))
# Can't cast YENO_VALUES to Integers, so dropping and adding is required
- op.drop_column('ps_endpoints', 'cos_audio')
- op.drop_column('ps_endpoints', 'cos_video')
- op.drop_column('ps_transports', 'cos')
-
- op.add_column('ps_endpoints', sa.Column('cos_audio', sa.Integer))
- op.add_column('ps_endpoints', sa.Column('cos_video', sa.Integer))
- op.add_column('ps_transports', sa.Column('cos', sa.Integer))
- pass
+ batch_op.drop_column('cos')
+ batch_op.add_column(sa.Column('cos', sa.Integer))
def downgrade():
yesno_values = ENUM(*YESNO_VALUES, name=YESNO_NAME, create_type=False)
# Can't cast string to YESNO_VALUES, so dropping and adding is required
- op.drop_column('ps_endpoints', 'tos_audio')
- op.drop_column('ps_endpoints', 'tos_video')
- op.drop_column('ps_transports', 'tos')
-
- op.add_column('ps_endpoints', sa.Column('tos_audio', yesno_values))
- op.add_column('ps_endpoints', sa.Column('tos_video', yesno_values))
- op.add_column('ps_transports', sa.Column('tos', yesno_values))
-
+ with op.batch_alter_table('ps_endpoints') as batch_op:
+ batch_op.drop_column('tos_audio')
+ batch_op.drop_column('tos_video')
+ batch_op.add_column(sa.Column('tos_audio', yesno_values))
+ batch_op.add_column(sa.Column('tos_video', yesno_values))
+ batch_op.drop_column('cos_audio')
+ batch_op.drop_column('cos_video')
+ batch_op.add_column(sa.Column('cos_audio', yesno_values))
+ batch_op.add_column(sa.Column('cos_video', yesno_values))
+
+ with op.batch_alter_table('ps_transports') as batch_op:
+ batch_op.drop_column('tos')
+ batch_op.add_column(sa.Column('tos', yesno_values))
# Can't cast integers to YESNO_VALUES, so dropping and adding is required
- op.drop_column('ps_endpoints', 'cos_audio')
- op.drop_column('ps_endpoints', 'cos_video')
- op.drop_column('ps_transports', 'cos')
-
- op.add_column('ps_endpoints', sa.Column('cos_audio', yesno_values))
- op.add_column('ps_endpoints', sa.Column('cos_video', yesno_values))
- op.add_column('ps_transports', sa.Column('cos', yesno_values))
- pass
+ batch_op.drop_column('cos')
+ batch_op.add_column(sa.Column('cos', yesno_values))