-
- Downloads
Teach tuplestore.c to throw away data before the "mark" point when the caller
is using mark/restore but not rewind or backward-scan capability. Insert a materialize plan node between a mergejoin and its inner child if the inner child is a sort that is expected to spill to disk. The materialize shields the sort from the need to do mark/restore and thereby allows it to perform its final merge pass on-the-fly; while the materialize itself is normally cheap since it won't spill to disk unless the number of tuples with equal key values exceeds work_mem. Greg Stark, with some kibitzing from Tom Lane.
Showing
- src/backend/executor/nodeMaterial.c 21 additions, 15 deletionssrc/backend/executor/nodeMaterial.c
- src/backend/executor/nodeMergejoin.c 37 additions, 1 deletionsrc/backend/executor/nodeMergejoin.c
- src/backend/optimizer/path/costsize.c 18 additions, 1 deletionsrc/backend/optimizer/path/costsize.c
- src/backend/optimizer/plan/createplan.c 25 additions, 1 deletionsrc/backend/optimizer/plan/createplan.c
- src/backend/utils/sort/tuplestore.c 126 additions, 17 deletionssrc/backend/utils/sort/tuplestore.c
- src/include/nodes/execnodes.h 4 additions, 2 deletionssrc/include/nodes/execnodes.h
- src/include/optimizer/cost.h 2 additions, 1 deletionsrc/include/optimizer/cost.h
- src/include/utils/tuplestore.h 3 additions, 2 deletionssrc/include/utils/tuplestore.h
Loading
Please register or sign in to comment