from sqlalchemy.exc import NoSuchTableError
from sqlalchemy import schema as sa_schema, types as sqltypes
import logging
+from ..compat import get_index_column_names
from .render import _render_server_default
from sqlalchemy.util import OrderedSet
diffs.append(("add_index", meta))
log.info("Detected added index '%s' on %s",
key, ', '.join([
- "'%s'" % y.name for y in meta.expressions
+ "'%s'" % get_index_column_names(meta)
])
)
conn_index = c_objs[key]
# TODO: why don't we just render the DDL here
# so we can compare the string output fully
- conn_exps = [exp.name for exp in conn_index.expressions]
- meta_exps = [exp.name for exp in meta_index.expressions]
+ conn_exps = get_index_column_names(conn_index)
+ meta_exps = get_index_column_names(meta_index)
# convert between both Nones (SQLA ticket #2825) on the metadata
# side and zeroes on the reflection side.
import re
-from ..compat import string_types
+from ..compat import string_types, get_index_column_names
log = logging.getLogger(__name__)
text = "op.create_index('%(name)s', '%(table)s', %(columns)s, unique=%(unique)r%(schema)s%(kwargs)s)" % {
'name': index.name,
'table': index.table,
- 'columns': [exp.name for exp in index.expressions],
+ 'columns': get_index_column_names(index),
'unique': index.unique or False,
'schema': (", schema='%s'" % index.table.schema) if index.table.schema else '',
'kwargs': (', '+', '.join(
import sys
+from sqlalchemy import __version__ as sa_version
if sys.version_info < (2, 6):
raise NotImplementedError("Python 2.6 or greater is required.")
finally:
fp.close()
-
-
try:
exec_ = getattr(compat_builtins, 'exec')
except AttributeError:
def exec_(func_text, globals_, lcl):
exec('exec func_text in globals_, lcl')
+if sa_version >= '0.8.0':
+ def get_index_column_names(idx):
+ return [exp.name for exp in idx.expressions]
+else:
+ def get_index_column_names(idx):
+ return [col.name for col in idx.columns]
+
################################################
# cross-compatible metaclass implementation
# Copyright (c) 2010-2012 Benjamin Peterson