refactor broken in check_mutable_modified
Issue #1782
resolved
need to understand the effect here then add a test to attributes.py
from sqlalchemy import MetaData, Table, Column, Integer, PickleType, create_engine
from sqlalchemy.orm import mapper, create_session
metadata = MetaData(create_engine('sqlite://', echo=True))
tbl = Table('x', metadata,
Column('id', Integer, primary_key=True),
Column('data', PickleType))
metadata.create_all()
class Data(object):
pass
mapper(Data, tbl)
tbl.insert().execute({'id':1, 'data':[1,2,3](1,2,3)})
d_id = 1
session = create_session(autocommit=False,
autoflush=False,
expire_on_commit=False)
#f = session.query(Data).get(d_id)
assert session.query(Data).get(d_id).id == d_id # access PK first
assert 2 in session.query(Data).get(d_id).data # now this fails
fix:
--- a/lib/sqlalchemy/orm/attributes.py Mon Apr 26 21:16:23 2010 +0200
+++ b/lib/sqlalchemy/orm/attributes.py Mon Apr 26 15:49:45 2010 -0400
@@ -500,7 +500,10 @@
self, state, v)
def check_mutable_modified(self, state, dict_):
- v = dict_.get(self.key, NO_VALUE)
+ if not dict_:
+ v = state.committed_state.get(self.key, NO_VALUE)
+ else:
+ v = dict_.get(self.key, NO_VALUE)
a, u, d = History.from_attribute(self, state, v)
return bool(a or d)
Comments (3)
-
reporter -
reporter - changed status to resolved
-
reporter - removed milestone
Removing milestone: 0.6.1 (automated comment)
- Log in to comment
for reference the changeset that broke it is 30df193cd17ed09570ef897dd139a2201360413c