save-cycles-in-repeated-subquery-pullup-1.patch

text/x-diff

Filename: save-cycles-in-repeated-subquery-pullup-1.patch
Type: text/x-diff
Part: 0
Message: Re: Planning time grows exponentially with levels of nested views

Patch

Format: unified
File+
src/backend/optimizer/prep/prepjointree.c 8 0
diff --git a/src/backend/optimizer/prep/prepjointree.c b/src/backend/optimizer/prep/prepjointree.c
index 62a1668796..f93c037778 100644
--- a/src/backend/optimizer/prep/prepjointree.c
+++ b/src/backend/optimizer/prep/prepjointree.c
@@ -1174,6 +1174,14 @@ pull_up_simple_subquery(PlannerInfo *root, Node *jtnode, RangeTblEntry *rte,
 	Assert(root->placeholder_list == NIL);
 	Assert(subroot->placeholder_list == NIL);
 
+	/*
+	 * We no longer need the RTE's copy of the subquery's query tree.  Getting
+	 * rid of it saves nothing in particular so far as this level of query is
+	 * concerned; but if this query level is in turn pulled up into a parent,
+	 * we'd waste cycles copying the now-unused query tree.
+	 */
+	rte->subquery = NULL;
+
 	/*
 	 * Miscellaneous housekeeping.
 	 *