Refactor planner's pathkeys data structure to create a separate, explicit
representation of equivalence classes of variables. This is an extensive rewrite, but it brings a number of benefits: * planner no longer fails in the presence of "incomplete" operator families that don't offer operators for every possible combination of datatypes. * avoid generating and then discarding redundant equality clauses. * remove bogus assumption that derived equalities always use operators named "=". * mergejoins can work with a variety of sort orders (e.g., descending) now, instead of tying each mergejoinable operator to exactly one sort order. * better recognition of redundant sort columns. * can make use of equalities appearing underneath an outer join.
Showing
- doc/src/sgml/xoper.sgml 38 additions, 54 deletionsdoc/src/sgml/xoper.sgml
- src/backend/nodes/copyfuncs.c 19 additions, 23 deletionssrc/backend/nodes/copyfuncs.c
- src/backend/nodes/equalfuncs.c 23 additions, 7 deletionssrc/backend/nodes/equalfuncs.c
- src/backend/nodes/outfuncs.c 57 additions, 33 deletionssrc/backend/nodes/outfuncs.c
- src/backend/nodes/print.c 16 additions, 7 deletionssrc/backend/nodes/print.c
- src/backend/optimizer/README 244 additions, 207 deletionssrc/backend/optimizer/README
- src/backend/optimizer/path/Makefile 2 additions, 2 deletionssrc/backend/optimizer/path/Makefile
- src/backend/optimizer/path/allpaths.c 11 additions, 1 deletionsrc/backend/optimizer/path/allpaths.c
- src/backend/optimizer/path/costsize.c 33 additions, 21 deletionssrc/backend/optimizer/path/costsize.c
- src/backend/optimizer/path/equivclass.c 1662 additions, 0 deletionssrc/backend/optimizer/path/equivclass.c
- src/backend/optimizer/path/indxpath.c 144 additions, 313 deletionssrc/backend/optimizer/path/indxpath.c
- src/backend/optimizer/path/joinpath.c 48 additions, 139 deletionssrc/backend/optimizer/path/joinpath.c
- src/backend/optimizer/path/joinrels.c 5 additions, 5 deletionssrc/backend/optimizer/path/joinrels.c
- src/backend/optimizer/path/pathkeys.c 647 additions, 876 deletionssrc/backend/optimizer/path/pathkeys.c
- src/backend/optimizer/plan/createplan.c 168 additions, 39 deletionssrc/backend/optimizer/plan/createplan.c
- src/backend/optimizer/plan/initsplan.c 312 additions, 444 deletionssrc/backend/optimizer/plan/initsplan.c
- src/backend/optimizer/plan/planmain.c 19 additions, 12 deletionssrc/backend/optimizer/plan/planmain.c
- src/backend/optimizer/plan/planner.c 23 additions, 14 deletionssrc/backend/optimizer/plan/planner.c
- src/backend/optimizer/prep/prepjointree.c 2 additions, 1 deletionsrc/backend/optimizer/prep/prepjointree.c
- src/backend/optimizer/prep/prepunion.c 3 additions, 5 deletionssrc/backend/optimizer/prep/prepunion.c
Loading
Please register or sign in to comment