From 04366799694418ed899e95ce45143a699a75116e Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Tue, 11 Nov 2008 18:13:32 +0000 Subject: Get rid of adjust_appendrel_attr_needed(), which has been broken ever since we extended the appendrel mechanism to support UNION ALL optimization. The reason nobody noticed was that we are not actually using attr_needed data for appendrel children; hence it seems more reasonable to rip it out than fix it. Back-patch to 8.2 because an Assert failure is possible in corner cases. Per examination of an example from Jim Nasby. In HEAD, also get rid of AppendRelInfo.col_mappings, which is quite inadequate to represent UNION ALL situations; depend entirely on translated_vars instead. --- src/backend/optimizer/path/allpaths.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'src/backend/optimizer/path/allpaths.c') diff --git a/src/backend/optimizer/path/allpaths.c b/src/backend/optimizer/path/allpaths.c index 7d6a3b8d6b5..4d868570bcb 100644 --- a/src/backend/optimizer/path/allpaths.c +++ b/src/backend/optimizer/path/allpaths.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/path/allpaths.c,v 1.175 2008/10/21 20:42:52 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/path/allpaths.c,v 1.176 2008/11/11 18:13:32 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -382,14 +382,12 @@ set_append_rel_pathlist(PlannerInfo *root, RelOptInfo *rel, } /* - * Copy the parent's attr_needed data as well, with appropriate - * adjustment of relids and attribute numbers. + * Note: we could compute appropriate attr_needed data for the + * child's variables, by transforming the parent's attr_needed + * through the translated_vars mapping. However, currently there's + * no need because attr_needed is only examined for base relations + * not otherrels. So we just leave the child's attr_needed empty. */ - pfree(childrel->attr_needed); - childrel->attr_needed = - adjust_appendrel_attr_needed(rel, appinfo, - childrel->min_attr, - childrel->max_attr); /* * Compute the child's access paths, and add the cheapest one to the -- cgit v1.2.3