def _get_index_column_names(idx, autogen_context=None):
if compat.sqla_08:
- return [repr(getattr(exp, "name", None))
- if isinstance(exp, sql.schema.Column)
- else _render_potential_expr(exp, autogen_context)
- for exp in idx.expressions]
+ return [getattr(exp, "name", None) for exp in idx.expressions]
else:
- return [repr(getattr(col, "name", None)) for col in idx.columns]
+ return [getattr(col, "name", None) for col in idx.columns]
def _compare_indexes_and_uniques(schema, tname, object_filters, conn_table,
metadata_table, diffs, autogen_context, inspector):
text += ")"
return text
+def _get_index_rendered_expressions(idx, autogen_context=None):
+ if compat.sqla_08:
+ return [repr(getattr(exp, "name", None))
+ if isinstance(exp, sql.schema.Column)
+ else _render_potential_expr(exp, autogen_context)
+ for exp in idx.expressions]
+ else:
+ return [repr(getattr(col, "name", None)) for col in idx.columns]
+
def _add_index(index, autogen_context):
"""
Generate Alembic operations for the CREATE INDEX of an
:class:`~sqlalchemy.schema.Index` instance.
"""
- from .compare import _get_index_column_names
-
text = "%(prefix)screate_index(%(name)r, '%(table)s', [%(columns)s], "\
"unique=%(unique)r%(schema)s%(kwargs)s)" % {
'prefix': _alembic_autogenerate_prefix(autogen_context),
'name': _render_gen_name(autogen_context, index.name),
'table': index.table.name,
- 'columns': ", ".join(_get_index_column_names(index, autogen_context)),
+ 'columns': ", ".join(_get_index_rendered_expressions(index, autogen_context)),
'unique': index.unique or False,
'schema': (", schema='%s'" % index.table.schema) if index.table.schema else '',
'kwargs': (', '+', '.join(