From: Jesse Bakker Date: Fri, 14 Aug 2020 19:21:37 +0000 (+0200) Subject: Add test for configuring concrete discriminator X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2f5ffa3a15c8d309ee1551d5ea2a47d0a67376c6;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Add test for configuring concrete discriminator --- diff --git a/test/ext/declarative/test_inheritance.py b/test/ext/declarative/test_inheritance.py index d33dbd4bee..726169622e 100644 --- a/test/ext/declarative/test_inheritance.py +++ b/test/ext/declarative/test_inheritance.py @@ -2038,3 +2038,40 @@ class ConcreteExtensionConfigTest( "(SELECT offers.documenttype AS documenttype, offers.id AS id, " "'offer' AS type FROM offers) AS pjoin", ) + + def test_configure_discriminator_col(self): + """test #5513""" + + class Employee(AbstractConcreteBase, Base): + _concrete_discriminator_name = ( + "_alternative_concrete_discriminator" + ) + employee_id = Column(Integer, primary_key=True) + + class Manager(Employee): + __tablename__ = "manager" + + __mapper_args__ = { + "polymorphic_identity": "manager", + "concrete": True, + } + + class Engineer(Employee): + __tablename__ = "engineer" + + __mapper_args__ = { + "polymorphic_identity": "engineer", + "concrete": True, + } + + configure_mappers() + self.assert_compile( + Session().query(Employee), + "SELECT pjoin.employee_id AS pjoin_employee_id, " + "pjoin._alternative_concrete_discriminator AS pjoin__alternative_concrete_discriminator " + "FROM (SELECT engineer.employee_id AS employee_id, " + "'engineer' AS _alternative_concrete_discriminator " + "FROM engineer UNION ALL SELECT manager.employee_id AS employee_id, " + "'manager' AS _alternative_concrete_discriminator " + "FROM manager) AS pjoin", + )