diff options
| -rw-r--r-- | src/backend/nodes/outfuncs.c | 24 | ||||
| -rw-r--r-- | src/backend/nodes/readfuncs.c | 24 | ||||
| -rw-r--r-- | src/backend/pgxc/pool/execRemote.c | 1 |
3 files changed, 49 insertions, 0 deletions
diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c index 6458e7596c..7d0196a512 100644 --- a/src/backend/nodes/outfuncs.c +++ b/src/backend/nodes/outfuncs.c @@ -720,6 +720,16 @@ _outSeqScan(StringInfo str, const SeqScan *node) } static void +_outSampleScan(StringInfo str, const SampleScan *node) +{ + WRITE_NODE_TYPE("SAMPLESCAN"); + + _outScanInfo(str, (const Scan *) node); + + WRITE_NODE_FIELD(tablesample); +} + +static void _outIndexScan(StringInfo str, const IndexScan *node) { WRITE_NODE_TYPE("INDEXSCAN"); @@ -3661,7 +3671,18 @@ _outTableSampleClause(StringInfo str, const TableSampleClause *node) { WRITE_NODE_TYPE("TABLESAMPLECLAUSE"); +#ifdef XCP + if (portable_output) + { + WRITE_FUNCID_FIELD(tsmhandler); + } + else + { +#endif WRITE_OID_FIELD(tsmhandler); +#ifdef XCP + } +#endif WRITE_NODE_FIELD(args); WRITE_NODE_FIELD(repeatable); } @@ -4091,6 +4112,9 @@ _outNode(StringInfo str, const void *obj) _outRemoteQuery(str, obj); break; #endif + case T_SampleScan: + _outSampleScan(str, obj); + break; case T_IndexScan: _outIndexScan(str, obj); break; diff --git a/src/backend/nodes/readfuncs.c b/src/backend/nodes/readfuncs.c index 8da2516518..b32f16d7ff 100644 --- a/src/backend/nodes/readfuncs.c +++ b/src/backend/nodes/readfuncs.c @@ -2050,7 +2050,18 @@ _readTableSampleClause(void) { READ_LOCALS(TableSampleClause); +#ifdef XCP + if (portable_input) + { + READ_FUNCID_FIELD(tsmhandler); + } + else + { +#endif READ_OID_FIELD(tsmhandler); +#ifdef XCP + } +#endif READ_NODE_FIELD(args); READ_NODE_FIELD(repeatable); @@ -2325,6 +2336,17 @@ _readSeqScan(void) READ_DONE(); } +/* + * _readSampleScan + */ +static SampleScan * +_readSampleScan(void) +{ + READ_SCAN_FIELDS(SampleScan); + READ_NODE_FIELD(tablesample); + + READ_DONE(); +} /* * _readIndexScan @@ -3546,6 +3568,8 @@ parseNodeString(void) return_value = _readScan(); else if (MATCH("SEQSCAN", 7)) return_value = _readSeqScan(); + else if (MATCH("SAMPLESCAN", 10)) + return_value = _readSampleScan(); else if (MATCH("INDEXSCAN", 9)) return_value = _readIndexScan(); else if (MATCH("INDEXONLYSCAN", 13)) diff --git a/src/backend/pgxc/pool/execRemote.c b/src/backend/pgxc/pool/execRemote.c index 31568660f0..105b4ebf05 100644 --- a/src/backend/pgxc/pool/execRemote.c +++ b/src/backend/pgxc/pool/execRemote.c @@ -4986,6 +4986,7 @@ determine_param_types(Plan *plan, struct find_params_context *context) break; case T_SeqScan: + case T_SampleScan: break; case T_IndexScan: |
