1 /* ------------------------------------------------------------------------
2  *
3  * nodeCustom.h
4  *
5  * prototypes for CustomScan nodes
6  *
7  * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
8  * Portions Copyright (c) 1994, Regents of the University of California
9  *
10  * ------------------------------------------------------------------------
11  */
12 #ifndef NODECUSTOM_H
13 #define NODECUSTOM_H
14 
15 #include "access/parallel.h"
16 #include "nodes/execnodes.h"
17 
18 /*
19  * General executor code
20  */
21 extern CustomScanState *ExecInitCustomScan(CustomScan *cscan,
22 										   EState *estate, int eflags);
23 extern void ExecEndCustomScan(CustomScanState *node);
24 
25 extern void ExecReScanCustomScan(CustomScanState *node);
26 extern void ExecCustomMarkPos(CustomScanState *node);
27 extern void ExecCustomRestrPos(CustomScanState *node);
28 
29 /*
30  * Parallel execution support
31  */
32 extern void ExecCustomScanEstimate(CustomScanState *node,
33 								   ParallelContext *pcxt);
34 extern void ExecCustomScanInitializeDSM(CustomScanState *node,
35 										ParallelContext *pcxt);
36 extern void ExecCustomScanReInitializeDSM(CustomScanState *node,
37 										  ParallelContext *pcxt);
38 extern void ExecCustomScanInitializeWorker(CustomScanState *node,
39 										   ParallelWorkerContext *pwcxt);
40 extern void ExecShutdownCustomScan(CustomScanState *node);
41 
42 #endif							/* NODECUSTOM_H */
43