La modification d'un Enum champ à l'aide d'un Alambic

Comment puis-je ajouter un élément à un champ Enum dans un alambic de la migration lors de l'utilisation d'une version de PostgreSQL âgés de plus de 9.1 (ce qui ajoute de l'ALTER TYPE pour les enums)? Cette DONC, la question, explique le direct, mais je ne suis pas tout à fait sûr de la meilleure façon de le traduire à l'aide de l'alambic.

C'est ce que j'ai:

new_type = sa.Enum('nonexistent_executable', 'output_limit_exceeded',
                   'signal', 'success', 'timed_out', name='status')
old_type = sa.Enum('nonexistent_executable', 'signal', 'success', 'timed_out',
                   name='status')
tcr = sa.sql.table('testcaseresult',
                   sa.Column('status', new_type, nullable=False))


def upgrade():
    op.alter_column('testcaseresult', u'status', type_=new_type,
                    existing_type=old_type)


def downgrade():
    op.execute(tcr.update().where(tcr.c.status==u'output_limit_exceeded')
               .values(status='timed_out'))
    op.alter_column('testcaseresult', u'status', type_=old_type,
                    existing_type=new_type)

Ci-dessus, malheureusement, ne produit ALTER TABLE testcaseresult ALTER COLUMN status TYPE status lors de la mise à niveau, qui consiste essentiellement à ne rien.

InformationsquelleAutor bboe | 2013-02-13