.. include:: changelog_07.rst
:start-line: 5
+.. changelog::
+ :version: 0.9.9
+
+ .. change::
+ :tags: bug, orm
+ :tickets: 3232
+ :versions: 1.0.0
+
+ Fixed bug where the ON clause for :meth:`.Query.join`,
+ and :meth:`.Query.outerjoin` to a single-inheritance subclass
+ using ``of_type()`` would not render the "single table criteria" in
+ the ON clause if the ``from_joinpoint=True`` flag were set.
+
.. changelog::
:version: 0.9.8
:released: October 13, 2014
left_entity = prop = None
+ if isinstance(onclause, interfaces.PropComparator):
+ of_type = getattr(onclause, '_of_type', None)
+ else:
+ of_type = None
+
if isinstance(onclause, util.string_types):
left_entity = self._joinpoint_zero()
if isinstance(onclause, interfaces.PropComparator):
if right_entity is None:
- right_entity = onclause.property.mapper
- of_type = getattr(onclause, '_of_type', None)
if of_type:
right_entity = of_type
else:
]
)
+ def test_of_type_aliased_fromjoinpoint(self):
+ Company, Employee, Engineer = self.classes.Company,\
+ self.classes.Employee,\
+ self.classes.Engineer
+ companies, employees = self.tables.companies, self.tables.employees
+
+ mapper(Company, companies, properties={
+ 'employee':relationship(Employee)
+ })
+ mapper(Employee, employees, polymorphic_on=employees.c.type)
+ mapper(Engineer, inherits=Employee, polymorphic_identity='engineer')
+
+ sess = create_session()
+ self.assert_compile(
+ sess.query(Company).outerjoin(
+ Company.employee.of_type(Engineer),
+ aliased=True, from_joinpoint=True),
+ "SELECT companies.company_id AS companies_company_id, "
+ "companies.name AS companies_name FROM companies "
+ "LEFT OUTER JOIN employees AS employees_1 ON "
+ "companies.company_id = employees_1.company_id "
+ "AND employees_1.type IN (:type_1)"
+ )
+
def test_outer_join_prop(self):
Company, Employee, Engineer = self.classes.Company,\
self.classes.Employee,\
"AND employees_1.type IN (:type_1)"
)
+
def test_relationship_to_subclass(self):
JuniorEngineer, Company, companies, Manager, \
Employee, employees, Engineer = (self.classes.JuniorEngineer,