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
This commit is contained in:
parent
942e03b2b1
commit
7bb74f70e9
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user