summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2013-06-04 16:48:14 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2013-06-04 16:48:14 -0400
commit58e917fe2de2f4b643f3bf2468f51aef27e67747 (patch)
treed3753a8e38cee7d4254880776469b4f1b19003b3
parent51e1019f610f083ac4d8c850589cdf52cff044da (diff)
downloadsqlalchemy-58e917fe2de2f4b643f3bf2468f51aef27e67747.tar.gz
- eager loads
- two suite of SQL assertions converted
-rw-r--r--lib/sqlalchemy/orm/strategies.py3
-rw-r--r--lib/sqlalchemy/orm/util.py2
-rw-r--r--test/orm/inheritance/test_relationship.py98
-rw-r--r--test/orm/test_eager_relations.py32
4 files changed, 54 insertions, 81 deletions
diff --git a/lib/sqlalchemy/orm/strategies.py b/lib/sqlalchemy/orm/strategies.py
index baaf4cb92..cabfb35b9 100644
--- a/lib/sqlalchemy/orm/strategies.py
+++ b/lib/sqlalchemy/orm/strategies.py
@@ -1089,8 +1089,7 @@ class JoinedLoader(AbstractRelationshipLoader):
to_adapt = with_poly_info.entity
else:
to_adapt = orm_util.AliasedClass(self.mapper,
- use_mapper_path=True,
- flat=True)
+ use_mapper_path=True)
clauses = orm_util.ORMAdapter(
to_adapt,
equivalents=self.mapper._equivalent_columns,
diff --git a/lib/sqlalchemy/orm/util.py b/lib/sqlalchemy/orm/util.py
index 3da6e89e3..c21e7eace 100644
--- a/lib/sqlalchemy/orm/util.py
+++ b/lib/sqlalchemy/orm/util.py
@@ -493,7 +493,7 @@ class AliasedClass(object):
"""
def __init__(self, cls, alias=None,
name=None,
- flat=False,
+ flat=True,
adapt_on_names=False,
# TODO: None for default here?
with_polymorphic_mappers=(),
diff --git a/test/orm/inheritance/test_relationship.py b/test/orm/inheritance/test_relationship.py
index 809884f52..d8cf5ebd8 100644
--- a/test/orm/inheritance/test_relationship.py
+++ b/test/orm/inheritance/test_relationship.py
@@ -569,15 +569,14 @@ class SelfReferentialM2MTest(fixtures.MappedTest, AssertsCompiledSQL):
self.assert_compile(q.limit(1).with_labels().statement,
"SELECT anon_1.child1_id AS anon_1_child1_id, anon_1.parent_id "
"AS anon_1_parent_id, anon_1.parent_cls AS anon_1_parent_cls, "
- "anon_2.child2_id AS anon_2_child2_id, anon_2.parent_id AS "
- "anon_2_parent_id, anon_2.parent_cls AS anon_2_parent_cls FROM "
+ "child2_1.id AS child2_1_id, parent_1.id AS "
+ "parent_1_id, parent_1.cls AS parent_1_cls FROM "
"(SELECT child1.id AS child1_id, parent.id AS parent_id, "
"parent.cls AS parent_cls FROM parent JOIN child1 ON parent.id = "
"child1.id LIMIT :param_1) AS anon_1 LEFT OUTER JOIN secondary "
"AS secondary_1 ON anon_1.parent_id = secondary_1.right_id LEFT "
- "OUTER JOIN (SELECT parent.id AS parent_id, parent.cls AS "
- "parent_cls, child2.id AS child2_id FROM parent JOIN child2 ON "
- "parent.id = child2.id) AS anon_2 ON anon_2.parent_id = "
+ "OUTER JOIN (parent AS parent_1 JOIN child2 AS child2_1 ON "
+ "parent_1.id = child2_1.id) ON parent_1.id = "
"secondary_1.left_id",
{'param_1':1},
dialect=default.DefaultDialect())
@@ -1224,18 +1223,13 @@ class SubClassToSubClassMultiTest(AssertsCompiledSQL, fixtures.MappedTest):
join(Sub2.ep1).
join(Sub2.ep2),
"SELECT parent.id AS parent_id, parent.data AS parent_data "
- "FROM parent JOIN (SELECT base1.id AS base1_id, "
- "base1.data AS base1_data, sub1.id AS sub1_id, "
- "sub1.parent_id AS sub1_parent_id, sub1.subdata AS sub1_subdata "
- "FROM base1 JOIN sub1 ON base1.id = sub1.id) AS anon_1 "
- "ON parent.id = anon_1.sub1_parent_id JOIN "
- "(SELECT base2.id AS base2_id, base2.base1_id AS base2_base1_id, "
- "base2.data AS base2_data, sub2.id AS sub2_id, "
- "sub2.subdata AS sub2_subdata FROM base2 JOIN sub2 "
- "ON base2.id = sub2.id) AS anon_2 "
- "ON anon_1.base1_id = anon_2.base2_base1_id "
- "JOIN ep1 ON anon_2.base2_id = ep1.base2_id "
- "JOIN ep2 ON anon_2.base2_id = ep2.base2_id"
+ "FROM parent JOIN (base1 JOIN sub1 ON base1.id = sub1.id) "
+ "ON parent.id = sub1.parent_id JOIN "
+ "(base2 JOIN sub2 "
+ "ON base2.id = sub2.id) "
+ "ON base1.id = base2.base1_id "
+ "JOIN ep1 ON base2.id = ep1.base2_id "
+ "JOIN ep2 ON base2.id = ep2.base2_id"
)
def test_two(self):
@@ -1248,16 +1242,11 @@ class SubClassToSubClassMultiTest(AssertsCompiledSQL, fixtures.MappedTest):
s.query(Parent).join(Parent.sub1).
join(s2a, Sub1.sub2),
"SELECT parent.id AS parent_id, parent.data AS parent_data "
- "FROM parent JOIN (SELECT base1.id AS base1_id, "
- "base1.data AS base1_data, sub1.id AS sub1_id, "
- "sub1.parent_id AS sub1_parent_id, sub1.subdata AS sub1_subdata "
- "FROM base1 JOIN sub1 ON base1.id = sub1.id) AS anon_1 "
- "ON parent.id = anon_1.sub1_parent_id JOIN "
- "(SELECT base2.id AS base2_id, base2.base1_id AS base2_base1_id, "
- "base2.data AS base2_data, sub2.id AS sub2_id, "
- "sub2.subdata AS sub2_subdata FROM base2 JOIN sub2 "
- "ON base2.id = sub2.id) AS anon_2 "
- "ON anon_1.base1_id = anon_2.base2_base1_id"
+ "FROM parent JOIN (base1 JOIN sub1 ON base1.id = sub1.id) "
+ "ON parent.id = sub1.parent_id JOIN "
+ "(base2 AS base2_1 JOIN sub2 AS sub2_1 "
+ "ON base2_1.id = sub2_1.id) "
+ "ON base1.id = base2_1.base1_id"
)
def test_three(self):
@@ -1269,13 +1258,11 @@ class SubClassToSubClassMultiTest(AssertsCompiledSQL, fixtures.MappedTest):
join(Sub2.ep1).\
join(Sub2.ep2),
"SELECT base1.id AS base1_id, base1.data AS base1_data "
- "FROM base1 JOIN (SELECT base2.id AS base2_id, base2.base1_id "
- "AS base2_base1_id, base2.data AS base2_data, sub2.id AS sub2_id, "
- "sub2.subdata AS sub2_subdata FROM base2 JOIN sub2 "
- "ON base2.id = sub2.id) AS anon_1 ON base1.id = "
- "anon_1.base2_base1_id "
- "JOIN ep1 ON anon_1.base2_id = ep1.base2_id "
- "JOIN ep2 ON anon_1.base2_id = ep2.base2_id"
+ "FROM base1 JOIN (base2 JOIN sub2 "
+ "ON base2.id = sub2.id) ON base1.id = "
+ "base2.base1_id "
+ "JOIN ep1 ON base2.id = ep1.base2_id "
+ "JOIN ep2 ON base2.id = ep2.base2_id"
)
def test_four(self):
@@ -1308,11 +1295,8 @@ class SubClassToSubClassMultiTest(AssertsCompiledSQL, fixtures.MappedTest):
"sub2.subdata AS sub2_subdata "
"FROM base2 JOIN sub2 ON base2.id = sub2.id "
"JOIN "
- "(SELECT base1.id AS base1_id, base1.data AS base1_data, "
- "sub1.id AS sub1_id, sub1.parent_id AS sub1_parent_id, "
- "sub1.subdata AS sub1_subdata "
- "FROM base1 JOIN sub1 ON base1.id = sub1.id) AS anon_1 "
- "ON anon_1.sub1_id = base2.base1_id "
+ "(base1 JOIN sub1 ON base1.id = sub1.id) "
+ "ON sub1.id = base2.base1_id "
"JOIN ep1 ON base2.id = ep1.base2_id "
"JOIN ep2 ON base2.id = ep2.base2_id"
)
@@ -1352,28 +1336,22 @@ class SubClassToSubClassMultiTest(AssertsCompiledSQL, fixtures.MappedTest):
join(Sub2.ep2),
"SELECT anon_1.parent_id AS anon_1_parent_id, "
"anon_1.parent_data AS anon_1_parent_data, "
- "anon_1.anon_2_sub2_id AS anon_1_anon_2_sub2_id, "
- "anon_1.anon_2_base2_id AS anon_1_anon_2_base2_id, "
- "anon_1.anon_2_base2_base1_id AS anon_1_anon_2_base2_base1_id, "
- "anon_1.anon_2_base2_data AS anon_1_anon_2_base2_data, "
- "anon_1.anon_2_sub2_subdata AS anon_1_anon_2_sub2_subdata "
+ "anon_1.sub2_id AS anon_1_sub2_id, "
+ "anon_1.base2_id AS anon_1_base2_id, "
+ "anon_1.base2_base1_id AS anon_1_base2_base1_id, "
+ "anon_1.base2_data AS anon_1_base2_data, "
+ "anon_1.sub2_subdata AS anon_1_sub2_subdata "
"FROM (SELECT parent.id AS parent_id, parent.data AS parent_data, "
- "anon_2.sub2_id AS anon_2_sub2_id, "
- "anon_2.base2_id AS anon_2_base2_id, "
- "anon_2.base2_base1_id AS anon_2_base2_base1_id, "
- "anon_2.base2_data AS anon_2_base2_data, "
- "anon_2.sub2_subdata AS anon_2_sub2_subdata "
- "FROM parent JOIN (SELECT base1.id AS base1_id, "
- "base1.data AS base1_data, sub1.id AS sub1_id, "
- "sub1.parent_id AS sub1_parent_id, sub1.subdata AS sub1_subdata "
- "FROM base1 JOIN sub1 ON base1.id = sub1.id) AS anon_3 "
- "ON parent.id = anon_3.sub1_parent_id JOIN "
- "(SELECT base2.id AS base2_id, base2.base1_id AS base2_base1_id, "
- "base2.data AS base2_data, sub2.id AS sub2_id, "
+ "sub2.id AS sub2_id, "
+ "base2.id AS base2_id, "
+ "base2.base1_id AS base2_base1_id, "
+ "base2.data AS base2_data, "
"sub2.subdata AS sub2_subdata "
- "FROM base2 JOIN sub2 ON base2.id = sub2.id) AS anon_2 "
- "ON anon_3.base1_id = anon_2.base2_base1_id) AS anon_1 "
- "JOIN ep1 ON anon_1.anon_2_base2_id = ep1.base2_id "
- "JOIN ep2 ON anon_1.anon_2_base2_id = ep2.base2_id"
+ "FROM parent JOIN (base1 JOIN sub1 ON base1.id = sub1.id) "
+ "ON parent.id = sub1.parent_id JOIN "
+ "(base2 JOIN sub2 ON base2.id = sub2.id) "
+ "ON base1.id = base2.base1_id) AS anon_1 "
+ "JOIN ep1 ON anon_1.base2_id = ep1.base2_id "
+ "JOIN ep2 ON anon_1.base2_id = ep2.base2_id"
)
diff --git a/test/orm/test_eager_relations.py b/test/orm/test_eager_relations.py
index eb2ecce63..d59d515f4 100644
--- a/test/orm/test_eager_relations.py
+++ b/test/orm/test_eager_relations.py
@@ -2634,16 +2634,15 @@ class CyclicalInheritingEagerTestTwo(fixtures.DeclarativeMappedTest,
self.assert_compile(
s.query(Director).options(joinedload('*')),
"SELECT director.id AS director_id, persistent.id AS persistent_id, "
- "director.name AS director_name, anon_1.movie_id AS anon_1_movie_id, "
- "anon_1.persistent_id AS anon_1_persistent_id, "
- "anon_1.movie_director_id AS anon_1_movie_director_id, "
- "anon_1.movie_title AS anon_1_movie_title "
+ "director.name AS director_name, movie_1.id AS movie_1_id, "
+ "persistent_1.id AS persistent_1_id, "
+ "movie_1.director_id AS movie_1_director_id, "
+ "movie_1.title AS movie_1_title "
"FROM persistent JOIN director ON persistent.id = director.id "
"LEFT OUTER JOIN "
- "(SELECT persistent.id AS persistent_id, movie.id AS movie_id, "
- "movie.director_id AS movie_director_id, movie.title AS movie_title "
- "FROM persistent JOIN movie ON persistent.id = movie.id) AS anon_1 "
- "ON director.id = anon_1.movie_director_id"
+ "(persistent AS persistent_1 JOIN movie AS movie_1 "
+ "ON persistent_1.id = movie_1.id) "
+ "ON director.id = movie_1.director_id"
)
def test_integrate(self):
@@ -2706,15 +2705,12 @@ class CyclicalInheritingEagerTestThree(fixtures.DeclarativeMappedTest,
sess.query(PersistentObject).options(joinedload(Director.other, join_depth=1)),
"SELECT persistent.id AS persistent_id, director.id AS director_id, "
"director.other_id AS director_other_id, "
- "director.name AS director_name, anon_1.persistent_id AS "
- "anon_1_persistent_id, anon_1.director_id AS anon_1_director_id, "
- "anon_1.director_other_id AS anon_1_director_other_id, "
- "anon_1.director_name AS anon_1_director_name "
+ "director.name AS director_name, persistent_1.id AS "
+ "persistent_1_id, director_1.id AS director_1_id, "
+ "director_1.other_id AS director_1_other_id, "
+ "director_1.name AS director_1_name "
"FROM persistent LEFT OUTER JOIN director ON director.id = persistent.id "
- "LEFT OUTER JOIN (SELECT persistent.id AS persistent_id, "
- "director.id AS director_id, director.other_id AS director_other_id, "
- "director.name AS director_name "
- "FROM persistent LEFT OUTER JOIN director ON "
- "director.id = persistent.id) "
- "AS anon_1 ON director.other_id = anon_1.persistent_id"
+ "LEFT OUTER JOIN (persistent AS persistent_1 LEFT OUTER JOIN director AS director_1 ON "
+ "director_1.id = persistent_1.id) "
+ "ON director.other_id = persistent_1.id"
)