From: Mike Bayer Date: Wed, 5 Feb 2014 21:54:31 +0000 (-0500) Subject: - Fixed regression in new "naming convention" feature where conventions X-Git-Tag: rel_0_9_3~51 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c5dccd82dabffa1b01d1e2852c96684b559528c2;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - Fixed regression in new "naming convention" feature where conventions would fail if the referred table in a foreign key contained a schema name. Pull request courtesy Thomas Farvour. pullreq github:67 --- diff --git a/doc/build/changelog/changelog_09.rst b/doc/build/changelog/changelog_09.rst index d452c4bb3c..d7ca44beeb 100644 --- a/doc/build/changelog/changelog_09.rst +++ b/doc/build/changelog/changelog_09.rst @@ -14,6 +14,14 @@ .. changelog:: :version: 0.9.3 + .. change:: + :tags: bug, sql + :pullreq: github:67 + + Fixed regression in new "naming convention" feature where conventions + would fail if the referred table in a foreign key contained a schema + name. Pull request courtesy Thomas Farvour. + .. change:: :tags: bug, sql diff --git a/test/sql/test_metadata.py b/test/sql/test_metadata.py index dd3f4fc3d7..7380732af8 100644 --- a/test/sql/test_metadata.py +++ b/test/sql/test_metadata.py @@ -2523,13 +2523,14 @@ class DialectKWArgTest(fixtures.TestBase): "participating_z_one": "default"}) class NamingConventionTest(fixtures.TestBase): - def _fixture(self, naming_convention): + def _fixture(self, naming_convention, table_schema=None): m1 = MetaData(naming_convention=naming_convention) u1 = Table('user', m1, Column('id', Integer, primary_key=True), Column('version', Integer, primary_key=True), - Column('data', String(30)) + Column('data', String(30)), + schema=table_schema ) return u1 @@ -2555,6 +2556,23 @@ class NamingConventionTest(fixtures.TestBase): CheckConstraint, u1.c.data == 'x' ) + def test_fk_name_schema(self): + u1 = self._fixture(naming_convention={ + "fk": "fk_%(table_name)s_%(column_0_name)s_" + "%(referred_table_name)s_%(referred_column_0_name)s" + }, table_schema="foo") + m1 = u1.metadata + a1 = Table('address', m1, + Column('id', Integer, primary_key=True), + Column('user_id', Integer), + Column('user_version_id', Integer) + ) + fk = ForeignKeyConstraint(['user_id', 'user_version_id'], + ['foo.user.id', 'foo.user.version']) + a1.append_constraint(fk) + eq_(fk.name, "fk_address_user_id_user_id") + + def test_fk_attrs(self): u1 = self._fixture(naming_convention={ "fk": "fk_%(table_name)s_%(column_0_name)s_"