Add the ability to extract OR indexscan conditions from OR-of-AND
Tom Lane <tgl@sss.pgh.pa.us>
Add the ability to extract OR indexscan conditions from OR-of-AND join conditions in which each OR subclause includes a constraint on the same relation. This implements the other useful side-effect of conversion to CNF format, without its unpleasant side-effects. As per pghackers discussion of a few weeks ago.
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/nodes/copyfuncs.c | modified | +4 −3 |
| src/backend/nodes/equalfuncs.c | modified | +3 −2 |
| src/backend/nodes/outfuncs.c | modified | +5 −4 |
| src/backend/optimizer/path/allpaths.c | modified | +12 −3 |
| src/backend/optimizer/path/costsize.c | modified | +124 −158 |
| src/backend/optimizer/path/indxpath.c | modified | +37 −20 |
| src/backend/optimizer/path/joinpath.c | modified | +7 −7 |
| src/backend/optimizer/path/orindxpath.c | modified | +163 −48 |
| src/backend/optimizer/plan/createplan.c | modified | +2 −1 |
| src/backend/optimizer/plan/initsplan.c | modified | +21 −8 |
| src/backend/optimizer/util/pathnode.c | modified | +2 −8 |
| src/backend/optimizer/util/restrictinfo.c | modified | +28 −16 |
| src/include/nodes/relation.h | modified | +21 −12 |
| src/include/optimizer/cost.h | modified | +2 −1 |
| src/include/optimizer/paths.h | modified | +3 −1 |
| src/include/optimizer/restrictinfo.h | modified | +3 −2 |