Skip to content
Snippets Groups Projects
Commit a49147af authored by Tom Lane's avatar Tom Lane
Browse files

Fix an oversight in convert_EXISTS_sublink_to_join: we can't convert an

EXISTS that contains a WITH clause.  This would usually lead to a
"could not find CTE" error later in planning, because the WITH wouldn't
get processed at all.  Noted while playing with an example from Ken Marshall.
parent a0a7e634
No related branches found
No related tags found
No related merge requests found
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/optimizer/plan/subselect.c,v 1.157 2010/01/02 16:57:47 momjian Exp $ * $PostgreSQL: pgsql/src/backend/optimizer/plan/subselect.c,v 1.158 2010/01/18 18:17:45 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -1114,6 +1114,17 @@ convert_EXISTS_sublink_to_join(PlannerInfo *root, SubLink *sublink, ...@@ -1114,6 +1114,17 @@ convert_EXISTS_sublink_to_join(PlannerInfo *root, SubLink *sublink,
Assert(sublink->subLinkType == EXISTS_SUBLINK); Assert(sublink->subLinkType == EXISTS_SUBLINK);
/*
* Can't flatten if it contains WITH. (We could arrange to pull up the
* WITH into the parent query's cteList, but that risks changing the
* semantics, since a WITH ought to be executed once per associated query
* call.) Note that convert_ANY_sublink_to_join doesn't have to reject
* this case, since it just produces a subquery RTE that doesn't have to
* get flattened into the parent query.
*/
if (subselect->cteList)
return NULL;
/* /*
* Copy the subquery so we can modify it safely (see comments in * Copy the subquery so we can modify it safely (see comments in
* make_subplan). * make_subplan).
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment