mirror of
https://github.com/postgres/postgres.git
synced 2025-11-21 00:42:43 +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:
@@ -22,7 +22,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/optimizer/prep/prepunion.c,v 1.165 2009/02/06 23:43:23 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/optimizer/prep/prepunion.c,v 1.166 2009/02/25 03:30:37 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -1587,23 +1587,6 @@ adjust_appendrel_attrs_mutator(Node *node, AppendRelInfo *context)
|
||||
j->rtindex = context->child_relid;
|
||||
return (Node *) j;
|
||||
}
|
||||
if (IsA(node, FlattenedSubLink))
|
||||
{
|
||||
/* Copy the FlattenedSubLink node with correct mutation of subnodes */
|
||||
FlattenedSubLink *fslink;
|
||||
|
||||
fslink = (FlattenedSubLink *) expression_tree_mutator(node,
|
||||
adjust_appendrel_attrs_mutator,
|
||||
(void *) context);
|
||||
/* now fix FlattenedSubLink's relid sets */
|
||||
fslink->lefthand = adjust_relid_set(fslink->lefthand,
|
||||
context->parent_relid,
|
||||
context->child_relid);
|
||||
fslink->righthand = adjust_relid_set(fslink->righthand,
|
||||
context->parent_relid,
|
||||
context->child_relid);
|
||||
return (Node *) fslink;
|
||||
}
|
||||
if (IsA(node, PlaceHolderVar))
|
||||
{
|
||||
/* Copy the PlaceHolderVar node with correct mutation of subnodes */
|
||||
|
||||
Reference in New Issue
Block a user