mirror of
https://github.com/postgres/postgres.git
synced 2025-11-16 15:02:33 +03:00
Get rid of the rather fuzzily defined FlattenedSubLink node type in favor of
making pull_up_sublinks() construct a full-blown JoinExpr tree representation of IN/EXISTS SubLinks that it is able to convert to semi or anti joins. This makes pull_up_sublinks() a shade more complex, but the gain in semantic clarity is worth it. I still have more to do in this area to address the previously-discussed problems, but this commit in itself fixes at least one bug in HEAD, as shown by added regression test case.
This commit is contained in:
@@ -10,7 +10,7 @@
|
||||
* Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/include/nodes/primnodes.h,v 1.145 2009/01/01 17:24:00 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/include/nodes/primnodes.h,v 1.146 2009/02/25 03:30:37 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -1137,7 +1137,9 @@ typedef struct RangeTblRef
|
||||
*
|
||||
* During parse analysis, an RTE is created for the Join, and its index
|
||||
* is filled into rtindex. This RTE is present mainly so that Vars can
|
||||
* be created that refer to the outputs of the join.
|
||||
* be created that refer to the outputs of the join. The planner sometimes
|
||||
* generates JoinExprs internally; these can have rtindex = 0 if there are
|
||||
* no join alias variables referencing such joins.
|
||||
*----------
|
||||
*/
|
||||
typedef struct JoinExpr
|
||||
@@ -1150,7 +1152,7 @@ typedef struct JoinExpr
|
||||
List *using; /* USING clause, if any (list of String) */
|
||||
Node *quals; /* qualifiers on join, if any */
|
||||
Alias *alias; /* user-written alias clause, if any */
|
||||
int rtindex; /* RT index assigned for join */
|
||||
int rtindex; /* RT index assigned for join, or 0 */
|
||||
} JoinExpr;
|
||||
|
||||
/*----------
|
||||
|
||||
Reference in New Issue
Block a user