summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2015-12-21 21:42:45 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2015-12-21 21:42:45 -0500
commit4b708c48398f6451b6ab0a940a1f247ebcfe26ac (patch)
tree7d1773f8a2e7a36ff0f65946919452176677ce44
parent5e5b8a96a7978f5a73a4bd248767122efc5ea265 (diff)
downloadsqlalchemy-4b708c48398f6451b6ab0a940a1f247ebcfe26ac.tar.gz
- add the test from ref #3614 as well for testing ref #3611
-rw-r--r--test/orm/inheritance/test_relationship.py60
1 files changed, 60 insertions, 0 deletions
diff --git a/test/orm/inheritance/test_relationship.py b/test/orm/inheritance/test_relationship.py
index e75d974d4..0afc6d900 100644
--- a/test/orm/inheritance/test_relationship.py
+++ b/test/orm/inheritance/test_relationship.py
@@ -1361,6 +1361,66 @@ class SubClassToSubClassMultiTest(AssertsCompiledSQL, fixtures.MappedTest):
)
+class JoinedloadSinglePolysubSingle(
+ fixtures.DeclarativeMappedTest,
+ testing.AssertsCompiledSQL):
+ """exercise issue #3611, using the test from dupe issue 3614"""
+
+ run_define_tables = None
+ __dialect__ = 'default'
+
+ @classmethod
+ def setup_classes(cls):
+ Base = cls.DeclarativeBasic
+
+ class User(Base):
+ __tablename__ = 'users'
+ id = Column(Integer, primary_key=True)
+
+ class UserRole(Base):
+ __tablename__ = 'user_roles'
+
+ id = Column(Integer, primary_key=True)
+
+ row_type = Column(String, nullable=False)
+ __mapper_args__ = {'polymorphic_on': row_type}
+
+ user_id = Column(Integer, ForeignKey('users.id'), nullable=False)
+ user = relationship('User', lazy=False)
+
+ class Admin(UserRole):
+ __tablename__ = 'admins'
+ __mapper_args__ = {'polymorphic_identity': 'admin'}
+
+ id = Column(Integer, ForeignKey('user_roles.id'), primary_key=True)
+
+ class Thing(Base):
+ __tablename__ = 'things'
+
+ id = Column(Integer, primary_key=True)
+
+ admin_id = Column(Integer, ForeignKey('admins.id'))
+ admin = relationship('Admin', lazy=False)
+
+ def test_query(self):
+ Thing = self.classes.Thing
+ sess = Session()
+ self.assert_compile(
+ sess.query(Thing),
+ "SELECT things.id AS things_id, "
+ "things.admin_id AS things_admin_id, "
+ "users_1.id AS users_1_id, admins_1.id AS admins_1_id, "
+ "user_roles_1.id AS user_roles_1_id, "
+ "user_roles_1.row_type AS user_roles_1_row_type, "
+ "user_roles_1.user_id AS user_roles_1_user_id FROM things "
+ "LEFT OUTER JOIN (user_roles AS user_roles_1 JOIN admins "
+ "AS admins_1 ON user_roles_1.id = admins_1.id) ON "
+ "admins_1.id = things.admin_id "
+ "LEFT OUTER JOIN users AS "
+ "users_1 ON users_1.id = user_roles_1.user_id"
+ )
+
+
class JoinedloadOverWPolyAliased(
fixtures.DeclarativeMappedTest,
testing.AssertsCompiledSQL):