Implement an API to let foreign-data wrappers actually be functional.

Tom Lane <tgl@sss.pgh.pa.us>

Commit: bb742407947ad1cbf19355d24282380d576e7654
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2011-02-20T05:18:14Z
Releases: 9.1.0
Implement an API to let foreign-data wrappers actually be functional.

This commit provides the core code and documentation needed.  A contrib
module test case will follow shortly.

Shigeru Hanada, Jan Urbanski, Heikki Linnakangas

Files

PathChange+/−
doc/src/sgml/ddl.sgml modified +47 −0
doc/src/sgml/fdwhandler.sgml added +212 −0
doc/src/sgml/filelist.sgml modified +1 −0
doc/src/sgml/postgres.sgml modified +1 −0
doc/src/sgml/ref/create_foreign_data_wrapper.sgml modified +4 −9
doc/src/sgml/ref/create_foreign_table.sgml modified +2 −2
src/backend/commands/explain.c modified +36 −15
src/backend/executor/execAmi.c modified +5 −0
src/backend/executor/execMain.c modified +7 −0
src/backend/executor/execProcnode.c modified +14 −0
src/backend/executor/Makefile modified +1 −1
src/backend/executor/nodeForeignscan.c added +209 −0
src/backend/foreign/foreign.c modified +141 −18
src/backend/nodes/copyfuncs.c modified +44 −0
src/backend/nodes/outfuncs.c modified +41 −0
src/backend/optimizer/path/allpaths.c modified +34 −2
src/backend/optimizer/path/costsize.c modified +28 −0
src/backend/optimizer/plan/createplan.c modified +86 −0
src/backend/optimizer/plan/planner.c modified +2 −1
src/backend/optimizer/plan/setrefs.c modified +12 −0
src/backend/optimizer/plan/subselect.c modified +4 −0
src/backend/optimizer/README modified +1 −0
src/backend/optimizer/util/pathnode.c modified +36 −0
src/backend/optimizer/util/plancat.c modified +5 −6
src/backend/parser/analyze.c modified +15 −3
src/backend/rewrite/rewriteHandler.c modified +6 −2
src/backend/utils/fmgr/fmgr.c modified +20 −0
src/include/commands/explain.h modified +11 −0
src/include/executor/nodeForeignscan.h added +24 −0
src/include/fmgr.h modified +1 −0
src/include/foreign/fdwapi.h added +98 −0
src/include/foreign/foreign.h modified +8 −0
src/include/nodes/execnodes.h modified +14 −0
src/include/nodes/nodes.h modified +6 −1
src/include/nodes/plannodes.h modified +12 −0
src/include/nodes/relation.h modified +10 −0
src/include/optimizer/cost.h modified +1 −0
src/include/optimizer/pathnode.h modified +1 −0
src/test/regress/expected/foreign_data.out modified +2 −2