+
+
+class MySQLAutogenRenderTest(TestBase):
+ def setUp(self):
+ ctx_opts = {
+ "sqlalchemy_module_prefix": "sa.",
+ "alembic_module_prefix": "op.",
+ "target_metadata": MetaData(),
+ }
+ context = MigrationContext.configure(
+ dialect_name="mysql", opts=ctx_opts
+ )
+
+ self.autogen_context = api.AutogenContext(context)
+
+ def test_render_add_index_expr_binary(self):
+ m = MetaData()
+ t = Table(
+ "t",
+ m,
+ Column("x", Integer, primary_key=True),
+ Column("y", Integer),
+ )
+ idx = Index("foo_idx", t.c.x > 5)
+
+ eq_ignore_whitespace(
+ autogenerate.render_op_text(
+ self.autogen_context, ops.CreateIndexOp.from_index(idx)
+ ),
+ "op.create_index('foo_idx', 't', "
+ "[sa.literal_column('(x > 5)')], unique=False)",
+ )
+
+ def test_render_add_index_expr_unary(self):
+ m = MetaData()
+ t = Table(
+ "t",
+ m,
+ Column("x", Integer, primary_key=True),
+ Column("y", Integer),
+ )
+ idx1 = Index("foo_idx", -t.c.x)
+ idx2 = Index("foo_idx", t.c.x.desc())
+
+ eq_ignore_whitespace(
+ autogenerate.render_op_text(
+ self.autogen_context, ops.CreateIndexOp.from_index(idx1)
+ ),
+ "op.create_index('foo_idx', 't', "
+ "[sa.literal_column('(-x)')], unique=False)",
+ )
+ eq_ignore_whitespace(
+ autogenerate.render_op_text(
+ self.autogen_context, ops.CreateIndexOp.from_index(idx2)
+ ),
+ "op.create_index('foo_idx', 't', "
+ "[sa.literal_column('x DESC')], unique=False)",
+ )
+
+ def test_render_add_index_expr_func(self):
+ m = MetaData()
+ t = Table(
+ "t",
+ m,
+ Column("x", Integer, primary_key=True),
+ Column("y", Integer, nullable=True),
+ )
+ idx = Index("foo_idx", t.c.x, func.coalesce(t.c.y, 0))
+
+ eq_ignore_whitespace(
+ autogenerate.render_op_text(
+ self.autogen_context, ops.CreateIndexOp.from_index(idx)
+ ),
+ "op.create_index('foo_idx', 't', "
+ "['x', sa.literal_column('(coalesce(y, 0))')], unique=False)",
+ )