]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Fixed bug where :meth:`.Table.tometadata` would fail if a
authorMike Bayer <mike_mp@zzzcomputing.com>
Sun, 27 Jan 2013 16:23:59 +0000 (11:23 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sun, 27 Jan 2013 16:23:59 +0000 (11:23 -0500)
:class:`.Column` had both a foreign key as well as an
alternate ".key" name for the column.   Also in 0.7.10.
[ticket:2643]

doc/build/changelog/changelog_07.rst
doc/build/changelog/changelog_08.rst
lib/sqlalchemy/schema.py
test/sql/test_metadata.py

index cb88cd94089928ae25e24e4789c2b5a79ef43540..b1e2252a8b8a34f8efb738af7759ac035ed7c477 100644 (file)
@@ -8,6 +8,14 @@
     :version: 0.7.10
     :released:
 
+    .. change::
+        :tags: sql, bug
+        :tickets: 2643
+
+        Fixed bug where :meth:`.Table.tometadata` would fail if a
+        :class:`.Column` had both a foreign key as well as an
+        alternate ".key" name for the column.
+
     .. change::
         :tags: mssql, bug
         :tickets: 2638
index e0303e2faf11a209767bd3ce5468b6557af025f4..b17a7e7d17418fb7126c84a1a8f7a8145dbc8d1a 100644 (file)
@@ -6,6 +6,14 @@
 .. changelog::
     :version: 0.8.0
 
+    .. change::
+        :tags: sql, bug
+        :tickets: 2643
+
+        Fixed bug where :meth:`.Table.tometadata` would fail if a
+        :class:`.Column` had both a foreign key as well as an
+        alternate ".key" name for the column.   Also in 0.7.10.
+
     .. change::
         :tags: sql, bug
         :tickets: 2629
index 3e8f4ea82ab8fe2924cfc6004748878ab3553cf3..b9ee55abf88f5295199a65fba6e61a16dacb1926 100644 (file)
@@ -2280,7 +2280,7 @@ class ForeignKeyConstraint(Constraint):
 
     def copy(self, schema=None, **kw):
         fkc = ForeignKeyConstraint(
-                    [x.parent.name for x in self._elements.values()],
+                    [x.parent.key for x in self._elements.values()],
                     [x._get_colspec(schema=schema) for x in self._elements.values()],
                     name=self.name,
                     onupdate=self.onupdate,
index 4627a966278ec732a01581c4d62c8338a12c2cae..f8256bca7f4a0155a63bea86bd604d86342973e5 100644 (file)
@@ -349,6 +349,18 @@ class MetaDataTest(fixtures.TestBase, ComparesTables):
         finally:
             meta.drop_all(testing.db)
 
+    def test_col_key_fk_parent_tometadata(self):
+        # test #2643
+        m1 = MetaData()
+        a = Table('a', m1, Column('x', Integer))
+        b = Table('b', m1, Column('x', Integer, ForeignKey('a.x'), key='y'))
+        assert b.c.y.references(a.c.x)
+
+        m2 = MetaData()
+        b2 = b.tometadata(m2)
+        a2 = a.tometadata(m2)
+        assert b2.c.y.references(a2.c.x)
+
     def test_pickle_metadata_sequence_restated(self):
         m1 = MetaData()
         Table('a', m1,