]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- auto-append for CheckConstraint should skip table if the expression is against
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 9 Mar 2013 23:05:21 +0000 (18:05 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 9 Mar 2013 23:05:21 +0000 (18:05 -0500)
a lower-case-t table

lib/sqlalchemy/schema.py
test/sql/test_constraints.py

index 9d14bd3cabee59d1c8173b87f0f46d1cdffd19eb..01a763ca1b33843f44dfd4ef8579da0e7039c8ee 100644 (file)
@@ -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())
index ab294e1ebb2390b2a40e5bd1f64fe64d966fdfec..026095c3bd2247def2067103a04163497cf3ec36 100644 (file)
@@ -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()