summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2007-12-09 05:24:07 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2007-12-09 05:24:07 +0000
commitd972b5e51b630cf4a08d1d32599ce504d883df24 (patch)
treea76026ffc759436759c8fcd8eb86a34514d125a4
parent8fb0c0b4ce62bcbb88845c9860f3d702cb5b36e0 (diff)
downloadsqlalchemy-d972b5e51b630cf4a08d1d32599ce504d883df24.tar.gz
mapper uses attributes to get non-cached history
-rw-r--r--lib/sqlalchemy/orm/mapper.py6
-rw-r--r--lib/sqlalchemy/orm/unitofwork.py4
2 files changed, 3 insertions, 7 deletions
diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py
index f5e38c1c4..8386abb9f 100644
--- a/lib/sqlalchemy/orm/mapper.py
+++ b/lib/sqlalchemy/orm/mapper.py
@@ -998,9 +998,6 @@ class Mapper(object):
if self.__should_log_debug:
self.__log_debug("detected row switch for identity %s. will update %s, remove %s from transaction" % (instance_key, mapperutil.state_str(state), mapperutil.instance_str(existing)))
uowtransaction.set_row_switch(existing)
-# if _state_has_identity(state):
-# if state.dict['_instance_key'] != instance_key:
-# raise exceptions.FlushError("Can't change the identity of instance %s in session (existing identity: %s; new identity: %s)" % (mapperutil.state_str(state), state.dict['_instance_key'], instance_key))
inserted_objects = util.Set()
updated_objects = util.Set()
@@ -1070,8 +1067,7 @@ class Mapper(object):
continue
prop = mapper._columntoproperty[col]
- (added, unchanged, deleted) = uowtransaction.get_attribute_history(state, prop.key, passive=True, cache=False)
- #(added, unchanged, deleted) = attributes.get_history(state, prop.key, passive=True)
+ (added, unchanged, deleted) = attributes.get_history(state, prop.key, passive=True)
if added:
if isinstance(added[0], sql.ClauseElement):
value_params[col] = added[0]
diff --git a/lib/sqlalchemy/orm/unitofwork.py b/lib/sqlalchemy/orm/unitofwork.py
index 19642cc9d..a6bf8df90 100644
--- a/lib/sqlalchemy/orm/unitofwork.py
+++ b/lib/sqlalchemy/orm/unitofwork.py
@@ -280,13 +280,13 @@ class UOWTransaction(object):
self.logger = logging.instance_logger(self, echoflag=session.echo_uow)
- def get_attribute_history(self, state, key, passive=True, cache=True):
+ def get_attribute_history(self, state, key, passive=True):
hashkey = ("history", state, key)
# cache the objects, not the states; the strong reference here
# prevents newly loaded objects from being dereferenced during the
# flush process
- if cache and hashkey in self.attributes:
+ if hashkey in self.attributes:
(added, unchanged, deleted, cached_passive) = self.attributes[hashkey]
# if the cached lookup was "passive" and now we want non-passive, do a non-passive
# lookup and re-cache