summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2009-12-08 23:47:09 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2009-12-08 23:47:09 +0000
commit180569992337435140549c71d67cd1b0729d89e7 (patch)
treefa6ffe92cca4e1cbeaf90ef7eb5273c5196a056a
parent54e6dedc5fd2daa4baf6fe3c0b9ca0bf146e5d33 (diff)
downloadsqlalchemy-180569992337435140549c71d67cd1b0729d89e7.tar.gz
- merge r6549 of 0.5 branch
- Fixed bug in query.update() when passing Cls.attribute as keys in the value dict and using synchronize_session='expire' ('fetch' in 0.6). [ticket:1436]
-rw-r--r--CHANGES4
-rw-r--r--lib/sqlalchemy/orm/query.py2
-rw-r--r--test/orm/test_query.py4
3 files changed, 9 insertions, 1 deletions
diff --git a/CHANGES b/CHANGES
index a70a017f6..6326030fc 100644
--- a/CHANGES
+++ b/CHANGES
@@ -807,6 +807,10 @@ CHANGES
combinations of reflected and non-reflected types to work
with 0.5 style type reflection, such as PGText/Text (note 0.6
reflects types as their generic versions). [ticket:1556]
+
+ - Fixed bug in query.update() when passing Cls.attribute
+ as keys in the value dict and using synchronize_session='expire'
+ ('fetch' in 0.6). [ticket:1436]
- sql
- Fixed bug in two-phase transaction whereby commit() method
diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py
index 978596f01..b57cdf65f 100644
--- a/lib/sqlalchemy/orm/query.py
+++ b/lib/sqlalchemy/orm/query.py
@@ -1778,7 +1778,7 @@ class Query(object):
for primary_key in matched_rows:
identity_key = target_mapper.identity_key_from_primary_key(list(primary_key))
if identity_key in session.identity_map:
- session.expire(session.identity_map[identity_key], values.keys())
+ session.expire(session.identity_map[identity_key], [expression._column_as_key(k) for k in values])
for ext in session.extensions:
ext.after_bulk_update(session, self, context, result)
diff --git a/test/orm/test_query.py b/test/orm/test_query.py
index be763f009..765fd9222 100644
--- a/test/orm/test_query.py
+++ b/test/orm/test_query.py
@@ -3578,6 +3578,10 @@ class UpdateDeleteTest(_base.MappedTest):
eq_([john.age, jack.age, jill.age, jane.age], [25,27,19,27])
eq_(sess.query(User.age).order_by(User.id).all(), zip([25,27,19,27]))
+ sess.query(User).filter(User.age == 25).update({User.age: User.age - 10}, synchronize_session='fetch')
+ eq_([john.age, jack.age, jill.age, jane.age], [15,27,19,27])
+ eq_(sess.query(User.age).order_by(User.id).all(), zip([15,27,19,27]))
+
@testing.resolve_artifact_names
def test_update_with_bindparams(self):