Teach CLUSTER to use seqscan-and-sort when it's faster than indexscan.
Tom Lane <tgl@sss.pgh.pa.us>
Teach CLUSTER to use seqscan-and-sort when it's faster than indexscan. ... or at least, when the planner's cost estimates say it will be faster. Leonardo Francalanci, reviewed by Itagaki Takahiro and Tom Lane
Files
| Path | Change | +/− |
|---|---|---|
| doc/src/sgml/ref/cluster.sgml | modified | +30 −37 |
| src/backend/commands/cluster.c | modified | +121 −40 |
| src/backend/optimizer/path/costsize.c | modified | +28 −17 |
| src/backend/optimizer/plan/createplan.c | modified | +3 −0 |
| src/backend/optimizer/plan/planmain.c | modified | +2 −1 |
| src/backend/optimizer/plan/planner.c | modified | +117 −6 |
| src/backend/optimizer/prep/prepunion.c | modified | +2 −1 |
| src/backend/optimizer/util/pathnode.c | modified | +2 −0 |
| src/backend/optimizer/util/plancat.c | modified | +65 −21 |
| src/backend/utils/sort/tuplesort.c | modified | +310 −0 |
| src/include/optimizer/cost.h | modified | +1 −0 |
| src/include/optimizer/plancat.h | modified | +2 −0 |
| src/include/optimizer/planner.h | modified | +2 −0 |
| src/include/utils/tuplesort.h | modified | +28 −15 |