diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2022-08-30 10:25:47 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2022-08-30 10:35:25 -0400 |
| commit | e15cf451affdef95b3248d1ea5c31ac923e661c3 (patch) | |
| tree | ff8c38fa1d65f015aaceb9c33f04253adf854ffd /lib/sqlalchemy/ext | |
| parent | 2f146b172ad228e40f1e8d5f1d2abc888ae5e669 (diff) | |
| download | sqlalchemy-e15cf451affdef95b3248d1ea5c31ac923e661c3.tar.gz | |
implement event for merge/load=False for mutable state setup
Fixed issue in :mod:`sqlalchemy.ext.mutable` extension where collection
links to the parent object would be lost if the object were merged with
:meth:`.Session.merge` while also passing :paramref:`.Session.merge.load`
as False.
The event added here is currently private for expediency, but
is acceptable to become a public event at some point.
Fixes: #8446
Change-Id: I9e5b9f1f5a0c5a9781f51635d5e57b1134c9e866
Diffstat (limited to 'lib/sqlalchemy/ext')
| -rw-r--r-- | lib/sqlalchemy/ext/mutable.py | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/sqlalchemy/ext/mutable.py b/lib/sqlalchemy/ext/mutable.py index 1d6cf8a85..1f102cb36 100644 --- a/lib/sqlalchemy/ext/mutable.py +++ b/lib/sqlalchemy/ext/mutable.py @@ -511,6 +511,14 @@ class MutableBase: for val in state_dict["ext.mutable.values"][key]: val._parents[state] = key + event.listen( + parent_cls, + "_sa_event_merge_wo_load", + load, + raw=True, + propagate=True, + ) + event.listen(parent_cls, "load", load, raw=True, propagate=True) event.listen( parent_cls, "refresh", load_attrs, raw=True, propagate=True |
