Create the planner mechanism for optimizing simple MIN and MAX queries
Tom Lane <tgl@sss.pgh.pa.us>
Create the planner mechanism for optimizing simple MIN and MAX queries into indexscans on matching indexes. For the moment, it only handles int4 and text datatypes; next step is to add a column to pg_aggregate so that all MIN/MAX aggregates can be handled. Per my recent proposal.
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/optimizer/path/indxpath.c | modified | +3 −6 |
| src/backend/optimizer/plan/Makefile | modified | +3 −2 |
| src/backend/optimizer/plan/planagg.c | added | +575 −0 |
| src/backend/optimizer/plan/planner.c | modified | +175 −185 |
| src/backend/optimizer/plan/subselect.c | modified | +104 −3 |
| src/backend/utils/cache/lsyscache.c | modified | +26 −1 |
| src/include/optimizer/paths.h | modified | +4 −1 |
| src/include/optimizer/planmain.h | modified | +7 −1 |
| src/include/optimizer/subselect.h | modified | +3 −1 |
| src/include/utils/lsyscache.h | modified | +2 −1 |
| src/test/regress/expected/aggregates.out | modified | +55 −0 |
| src/test/regress/expected/create_index.out | modified | +1 −0 |
| src/test/regress/sql/aggregates.sql | modified | +20 −0 |
| src/test/regress/sql/create_index.sql | modified | +2 −0 |