summaryrefslogtreecommitdiff
path: root/test/sql
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2021-06-07 17:47:07 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2021-06-07 17:48:55 -0400
commitbface2e2fae834246729e539646ce229b8a113d1 (patch)
treeed4572be7043a1d4f8e3a20300cd92ad4bf89a5a /test/sql
parent94169108cdd4dace09b752a6af4f4404819b49a3 (diff)
downloadsqlalchemy-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.py32
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):