summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/nodes/outfuncs.c24
-rw-r--r--src/backend/nodes/readfuncs.c24
-rw-r--r--src/backend/pgxc/pool/execRemote.c1
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: