quickfix.diff

text/plain

Filename: quickfix.diff
Type: text/plain
Part: 0
Message: Re: Removing unneeded self joins

Patch

Same data as JSON: GET /api/v1/attachments/:id/patch the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes. API reference →
Format: unified
File+
src/backend/optimizer/plan/analyzejoins.c 5 0
diff --git a/src/backend/optimizer/plan/analyzejoins.c b/src/backend/optimizer/plan/analyzejoins.c
index 6c02fe8908..f79c673afd 100644
--- a/src/backend/optimizer/plan/analyzejoins.c
+++ b/src/backend/optimizer/plan/analyzejoins.c
@@ -1861,6 +1861,8 @@ remove_self_join_rel(PlannerInfo *root, PlanRowMark *kmark, PlanRowMark *rmark,
 	/* Replace varno in all the query structures */
 	query_tree_walker(root->parse, replace_varno_walker, &ctx,
 					  QTW_EXAMINE_SORTGROUP);
+	if (root->parse->resultRelation == toRemove->relid)
+		root->parse->resultRelation = toKeep->relid;
 
 	/* Replace links in the planner info */
 	remove_rel_from_query(root, toRemove, toKeep->relid, NULL, NULL);
@@ -1870,6 +1872,9 @@ remove_self_join_rel(PlannerInfo *root, PlanRowMark *kmark, PlanRowMark *rmark,
 				  toRemove->relid, toKeep->relid);
 	replace_varno((Node *) root->processed_groupClause,
 				  toRemove->relid, toKeep->relid);
+	replace_relid(root->all_result_relids, toRemove->relid, toKeep->relid);
+	replace_relid(root->leaf_result_relids, toRemove->relid, toKeep->relid);
+
 
 	/*
 	 * There may be references to the rel in root->fkey_list, but if so,