diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2016-10-13 12:27:18 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2016-10-17 11:29:23 -0400 |
commit | c02675b407b8326643b559770d6d9686b880c113 (patch) | |
tree | 761ef462196141ff0fe7e92300e24459194fab8a /lib/sqlalchemy/dialects/postgresql/base.py | |
parent | ae7d2837b3c5ae3fd6e9dad6b14a26abb32cfee5 (diff) | |
download | sqlalchemy-c02675b407b8326643b559770d6d9686b880c113.tar.gz |
Memoize load_path in all cases, run quick populators for path change
Adds a new variant to the "isnew" state within entity loading
for isnew=False, but the load path is new. This is to address
the use case of an entity appearing in multiple places in
the row in a more generalized way than the fixes in [ticket:3431],
[ticket:3811] in that loading.py will be able to tell the
populator that this row is not "isnew" but is a "new" path
for the entity. For the moment, the new information is only
being applied to the use of "quick" populators so that
simple column loads can take place on top of a deferred loader
from elsewhere in the row.
As part of this change, state.load_path() will now always
be populated with the "path" that was in effect when this state
was originally loaded, which for multi-path loads of the
same entity is still non-deterministic. Ideally there'd be some
kind of "here's all the paths that loaded this state and how"
type of data structure though it's not clear if that could be
done while maintaining performance.
Fixes: #3822
Change-Id: Ib915365353dfcca09e15c24001a8581113b97d5e
Diffstat (limited to 'lib/sqlalchemy/dialects/postgresql/base.py')
0 files changed, 0 insertions, 0 deletions