summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/dialects/postgresql/base.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2016-10-13 12:27:18 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2016-10-17 11:29:23 -0400
commitc02675b407b8326643b559770d6d9686b880c113 (patch)
tree761ef462196141ff0fe7e92300e24459194fab8a /lib/sqlalchemy/dialects/postgresql/base.py
parentae7d2837b3c5ae3fd6e9dad6b14a26abb32cfee5 (diff)
downloadsqlalchemy-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