]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commit
improve natural_path usage in two places
authorMike Bayer <mike_mp@zzzcomputing.com>
Thu, 27 Apr 2023 20:48:25 +0000 (16:48 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 29 Apr 2023 05:07:53 +0000 (01:07 -0400)
commite7e09649761cfb4afc242c541ab403258e75edd5
treedaa3360ec06e4c10dd2efcc80f4f51198c7b7424
parent1329037bfed428e458547824a861ce1aa9df0c78
improve natural_path usage in two places

Fixed loader strategy pathing issues where eager loaders such as
:func:`_orm.joinedload` / :func:`_orm.selectinload` would fail to traverse
fully for many-levels deep following a load that had a
:func:`_orm.with_polymorphic` or similar construct as an interim member.

Here we can take advantage of 2.0's refactoring of strategy_options
to identify the "chop_path" concept can be simplified to work
with "natural" paths alone.

In addition, identified existing
logic in PropRegistry that works fine, but needed the "is_unnatural"
attribute to be more accurate for a given path, so we set that
up front to True if the ancestor is_unnatural.

Fixes: #9715
Change-Id: Ie6b3f55b6a23d0d32628afd22437094263745114
doc/build/changelog/unreleased_20/9715.rst [new file with mode: 0644]
lib/sqlalchemy/orm/path_registry.py
lib/sqlalchemy/orm/strategies.py
lib/sqlalchemy/orm/strategy_options.py
lib/sqlalchemy/testing/fixtures.py
test/orm/inheritance/test_assorted_poly.py