- [bug] Fixed bug whereby populate_existing

option would not propagate to subquery
eager loaders.  [ticket:2497].  Also
in 0.7.8.
This commit is contained in:
Mike Bayer
2012-06-16 17:40:15 -04:00
parent 1ac57f0b52
commit 3db5ddfdac
3 changed files with 19 additions and 0 deletions
+5
View File
@@ -202,6 +202,11 @@ CHANGES
[ticket:2454]. Courtesy Jeff Dairiki
also in 0.7.7.
- [bug] Fixed bug whereby populate_existing
option would not propagate to subquery
eager loaders. [ticket:2497]. Also
in 0.7.8.
- engine
- [bug] Fixed memory leak in C version of
result proxy whereby DBAPIs which don't deliver
+2
View File
@@ -833,6 +833,8 @@ class SubqueryLoader(AbstractRelationshipLoader):
# these will fire relative to subq_path.
q = q._with_current_path(subq_path)
q = q._conditional_options(*orig_query._with_options)
if orig_query._populate_existing:
q._populate_existing = orig_query._populate_existing
return q
def _setup_outermost_orderby(self, q):
+12
View File
@@ -861,6 +861,18 @@ class LoadOnExistingTest(_fixtures.FixtureTest):
self.assert_sql_count(testing.db, go, 1)
assert 'addresses' not in u1.__dict__
def test_populate_existing_propagate(self):
User, Address, sess = self._eager_config_fixture()
u1 = sess.query(User).get(8)
u1.addresses[2].email_address = "foofoo"
del u1.addresses[1]
u1 = sess.query(User).populate_existing().filter_by(id=8).one()
# collection is reverted
eq_(len(u1.addresses), 3)
# attributes on related items reverted
eq_(u1.addresses[2].email_address, "ed@lala.com")
def test_loads_second_level_collection_to_scalar(self):
User, Address, Dingaling, sess = self._collection_to_scalar_fixture()