Example #1
0
    def test_drop_index(self):
        meta = sqlalchemy.MetaData()
        index = sqlalchemy.Index('a_id_idx', 'id')
        table = _table('a', meta, sqlalchemy.Column('id', sqlalchemy.Integer),
                       index)
        meta.create_all(self.engine)

        op = sa_migration.DropIndex(index)
        op.execute(self.ddlop)

        table = oslodbutils.get_table(self.engine, 'a')
        self.assertNotIn('a_id_idx', [i.name for i in table.indexes])
Example #2
0
    def test_remove_index_after_add(self):
        exist_meta = sqlalchemy.MetaData()
        oldtbl = sqlalchemy.Table('a', exist_meta,
                                  sqlalchemy.Column('id', sqlalchemy.Integer),
                                  sqlalchemy.Column('foo', sqlalchemy.Integer))

        model_meta = sqlalchemy.MetaData()
        newtbl = sqlalchemy.Table('a', model_meta,
                                  sqlalchemy.Column('id', sqlalchemy.Integer))

        old_index = sqlalchemy.Index('a_id_idx', oldtbl.c.id, oldtbl.c.foo)
        new_index = sqlalchemy.Index('a_id_idx', newtbl.c.id)

        dropidx = sa_migration.DropIndex(old_index)
        addidx = sa_migration.AddIndex(new_index, {})

        scheduler = sa_migration.Scheduler()
        scheduler.add(addidx)
        scheduler.add(dropidx)

        expand, migrate, contract = scheduler.schedule()
        self.assertEqual([], expand)
        self.assertEqual([dropidx, addidx], migrate)
        self.assertEqual([], contract)