Create hooks to let a loadable plugin monitor (or even replace) the planner
Tom Lane <tgl@sss.pgh.pa.us>
Create hooks to let a loadable plugin monitor (or even replace) the planner and/or create plans for hypothetical situations; in particular, investigate plans that would be generated using hypothetical indexes. This is a heavily-rewritten version of the hooks proposed by Gurjeet Singh for his Index Advisor project. In this formulation, the index advisor can be entirely a loadable module instead of requiring a significant part to be in the core backend, and plans can be generated for hypothetical indexes without requiring the creation and rolling-back of system catalog entries. The index advisor patch as-submitted is not compatible with these hooks, but it needs significant work anyway due to other 8.2-to-8.3 planner changes. With these hooks in the core backend, development of the advisor can proceed as a pgfoundry project.
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/commands/explain.c | modified | +68 −28 |
| src/backend/commands/prepare.c | modified | +2 −19 |
| src/backend/executor/nodeBitmapIndexscan.c | modified | +14 −4 |
| src/backend/executor/nodeIndexscan.c | modified | +14 −4 |
| src/backend/optimizer/plan/planner.c | modified | +25 −1 |
| src/backend/optimizer/util/plancat.c | modified | +12 −1 |
| src/include/commands/explain.h | modified | +15 −3 |
| src/include/optimizer/plancat.h | modified | +8 −1 |
| src/include/optimizer/planner.h | modified | +10 −1 |