mirror of
https://github.com/postgres/postgres.git
synced 2025-11-16 15:02:33 +03:00
Teach planner how to rearrange join order for some classes of OUTER JOIN.
Per my recent proposal. I ended up basing the implementation on the existing mechanism for enforcing valid join orders of IN joins --- the rules for valid outer-join orders are somewhat similar.
This commit is contained in:
@@ -10,7 +10,7 @@
|
||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/include/nodes/primnodes.h,v 1.109 2005/10/15 02:49:45 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/include/nodes/primnodes.h,v 1.110 2005/12/20 02:30:36 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -845,12 +845,7 @@ typedef struct TargetEntry
|
||||
* or qualified join. Also, FromExpr nodes can appear to denote an
|
||||
* ordinary cross-product join ("FROM foo, bar, baz WHERE ...").
|
||||
* FromExpr is like a JoinExpr of jointype JOIN_INNER, except that it
|
||||
* may have any number of child nodes, not just two. Also, there is an
|
||||
* implementation-defined difference: the planner is allowed to join the
|
||||
* children of a FromExpr using whatever join order seems good to it.
|
||||
* At present, JoinExpr nodes are always joined in exactly the order
|
||||
* implied by the jointree structure (except the planner may choose to
|
||||
* swap inner and outer members of a join pair).
|
||||
* may have any number of child nodes, not just two.
|
||||
*
|
||||
* NOTE: the top level of a Query's jointree is always a FromExpr.
|
||||
* Even if the jointree contains no rels, there will be a FromExpr.
|
||||
|
||||
Reference in New Issue
Block a user