From 7bb74f70e9d239a488e0c909c28b4131dbfd5067 Mon Sep 17 00:00:00 2001 From: Matt Riedemann Date: Fri, 18 Jul 2014 11:42:38 -0700 Subject: 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 Change-Id: I0f06f6314c382e83573d762abe5981db0a02a83a --- migrate/changeset/databases/ibmdb2.py | 6 +++--- 1 file 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 -- cgit v1.2.1