From: Mike Bayer Date: Sun, 27 Jan 2013 16:23:59 +0000 (-0500) Subject: Fixed bug where :meth:`.Table.tometadata` would fail if a X-Git-Tag: rel_0_8_0~27^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e26b28224d7c1745a8a2892372e1f5a8862e792c;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git 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. [ticket:2643] --- diff --git a/doc/build/changelog/changelog_07.rst b/doc/build/changelog/changelog_07.rst index cb88cd9408..b1e2252a8b 100644 --- a/doc/build/changelog/changelog_07.rst +++ b/doc/build/changelog/changelog_07.rst @@ -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 diff --git a/doc/build/changelog/changelog_08.rst b/doc/build/changelog/changelog_08.rst index e0303e2faf..b17a7e7d17 100644 --- a/doc/build/changelog/changelog_08.rst +++ b/doc/build/changelog/changelog_08.rst @@ -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 diff --git a/lib/sqlalchemy/schema.py b/lib/sqlalchemy/schema.py index 3e8f4ea82a..b9ee55abf8 100644 --- a/lib/sqlalchemy/schema.py +++ b/lib/sqlalchemy/schema.py @@ -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, diff --git a/test/sql/test_metadata.py b/test/sql/test_metadata.py index 4627a96627..f8256bca7f 100644 --- a/test/sql/test_metadata.py +++ b/test/sql/test_metadata.py @@ -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,