diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2015-04-20 17:38:03 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2015-04-20 17:38:03 -0400 |
| commit | a3af638e1a95d42075e25e87474663348dcf5c14 (patch) | |
| tree | 4549f2261067856a251367d49e97e40d0bb84b2c /lib/sqlalchemy/orm/mapper.py | |
| parent | bd61e7a3287079cf742f4df698bfe3628c090522 (diff) | |
| download | sqlalchemy-a3af638e1a95d42075e25e87474663348dcf5c14.tar.gz | |
- Fixed more regressions caused by NEVER_SET; comparisons
to transient objects with attributes unset would leak NEVER_SET,
and negated_contains_or_equals would do so for any transient
object as the comparison used only the committed value.
Repaired the NEVER_SET cases, fixes #3371, and also made
negated_contains_or_equals() use state_attr_by_column() just
like a non-negated comparison, fixes #3374
Diffstat (limited to 'lib/sqlalchemy/orm/mapper.py')
| -rw-r--r-- | lib/sqlalchemy/orm/mapper.py | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py index 4554f78f9..924130874 100644 --- a/lib/sqlalchemy/orm/mapper.py +++ b/lib/sqlalchemy/orm/mapper.py @@ -2377,15 +2377,15 @@ class Mapper(InspectionAttr): """ state = attributes.instance_state(instance) - return self._primary_key_from_state(state) + return self._primary_key_from_state(state, attributes.PASSIVE_OFF) - def _primary_key_from_state(self, state): + def _primary_key_from_state( + self, state, passive=attributes.PASSIVE_RETURN_NEVER_SET): dict_ = state.dict manager = state.manager return [ manager[prop.key]. - impl.get(state, dict_, - attributes.PASSIVE_RETURN_NEVER_SET) + impl.get(state, dict_, passive) for prop in self._identity_key_props ] @@ -2428,7 +2428,8 @@ class Mapper(InspectionAttr): def _get_committed_attr_by_column(self, obj, column): state = attributes.instance_state(obj) dict_ = attributes.instance_dict(obj) - return self._get_committed_state_attr_by_column(state, dict_, column) + return self._get_committed_state_attr_by_column( + state, dict_, column, passive=attributes.PASSIVE_OFF) def _get_committed_state_attr_by_column( self, state, dict_, column, |
