summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/orm/collections.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2016-11-14 16:09:13 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2016-11-14 16:25:47 -0500
commit3e063525f3721ef6fa2c3dd3e6ded67c2fa9cb0b (patch)
treec0a61fee697a5e860e3da9175db6060a4f2fe31d /lib/sqlalchemy/orm/collections.py
parent88ca587eae19afb8e069d896b95580aaed8b0e24 (diff)
downloadsqlalchemy-3e063525f3721ef6fa2c3dd3e6ded67c2fa9cb0b.tar.gz
Add missing items to collection.__getstate__
the refactor in b606e47ddc54 / ticket:3457 failed to adjust __getstate__ / __setstate__. need to memoize a few more things including the class itself so that we can navigate back to "attr". Change-Id: I4ece2a616cb8b9dac7b50763ca59e47d0f26cfdf Fixes: #3852
Diffstat (limited to 'lib/sqlalchemy/orm/collections.py')
-rw-r--r--lib/sqlalchemy/orm/collections.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/sqlalchemy/orm/collections.py b/lib/sqlalchemy/orm/collections.py
index 1e022e1dd..47cd774d6 100644
--- a/lib/sqlalchemy/orm/collections.py
+++ b/lib/sqlalchemy/orm/collections.py
@@ -714,12 +714,18 @@ class CollectionAdapter(object):
def __getstate__(self):
return {'key': self._key,
'owner_state': self.owner_state,
- 'data': self.data}
+ 'owner_cls': self.owner_state.class_,
+ 'data': self.data,
+ 'invalidated': self.invalidated}
def __setstate__(self, d):
self._key = d['key']
self.owner_state = d['owner_state']
self._data = weakref.ref(d['data'])
+ self._converter = d['data']._sa_converter
+ d['data']._sa_adapter = self
+ self.invalidated = d['invalidated']
+ self.attr = getattr(d['owner_cls'], self._key).impl
def bulk_replace(values, existing_adapter, new_adapter):