def test_change_deleted_column_type_to_id_type_custom(self): table_name = 'abc' table = Table(table_name, self.meta, Column('id', Integer, primary_key=True), Column('foo', CustomType), Column('deleted', Boolean)) table.create() # reflection of custom types has been fixed upstream if SA_VERSION < (0, 9, 0): self.assertRaises(exception.ColumnError, utils.change_deleted_column_type_to_id_type, self.engine, table_name) fooColumn = Column('foo', CustomType()) utils.change_deleted_column_type_to_id_type(self.engine, table_name, foo=fooColumn) table = utils.get_table(self.engine, table_name) # NOTE(boris-42): There is no way to check has foo type CustomType. # but sqlalchemy will set it to NullType. This has # been fixed upstream in recent SA versions if SA_VERSION < (0, 9, 0): self.assertTrue(isinstance(table.c.foo.type, NullType)) self.assertTrue(isinstance(table.c.deleted.type, Integer))
def test_change_deleted_column_type_does_not_drop_index(self): table_name = 'abc' indexes = { 'idx_a_deleted': ['a', 'deleted'], 'idx_b_deleted': ['b', 'deleted'], 'idx_a': ['a'] } index_instances = [ Index(name, *columns) for name, columns in six.iteritems(indexes) ] table = Table(table_name, self.meta, Column('id', Integer, primary_key=True), Column('a', String(255)), Column('b', String(255)), Column('deleted', Boolean), *index_instances) table.create() utils.change_deleted_column_type_to_id_type(self.engine, table_name) utils.change_deleted_column_type_to_boolean(self.engine, table_name) insp = reflection.Inspector.from_engine(self.engine) real_indexes = insp.get_indexes(table_name) self.assertEqual(len(real_indexes), 3) for index in real_indexes: name = index['name'] self.assertIn(name, indexes) self.assertEqual(set(index['column_names']), set(indexes[name]))
def test_change_deleted_column_type_to_id_type_custom(self): table_name = 'abc' table = Table(table_name, self.meta, Column('id', Integer, primary_key=True), Column('foo', CustomType), Column('deleted', Boolean)) table.create() # reflection of custom types has been fixed upstream if SA_VERSION < (0, 9, 0): self.assertRaises(exception.ColumnError, utils.change_deleted_column_type_to_id_type, self.engine, table_name) fooColumn = Column('foo', CustomType()) utils.change_deleted_column_type_to_id_type(self.engine, table_name, foo=fooColumn) table = utils.get_table(self.engine, table_name) # NOTE(boris-42): There is no way to check has foo type CustomType. # but sqlalchemy will set it to NullType. This has # been fixed upstream in recent SA versions if SA_VERSION < (0, 9, 0): self.assertTrue(isinstance(table.c.foo.type, NullType)) self.assertTrue(isinstance(table.c.deleted.type, Integer))
def test_change_deleted_column_type_does_not_drop_index(self): table_name = 'abc' indexes = { 'idx_a_deleted': ['a', 'deleted'], 'idx_b_deleted': ['b', 'deleted'], 'idx_a': ['a'] } index_instances = [Index(name, *columns) for name, columns in six.iteritems(indexes)] table = Table(table_name, self.meta, Column('id', Integer, primary_key=True), Column('a', String(255)), Column('b', String(255)), Column('deleted', Boolean), *index_instances) table.create() utils.change_deleted_column_type_to_id_type(self.engine, table_name) utils.change_deleted_column_type_to_boolean(self.engine, table_name) insp = reflection.Inspector.from_engine(self.engine) real_indexes = insp.get_indexes(table_name) self.assertEqual(len(real_indexes), 3) for index in real_indexes: name = index['name'] self.assertIn(name, indexes) self.assertEqual(set(index['column_names']), set(indexes[name]))
def test_change_deleted_column_type_does_not_drop_index(self): table_name = "abc" indexes = {"idx_a_deleted": ["a", "deleted"], "idx_b_deleted": ["b", "deleted"], "idx_a": ["a"]} index_instances = [Index(name, *columns) for name, columns in six.iteritems(indexes)] table = Table( table_name, self.meta, Column("id", Integer, primary_key=True), Column("a", String(255)), Column("b", String(255)), Column("deleted", Boolean), *index_instances ) table.create() utils.change_deleted_column_type_to_id_type(self.engine, table_name) utils.change_deleted_column_type_to_boolean(self.engine, table_name) insp = reflection.Inspector.from_engine(self.engine) real_indexes = insp.get_indexes(table_name) self.assertEqual(len(real_indexes), 3) for index in real_indexes: name = index["name"] self.assertIn(name, indexes) self.assertEqual(set(index["column_names"]), set(indexes[name]))
def test_change_deleted_column_type_to_id_type_string(self): table_name = "abc" table = Table(table_name, self.meta, Column("id", String(255), primary_key=True), Column("deleted", Boolean)) table.create() utils.change_deleted_column_type_to_id_type(self.engine, table_name) table = utils.get_table(self.engine, table_name) self.assertTrue(isinstance(table.c.deleted.type, String))
def test_change_deleted_column_type_to_id_type_string(self): table_name = 'abc' table = Table(table_name, self.meta, Column('id', String(255), primary_key=True), Column('deleted', Boolean)) table.create() utils.change_deleted_column_type_to_id_type(self.engine, table_name) table = utils.get_table(self.engine, table_name) self.assertTrue(isinstance(table.c.deleted.type, String))
def test_change_deleted_column_type_to_id_type_integer(self): table_name = 'abc' table = Table(table_name, self.meta, Column('id', Integer, primary_key=True), Column('deleted', Boolean)) table.create() utils.change_deleted_column_type_to_id_type(self.engine, table_name) table = utils.get_table(self.engine, table_name) self.assertTrue(isinstance(table.c.deleted.type, Integer))
def test_change_deleted_column_type_to_id_type_string(self): table_name = 'abc' for engine in self.engines.values(): meta = MetaData() meta.bind = engine table = Table(table_name, meta, Column('id', String(255), primary_key=True), Column('deleted', Boolean)) table.create() utils.change_deleted_column_type_to_id_type(engine, table_name) table = utils.get_table(engine, table_name) self.assertTrue(isinstance(table.c.deleted.type, String))
def test_change_deleted_column_type_to_id_type_string(self): table_name = 'abc' for engine in self.engines.values(): meta = MetaData() meta.bind = engine table = Table(table_name, meta, Column('id', String(255), primary_key=True), Column('deleted', Boolean)) table.create() utils.change_deleted_column_type_to_id_type(engine, table_name) table = utils.get_table(engine, table_name) self.assertTrue(isinstance(table.c.deleted.type, String))