]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Add note indicating order of join() calls are important
authorMike Bayer <mike_mp@zzzcomputing.com>
Fri, 19 Jun 2020 15:06:08 +0000 (11:06 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Fri, 19 Jun 2020 15:06:08 +0000 (11:06 -0400)
Fixes: #5406
Change-Id: I186792b32bd156d5ddf256dcd018af32ad5b515e

lib/sqlalchemy/orm/query.py

index cdad55320c337d19d326216dfaa99428ca31bc6a..abbba4172234758966458cd854b2bac139f9e8f9 100644 (file)
@@ -1965,6 +1965,19 @@ class Query(
                     join(Order.items).\
                     join(Item.keywords)
 
+        .. note:: as seen in the above example, **the order in which each
+           call to the join() method occurs is important**.    Query would not,
+           for example, know how to join correctly if we were to specify
+           ``User``, then ``Item``, then ``Order``, in our chain of joins; in
+           such a case, depending on the arguments passed, it may raise an
+           error that it doesn't know how to join, or it may produce invalid
+           SQL in which case the database will raise an error. In correct
+           practice, the
+           :meth:`_query.Query.join` method is invoked in such a way that lines
+           up with how we would want the JOIN clauses in SQL to be
+           rendered, and each call should represent a clear link from what
+           precedes it.
+
         **Joins to a Target Entity or Selectable**
 
         A second form of :meth:`_query.Query.join` allows any mapped entity or