From: Mike Bayer Date: Sat, 9 Mar 2013 23:05:21 +0000 (-0500) Subject: - auto-append for CheckConstraint should skip table if the expression is against X-Git-Tag: rel_0_8_0~3^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6be35e3898c7a7726744dc2590598e0a5a20c76b;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - auto-append for CheckConstraint should skip table if the expression is against a lower-case-t table --- diff --git a/lib/sqlalchemy/schema.py b/lib/sqlalchemy/schema.py index 9d14bd3cab..01a763ca1b 100644 --- a/lib/sqlalchemy/schema.py +++ b/lib/sqlalchemy/schema.py @@ -2025,7 +2025,7 @@ class ColumnCollectionMixin(object): for c in columns] if self._pending_colargs and \ isinstance(self._pending_colargs[0], Column) and \ - self._pending_colargs[0].table is not None: + isinstance(self._pending_colargs[0].table, Table): self._set_parent_with_dispatch(self._pending_colargs[0].table) def _set_parent(self, table): @@ -2121,7 +2121,7 @@ class CheckConstraint(Constraint): elif _autoattach: cols = sqlutil.find_columns(self.sqltext) tables = set([c.table for c in cols - if c.table is not None]) + if isinstance(c.table, Table)]) if len(tables) == 1: self._set_parent_with_dispatch( tables.pop()) diff --git a/test/sql/test_constraints.py b/test/sql/test_constraints.py index ab294e1ebb..026095c3bd 100644 --- a/test/sql/test_constraints.py +++ b/test/sql/test_constraints.py @@ -7,6 +7,7 @@ from sqlalchemy import testing from sqlalchemy.testing import engines from sqlalchemy.testing import eq_ from sqlalchemy.testing.assertsql import AllOf, RegexSQL, ExactSQL, CompiledSQL +from sqlalchemy.sql import table, column class ConstraintGenTest(fixtures.TestBase, AssertsExecutionResults): __dialect__ = 'default' @@ -753,6 +754,18 @@ class ConstraintAPITest(fixtures.TestBase): c = Index('foo', t.c.a) assert c in t.indexes + def test_auto_append_lowercase_table(self): + t = table('t', column('a')) + t2 = table('t2', column('a')) + for c in ( + UniqueConstraint(t.c.a), + CheckConstraint(t.c.a > 5), + ForeignKeyConstraint([t.c.a], [t2.c.a]), + PrimaryKeyConstraint(t.c.a), + Index('foo', t.c.a) + ): + assert True + def test_tometadata_ok(self): m = MetaData()