diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-06-06 23:37:18 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-06-06 23:37:18 +0000 |
commit | a74da6d21e7f5f2dd31dbaa8bc6cbf11e165360e (patch) | |
tree | 850032d13dfd5bc2a7a142d237bb20143f97f91b | |
parent | 72113780f3a88c2ae8c8e568b4833702c72c5788 (diff) | |
download | sqlalchemy-a74da6d21e7f5f2dd31dbaa8bc6cbf11e165360e.tar.gz |
- fixed bug where selectable.corresponding_column(selectable.c.col)
would not return selectable.c.col, if the selectable is a join
of a table and another join involving the same table. messed
up ORM decision making [ticket:593]
-rw-r--r-- | CHANGES | 4 | ||||
-rw-r--r-- | lib/sqlalchemy/sql.py | 4 | ||||
-rwxr-xr-x | test/sql/selectable.py | 7 |
3 files changed, 14 insertions, 1 deletions
@@ -1,6 +1,10 @@ - sql - long-identifier detection fixed to use > rather than >= for max ident length [ticket:589] + - fixed bug where selectable.corresponding_column(selectable.c.col) + would not return selectable.c.col, if the selectable is a join + of a table and another join involving the same table. messed + up ORM decision making [ticket:593] - mysql - added 'fields' to reserved words [ticket:590] diff --git a/lib/sqlalchemy/sql.py b/lib/sqlalchemy/sql.py index fb32c0f07..3a8a27d67 100644 --- a/lib/sqlalchemy/sql.py +++ b/lib/sqlalchemy/sql.py @@ -1670,7 +1670,9 @@ class FromClause(Selectable): it merely shares a common anscestor with one of the exported columns of this ``FromClause``. """ - + if column in self.c: + return column + if require_embedded and column not in util.Set(self._get_all_embedded_columns()): if not raiseerr: return None diff --git a/test/sql/selectable.py b/test/sql/selectable.py index cd434a184..221d8430c 100755 --- a/test/sql/selectable.py +++ b/test/sql/selectable.py @@ -27,6 +27,13 @@ table2 = Table('table2', db, )
class SelectableTest(testbase.AssertMixin):
+ def testjoinagainstjoin(self):
+ j = outerjoin(table, table2, table.c.col1==table2.c.col2)
+ jj = select([ table.c.col1.label('bar_col1')],from_obj=[j]).alias('foo')
+ jjj = join(table, jj, table.c.col1==jj.c.bar_col1)
+ assert jjj.corresponding_column(jjj.c.table1_col1) is jjj.c.table1_col1
+
+
def testtablealias(self):
a = table.alias('a')
|