diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2011-02-20 00:17:18 -0500 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2011-02-20 00:18:14 -0500 |
commit | bb742407947ad1cbf19355d24282380d576e7654 (patch) | |
tree | ac377ed05d85d9cbd0b33127f4d59750b6e60cda /src/backend/nodes/outfuncs.c | |
parent | d5813488a4ccc78ec3a4ad0d5da4e6e844af75e8 (diff) | |
download | postgresql-bb742407947ad1cbf19355d24282380d576e7654.tar.gz |
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
Diffstat (limited to 'src/backend/nodes/outfuncs.c')
-rw-r--r-- | src/backend/nodes/outfuncs.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c index 192c042291..10f630e27f 100644 --- a/src/backend/nodes/outfuncs.c +++ b/src/backend/nodes/outfuncs.c @@ -24,6 +24,7 @@ #include <ctype.h> #include "lib/stringinfo.h" +#include "foreign/fdwapi.h" #include "nodes/plannodes.h" #include "nodes/relation.h" #include "utils/datum.h" @@ -538,6 +539,27 @@ _outWorkTableScan(StringInfo str, WorkTableScan *node) } static void +_outForeignScan(StringInfo str, ForeignScan *node) +{ + WRITE_NODE_TYPE("FOREIGNSCAN"); + + _outScanInfo(str, (Scan *) node); + + WRITE_BOOL_FIELD(fsSystemCol); + WRITE_NODE_FIELD(fdwplan); +} + +static void +_outFdwPlan(StringInfo str, FdwPlan *node) +{ + WRITE_NODE_TYPE("FDWPLAN"); + + WRITE_FLOAT_FIELD(startup_cost, "%.2f"); + WRITE_FLOAT_FIELD(total_cost, "%.2f"); + WRITE_NODE_FIELD(fdw_private); +} + +static void _outJoin(StringInfo str, Join *node) { WRITE_NODE_TYPE("JOIN"); @@ -1508,6 +1530,16 @@ _outTidPath(StringInfo str, TidPath *node) } static void +_outForeignPath(StringInfo str, ForeignPath *node) +{ + WRITE_NODE_TYPE("FOREIGNPATH"); + + _outPathInfo(str, (Path *) node); + + WRITE_NODE_FIELD(fdwplan); +} + +static void _outAppendPath(StringInfo str, AppendPath *node) { WRITE_NODE_TYPE("APPENDPATH"); @@ -2672,6 +2704,12 @@ _outNode(StringInfo str, void *obj) case T_WorkTableScan: _outWorkTableScan(str, obj); break; + case T_ForeignScan: + _outForeignScan(str, obj); + break; + case T_FdwPlan: + _outFdwPlan(str, obj); + break; case T_Join: _outJoin(str, obj); break; @@ -2877,6 +2915,9 @@ _outNode(StringInfo str, void *obj) case T_TidPath: _outTidPath(str, obj); break; + case T_ForeignPath: + _outForeignPath(str, obj); + break; case T_AppendPath: _outAppendPath(str, obj); break; |