mirror of
https://github.com/sqlalchemy/sqlalchemy.git
synced 2026-05-27 19:15:05 -04:00
- [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:
@@ -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
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user