summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Riedemann <mriedem@us.ibm.com>2014-07-18 11:42:38 -0700
committerMatt Riedemann <mriedem@us.ibm.com>2014-08-04 07:34:08 -0700
commit7bb74f70e9d239a488e0c909c28b4131dbfd5067 (patch)
tree3b501a3079e5c7653bfe841d623c2e0fcc051dd9
parent942e03b2b19f38ea56803221e30f1cc0b461c4b6 (diff)
downloadsqalchemy-migrate-7bb74f70e9d239a488e0c909c28b4131dbfd5067.tar.gz
Fix ibmdb2 unique constraint handling for sqlalchemy 0.9
The ibmdb2 unique constraint code was accessing the private _all_cols member var in iterating over columns which breaks in sqlalchemy 0.9 so fix up the code to not use internals of sqlalchemy. UniqueConstraint in sqlalchemy extends ColumnCollectionConstraint which implements __iter__ to generate a tuple of the columns in the constraint, so we just iterate over the constraint as the fix. This is based on a patch from Rahul Priyadarshi in ibm-db-sa issue 158: https://code.google.com/p/ibm-db/issues/detail?id=158 Co-Authored-By: Rahul Priyadarshi <rahul.priyadarshi@in.ibm.com> Change-Id: I0f06f6314c382e83573d762abe5981db0a02a83a
-rw-r--r--migrate/changeset/databases/ibmdb2.py6
1 files changed, 3 insertions, 3 deletions
diff --git a/migrate/changeset/databases/ibmdb2.py b/migrate/changeset/databases/ibmdb2.py
index fe28512..e583bd4 100644
--- a/migrate/changeset/databases/ibmdb2.py
+++ b/migrate/changeset/databases/ibmdb2.py
@@ -262,13 +262,13 @@ class IBMDBConstraintGenerator(ansisql.ANSIConstraintGenerator):
if (isinstance(constraint, UniqueConstraint) and
is_unique_constraint_with_null_columns_supported(
self.dialect)):
- for column in constraint.columns._all_cols:
+ for column in constraint:
if column.nullable:
constraint.exclude_nulls = True
break
if getattr(constraint, 'exclude_nulls', None):
index = Index(constraint.name,
- *(column for column in constraint.columns._all_cols),
+ *(column for column in constraint),
unique=True)
sql = self.process(CreateIndex(index))
sql += ' EXCLUDE NULL KEYS'
@@ -285,7 +285,7 @@ class IBMDBConstraintDropper(ansisql.ANSIConstraintDropper,
if (isinstance(constraint, UniqueConstraint) and
is_unique_constraint_with_null_columns_supported(
self.dialect)):
- for column in constraint.columns._all_cols:
+ for column in constraint:
if column.nullable:
constraint.exclude_nulls = True
break