From 45a334e38c1baab34d3195c899cb9ca617fb52a7 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Fri, 1 May 2020 20:30:18 -0400 Subject: Handle non-string, non column expression in index for deferred attach Fixed issue where an :class:`.Index` that is deferred in being associated with a table, such as as when it contains a :class:`.Column` that is not associated with any :class:`.Table` yet, would fail to attach correctly if it also contained a non table-oriented expession. Fixes: #5298 Change-Id: I0111c400f6bd4a9f31bf00a9957816c7a3fac783 --- lib/sqlalchemy/sql/schema.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'lib/sqlalchemy/sql/schema.py') diff --git a/lib/sqlalchemy/sql/schema.py b/lib/sqlalchemy/sql/schema.py index eddd62d65..b7ac16b0a 100644 --- a/lib/sqlalchemy/sql/schema.py +++ b/lib/sqlalchemy/sql/schema.py @@ -2807,7 +2807,6 @@ class ColumnCollectionMixin(object): cols_w_table = [c for c in col_objs if isinstance(c.table, Table)] cols_wo_table = set(col_objs).difference(cols_w_table) - if cols_wo_table: # feature #3341 - place event listeners for Column objects # such that when all those cols are attached, we autoattach. @@ -2815,7 +2814,9 @@ class ColumnCollectionMixin(object): # issue #3411 - don't do the per-column auto-attach if some of the # columns are specified as strings. - has_string_cols = set(self._pending_colargs).difference(col_objs) + has_string_cols = set( + c for c in self._pending_colargs if c is not None + ).difference(col_objs) if not has_string_cols: def _col_attached(column, table): -- cgit v1.2.1