Rework join-removal logic as per recent discussion. In particular this
fixes things so that it works for cases where nested removals are possible. The overhead of the optimization should be significantly less, as well.
Showing
- src/backend/nodes/outfuncs.c 1 addition, 14 deletionssrc/backend/nodes/outfuncs.c
- src/backend/optimizer/README 1 addition, 2 deletionssrc/backend/optimizer/README
- src/backend/optimizer/path/allpaths.c 1 addition, 5 deletionssrc/backend/optimizer/path/allpaths.c
- src/backend/optimizer/path/joinpath.c 1 addition, 204 deletionssrc/backend/optimizer/path/joinpath.c
- src/backend/optimizer/plan/Makefile 2 additions, 2 deletionssrc/backend/optimizer/plan/Makefile
- src/backend/optimizer/plan/analyzejoins.c 413 additions, 0 deletionssrc/backend/optimizer/plan/analyzejoins.c
- src/backend/optimizer/plan/createplan.c 1 addition, 6 deletionssrc/backend/optimizer/plan/createplan.c
- src/backend/optimizer/plan/planmain.c 44 additions, 26 deletionssrc/backend/optimizer/plan/planmain.c
- src/backend/optimizer/util/pathnode.c 1 addition, 21 deletionssrc/backend/optimizer/util/pathnode.c
- src/backend/optimizer/util/placeholder.c 20 additions, 11 deletionssrc/backend/optimizer/util/placeholder.c
- src/include/nodes/nodes.h 1 addition, 2 deletionssrc/include/nodes/nodes.h
- src/include/nodes/relation.h 6 additions, 19 deletionssrc/include/nodes/relation.h
- src/include/optimizer/pathnode.h 1 addition, 3 deletionssrc/include/optimizer/pathnode.h
- src/include/optimizer/placeholder.h 2 additions, 1 deletionsrc/include/optimizer/placeholder.h
- src/include/optimizer/planmain.h 6 additions, 1 deletionsrc/include/optimizer/planmain.h
- src/test/regress/expected/join.out 53 additions, 0 deletionssrc/test/regress/expected/join.out
- src/test/regress/sql/join.sql 31 additions, 0 deletionssrc/test/regress/sql/join.sql
Loading
Please register or sign in to comment