From bface2e2fae834246729e539646ce229b8a113d1 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Mon, 7 Jun 2021 17:47:07 -0400 Subject: 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 --- test/sql/test_selectable.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'test/sql') 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): -- cgit v1.2.1