diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2021-06-07 17:47:07 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2021-06-07 17:48:55 -0400 |
| commit | bface2e2fae834246729e539646ce229b8a113d1 (patch) | |
| tree | ed4572be7043a1d4f8e3a20300cd92ad4bf89a5a /test/sql | |
| parent | 94169108cdd4dace09b752a6af4f4404819b49a3 (diff) | |
| download | sqlalchemy-bface2e2fae834246729e539646ce229b8a113d1.tar.gz | |
repair Join.is_derived_from() to not rely on simple identity
Fixed issue where query production for joinedload against a complex left
hand side involving joined-table inheritance could fail to produce a
correct query, due to a clause adaption issue.
Fixes: #6595
Change-Id: Id4b839d52447cdc103b392dd8946c4cfa7a829e1
Diffstat (limited to 'test/sql')
| -rw-r--r-- | test/sql/test_selectable.py | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/test/sql/test_selectable.py b/test/sql/test_selectable.py index add07e013..efa3be523 100644 --- a/test/sql/test_selectable.py +++ b/test/sql/test_selectable.py @@ -2594,6 +2594,38 @@ class DerivedTest(fixtures.TestBase, AssertsExecutionResults): assert select(t1, t2).alias("foo").is_derived_from(t1) assert not t2.select().alias("foo").is_derived_from(t1) + def test_join(self): + meta = MetaData() + + t1 = Table( + "t1", + meta, + Column("c1", Integer, primary_key=True), + Column("c2", String(30)), + ) + t2 = Table( + "t2", + meta, + Column("c1", Integer, primary_key=True), + Column("c2", String(30)), + ) + t3 = Table( + "t3", + meta, + Column("c1", Integer, primary_key=True), + Column("c2", String(30)), + ) + + j1 = t1.join(t2, t1.c.c1 == t2.c.c1) + + assert j1.is_derived_from(j1) + + assert j1.is_derived_from(t1) + + assert j1._annotate({"foo": "bar"}).is_derived_from(j1) + + assert not j1.is_derived_from(t3) + class AnnotationsTest(fixtures.TestBase): def test_hashing(self): |
