From: Mike Bayer Date: Wed, 18 Jul 2007 18:30:01 +0000 (+0000) Subject: - put a generic regexp for chopping foreign key specs along the "." X-Git-Tag: rel_0_4_6~84 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1caa97ac62e1f74624f3074c83746c3fe27f2905;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - put a generic regexp for chopping foreign key specs along the "." [ticket:667] --- diff --git a/lib/sqlalchemy/schema.py b/lib/sqlalchemy/schema.py index a504111a73..afb433e1e4 100644 --- a/lib/sqlalchemy/schema.py +++ b/lib/sqlalchemy/schema.py @@ -707,7 +707,7 @@ class ForeignKey(SchemaItem): break else: raise exceptions.ArgumentError("Parent column '%s' does not descend from a table-attached Column" % str(self.parent)) - m = re.match(r"^([\w_-]+)(?:\.([\w_-]+))?(?:\.([\w_-]+))?$", self._colspec, re.UNICODE) + m = re.match(r"^(.+?)(?:\.(.+?))?(?:\.(.+?))?$", self._colspec, re.UNICODE) if m is None: raise exceptions.ArgumentError("Invalid foreign key column specification: " + self._colspec) if m.group(3) is None: diff --git a/test/dialect/postgres.py b/test/dialect/postgres.py index f5bd4a55fa..8b939eea0e 100644 --- a/test/dialect/postgres.py +++ b/test/dialect/postgres.py @@ -79,6 +79,27 @@ class MiscTest(AssertMixin): finally: m1.drop_all() + @testbase.supported('postgres') + def test_pg_weirdchar_reflection(self): + meta1 = MetaData(testbase.db) + subject = Table("subject", meta1, + Column("id$", Integer, primary_key=True), + ) + + referer = Table("referer", meta1, + Column("id", Integer, primary_key=True), + Column("ref", Integer, ForeignKey('subject.id$')), + ) + meta1.create_all() + try: + meta2 = MetaData(testbase.db) + subject = Table("subject", meta2, autoload=True) + referer = Table("referer", meta2, autoload=True) + print str(subject.join(referer).onclause) + self.assert_((subject.c['id$']==referer.c.ref).compare(subject.join(referer).onclause)) + finally: + meta1.drop_all() + @testbase.supported('postgres') def test_checksfor_sequence(self): meta1 = MetaData(testbase.db)