**** CubicPower OpenStack Study ****
def upgrade(migrate_engine):
meta = MetaData()
meta.bind = migrate_engine
t = Table(TABLE_NAME, meta, autoload=True)
default = text('0') if migrate_engine.name == 'sqlite' else text('false')
preserve_ephemeral_col = Column(COLUMN_NAME, Boolean,
server_default=default)
t.create_column(preserve_ephemeral_col)
**** CubicPower OpenStack Study ****
def downgrade(migrate_engine):
meta = MetaData()
meta.bind = migrate_engine
t = Table(TABLE_NAME, meta, autoload=True)
# NOTE(rpodolyaka): SQLite doesn't have native BOOLEAN type, so it's
# emulated by adding a CHECK constraint. We must
# explicitly omit that constraint here so we don't
# receive 'no such column' error when dropping the
# column
if migrate_engine.name == 'sqlite':
t.constraints = set([
c
for c in t.constraints
if not (hasattr(c, 'sqltext') and COLUMN_NAME in str(c.sqltext))
])
t.drop_column(COLUMN_NAME)