]> granicus.if.org Git - postgresql/commit
Further fallout from the MergeAppend patch.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 18 Nov 2010 05:30:10 +0000 (00:30 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 18 Nov 2010 05:30:10 +0000 (00:30 -0500)
commit6fbc323c8042303a737028f9da7616896bccc517
tree8335501afc6e883ea14d0f88b3ca4f48f8a759ec
parent45768d10e3abd513b4c959efeb5907798f2fac3f
Further fallout from the MergeAppend patch.

Fix things so that top-N sorting can be used in child Sort nodes of a
MergeAppend node, when there is a LIMIT and no intervening joins or
grouping.  Actually doing this on the executor side isn't too bad,
but it's a bit messier to get the planner to cost it properly.
Per gripe from Robert Haas.

In passing, fix an oversight in the original top-N-sorting patch:
query_planner should not assume that a LIMIT can be used to make an
explicit sort cheaper when there will be grouping or aggregation in
between.  Possibly this should be back-patched, but I'm not sure the
mistake is serious enough to be a real problem in practice.
src/backend/executor/nodeLimit.c
src/backend/nodes/outfuncs.c
src/backend/optimizer/plan/createplan.c
src/backend/optimizer/plan/planmain.c
src/backend/optimizer/plan/planner.c
src/backend/optimizer/util/pathnode.c
src/include/nodes/relation.h