summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2010-11-13 12:05:13 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2010-11-13 12:05:13 -0500
commit5400ea2c1e2c605843255f5eb15b5ce1d8fba025 (patch)
treefc8cc93a4ad3fe89ed55a76a3c94889de3e331ed
parent4c61875aa19ee622d0b90a9c4028ca6666e2aa44 (diff)
downloadsqlalchemy-5400ea2c1e2c605843255f5eb15b5ce1d8fba025.tar.gz
- additional fix for [ticket:1964]
- [ticket:1965] is invalid
-rw-r--r--lib/sqlalchemy/orm/strategies.py2
-rw-r--r--test/orm/test_subquery_relations.py23
2 files changed, 11 insertions, 14 deletions
diff --git a/lib/sqlalchemy/orm/strategies.py b/lib/sqlalchemy/orm/strategies.py
index 28759fb1b..398a63e7a 100644
--- a/lib/sqlalchemy/orm/strategies.py
+++ b/lib/sqlalchemy/orm/strategies.py
@@ -748,7 +748,7 @@ class SubqueryLoader(AbstractRelationshipLoader):
self.parent, self.parent_property
else:
leftmost_mapper, leftmost_prop = \
- subq_path[0], \
+ subq_mapper, \
subq_mapper.get_property(subq_path[1])
leftmost_cols, remote_cols = self._local_remote_columns(leftmost_prop)
diff --git a/test/orm/test_subquery_relations.py b/test/orm/test_subquery_relations.py
index 2c9953e70..5eba68e13 100644
--- a/test/orm/test_subquery_relations.py
+++ b/test/orm/test_subquery_relations.py
@@ -4,7 +4,7 @@ from sqlalchemy.test.schema import Table, Column
from sqlalchemy import Integer, String, ForeignKey, bindparam
from sqlalchemy.orm import backref, subqueryload, subqueryload_all, \
mapper, relationship, clear_mappers, create_session, lazyload, \
- aliased, joinedload, deferred, undefer
+ aliased, joinedload, deferred, undefer, eagerload_all
from sqlalchemy.test.testing import eq_, assert_raises, \
assert_raises_message
from sqlalchemy.test.assertsql import CompiledSQL
@@ -56,17 +56,18 @@ class EagerTest(_fixtures.FixtureTest, testing.AssertsCompiledSQL):
sess = create_session()
u = aliased(User)
+
q = sess.query(u).options(subqueryload(u.addresses))
-
+
def go():
eq_(
[User(id=7, addresses=[
Address(id=1, email_address='jack@bean.com')])],
q.filter(u.id==7).all()
)
-
+
self.assert_sql_count(testing.db, go, 2)
-
+
def go():
eq_(
self.static.user_address_result,
@@ -74,13 +75,8 @@ class EagerTest(_fixtures.FixtureTest, testing.AssertsCompiledSQL):
)
self.assert_sql_count(testing.db, go, 2)
- a = aliased(Address)
-
-# TODO: this is [ticket:1965]
-# q = sess.query(User).join((a, User.addresses)).\
-# options(subqueryload_all(User.addresses, a.dingalings))
- q = sess.query(User).join((a, User.addresses)).\
- options(subqueryload_all(User.addresses, Address.dingalings))
+ q = sess.query(u).\
+ options(subqueryload_all(u.addresses, Address.dingalings))
def go():
eq_(
@@ -94,10 +90,11 @@ class EagerTest(_fixtures.FixtureTest, testing.AssertsCompiledSQL):
Address(id=5, dingalings=[Dingaling()])
]),
],
- q.filter(User.id.in_([8, 9])).all()
+ q.filter(u.id.in_([8, 9])).all()
)
self.assert_sql_count(testing.db, go, 3)
-
+
+
@testing.resolve_artifact_names
def test_from_get(self):
mapper(User, users, properties={