diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2008-11-11 18:13:32 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2008-11-11 18:13:32 +0000 |
commit | 04366799694418ed899e95ce45143a699a75116e (patch) | |
tree | bb54fee3da6b1b10fef6fdeeb7b238fa9b69c6b0 /src/backend/optimizer/path/allpaths.c | |
parent | ccc9073f26b8504e5ce168738ffcc4c4c8d2fa0a (diff) | |
download | postgresql-04366799694418ed899e95ce45143a699a75116e.tar.gz postgresql-04366799694418ed899e95ce45143a699a75116e.zip |
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.
Diffstat (limited to 'src/backend/optimizer/path/allpaths.c')
-rw-r--r-- | src/backend/optimizer/path/allpaths.c | 14 |
1 files changed, 6 insertions, 8 deletions
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 |