- changed status to resolved
session.merge() does pointless None lookup
Issue #1618
resolved
given transient object:
if key is None: # key is None
if dont_load:
raise sa_exc.InvalidRequestError(
"merge() with dont_load=True option does not support "
"objects transient (i.e. unpersisted) objects. flush() "
"all changes on mapped instances before merging with "
"dont_load=True.")
key = mapper._identity_key_from_state(state)
# now we have key == (<class 'mappedclass'>, (None,)) !!!!
merged = None
if key:
if key in self.identity_map:
merged = self.identity_map[key](key)
elif dont_load:
if state.modified:
raise sa_exc.InvalidRequestError(
"merge() with dont_load=True option does not support "
"objects marked as 'dirty'. flush() all changes on "
"mapped instances before merging with dont_load=True.")
merged = mapper.class_manager.new_instance()
merged_state = attributes.instance_state(merged)
merged_state.key = key
self._update_impl(merged_state)
new_instance = True
else:
# pointless get() occurs here !!!
merged = self.query(mapper.class_).get(key[1](1))
Comments (3)
-
reporter -
reporter changelog error adjusted in 90efddbb1d52e7c26bb71e4b1c2dea121d3a0f8e dc9754a3411e25d1aeab0194f8b1075d007e136e
-
reporter - removed milestone
Removing milestone: 0.5.7 (automated comment)
- Log in to comment
2fbdb67cbec56a85e3fe000db94eee14101a47fa 699d77958239d299812af57aa3ba9e7fd7a5ac88