diff options
author | Matt Riedemann <mriedem@us.ibm.com> | 2014-07-18 11:42:38 -0700 |
---|---|---|
committer | Matt Riedemann <mriedem@us.ibm.com> | 2014-08-04 07:34:08 -0700 |
commit | 7bb74f70e9d239a488e0c909c28b4131dbfd5067 (patch) | |
tree | 3b501a3079e5c7653bfe841d623c2e0fcc051dd9 | |
parent | 942e03b2b19f38ea56803221e30f1cc0b461c4b6 (diff) | |
download | sqalchemy-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.py | 6 |
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 |