postgresql/src/include/optimizer
Tom Lane cde35cf4ae Fix eclass_useful_for_merging to give valid results for appendrel children.
Formerly, this function would always return "true" for an appendrel child
relation, because it would think that the appendrel parent was a potential
join target for the child.  In principle that should only lead to some
inefficiency in planning, but fuzz testing by Andreas Seltenreich disclosed
that it could lead to "could not find pathkey item to sort" planner errors
in odd corner cases.  Specifically, we would think that all columns of a
child table's multicolumn index were interesting pathkeys, causing us to
generate a MergeAppend path that sorts by all the columns.  However, if any
of those columns weren't actually used above the level of the appendrel,
they would not get added to that rel's targetlist, which would result in
being unable to resolve the MergeAppend's sort keys against its targetlist
during createplan.c.

Backpatch to 9.3.  In older versions, columns of an appendrel get added
to its targetlist even if they're not mentioned above the scan level,
so that the failure doesn't occur.  It might be worth back-patching this
fix to older versions anyway, but I'll refrain for the moment.
2015-08-06 20:14:53 -04:00
..
clauses.h Improve qual pushdown for RLS and SB views 2015-04-27 12:29:42 -04:00
cost.h Redesign tablesample method API, and do extensive code review. 2015-07-25 14:39:00 -04:00
geqo.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
geqo_copy.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
geqo_gene.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
geqo_misc.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
geqo_mutation.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
geqo_pool.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
geqo_random.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
geqo_recombination.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
geqo_selection.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
joininfo.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
orclauses.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
pathnode.h pgindent run for 9.5 2015-05-23 21:35:49 -04:00
paths.h Fix eclass_useful_for_merging to give valid results for appendrel children. 2015-08-06 20:14:53 -04:00
placeholder.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
plancat.h Add support for INSERT ... ON CONFLICT DO NOTHING/UPDATE. 2015-05-08 05:43:10 +02:00
planmain.h Support GROUPING SETS, CUBE and ROLLUP. 2015-05-16 03:46:31 +02:00
planner.h Allow foreign tables to participate in inheritance. 2015-03-22 13:53:21 -04:00
predtest.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
prep.h pgindent run for 9.5 2015-05-23 21:35:49 -04:00
restrictinfo.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
subselect.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
tlist.h pgindent run for 9.5 2015-05-23 21:35:49 -04:00
var.h Update copyright for 2015 2015-01-06 11:43:47 -05:00