-
- Downloads
Allow FDWs to push down quals without breaking EvalPlanQual rechecks.
This fixes a long-standing bug which was discovered while investigating the interaction between the new join pushdown code and the EvalPlanQual machinery: if a ForeignScan appears on the inner side of a paramaterized nestloop, an EPQ recheck would re-return the original tuple even if it no longer satisfied the pushed-down quals due to changed parameter values. This fix adds a new member to ForeignScan and ForeignScanState and a new argument to make_foreignscan, and requires changes to FDWs which push down quals to populate that new argument with a list of quals they have chosen to push down. Therefore, I'm only back-patching to 9.5, even though the bug is not new in 9.5. Etsuro Fujita, reviewed by me and by Kyotaro Horiguchi.
Showing
- contrib/file_fdw/file_fdw.c 2 additions, 1 deletioncontrib/file_fdw/file_fdw.c
- contrib/postgres_fdw/postgres_fdw.c 11 additions, 3 deletionscontrib/postgres_fdw/postgres_fdw.c
- doc/src/sgml/fdwhandler.sgml 9 additions, 0 deletionsdoc/src/sgml/fdwhandler.sgml
- src/backend/executor/nodeForeignscan.c 17 additions, 2 deletionssrc/backend/executor/nodeForeignscan.c
- src/backend/nodes/copyfuncs.c 1 addition, 0 deletionssrc/backend/nodes/copyfuncs.c
- src/backend/nodes/outfuncs.c 1 addition, 0 deletionssrc/backend/nodes/outfuncs.c
- src/backend/nodes/readfuncs.c 1 addition, 0 deletionssrc/backend/nodes/readfuncs.c
- src/backend/optimizer/plan/createplan.c 6 additions, 1 deletionsrc/backend/optimizer/plan/createplan.c
- src/backend/optimizer/plan/setrefs.c 3 additions, 1 deletionsrc/backend/optimizer/plan/setrefs.c
- src/backend/optimizer/plan/subselect.c 12 additions, 4 deletionssrc/backend/optimizer/plan/subselect.c
- src/include/nodes/execnodes.h 1 addition, 0 deletionssrc/include/nodes/execnodes.h
- src/include/nodes/plannodes.h 6 additions, 0 deletionssrc/include/nodes/plannodes.h
- src/include/optimizer/planmain.h 1 addition, 1 deletionsrc/include/optimizer/planmain.h
Loading
Please register or sign in to comment