summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--migrate/changeset/databases/ibmdb2.py36
1 files changed, 30 insertions, 6 deletions
diff --git a/migrate/changeset/databases/ibmdb2.py b/migrate/changeset/databases/ibmdb2.py
index 7b6a3a1..89693e3 100644
--- a/migrate/changeset/databases/ibmdb2.py
+++ b/migrate/changeset/databases/ibmdb2.py
@@ -118,10 +118,28 @@ class IBMDBSchemaChanger(IBMDBSchemaGenerator, ansisql.ANSISchemaChanger):
self.append("RENAME TABLE %s " % self.preparer.format_table(table))
def visit_index(self, index):
- old_name = self.preparer.quote(self._index_identifier(index.name),
- index.quote)
- new_name = self.preparer.quote(self._index_identifier(index.new_name),
- index.quote)
+ if hasattr(self, '_index_identifier'):
+ # SA >= 0.6.5, < 0.8
+ old_name = self.preparer.quote(
+ self._index_identifier(index.name), index.quote)
+ new_name = self.preparer.quote(
+ self._index_identifier(index.new_name), index.quote)
+ else:
+ # SA >= 0.8
+ class NewName(object):
+ """Map obj.name -> obj.new_name"""
+ def __init__(self, index):
+ self.name = index.new_name
+ self._obj = index
+
+ def __getattr__(self, attr):
+ if attr == 'name':
+ return getattr(self, attr)
+ return getattr(self._obj, attr)
+
+ old_name = self._prepared_index_name(index)
+ new_name = self._prepared_index_name(NewName(index))
+
self.append("RENAME INDEX %s TO %s" % (old_name, new_name))
self.execute()
self.append("COMMIT")
@@ -293,8 +311,14 @@ class IBMDBConstraintDropper(ansisql.ANSIConstraintDropper,
constraint.exclude_nulls = True
break
if getattr(constraint, 'exclude_nulls', None):
- index_name = self.preparer.quote(
- self._index_identifier(constraint.name), constraint.quote)
+ if hasattr(self, '_index_identifier'):
+ # SA >= 0.6.5, < 0.8
+ index_name = self.preparer.quote(
+ self._index_identifier(constraint.name),
+ constraint.quote)
+ else:
+ # SA >= 0.8
+ index_name = self._prepared_index_name(constraint)
sql = 'DROP INDEX %s ' % index_name
else:
sql = self.process(DropConstraint(constraint,