PostgreSQL Source Code: src/include/nodes/extensible.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14#ifndef EXTENSIBLE_H
15#define EXTENSIBLE_H
16
22
23
24#define EXTNODENAME_MAX_LEN 64
25
26
27
28
29
30
31
33{
35
37 const char *extnodename;
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
63{
74
77 bool missing_ok);
78
79
80
81
82
83
84#define CUSTOMPATH_SUPPORT_BACKWARD_SCAN 0x0001
85#define CUSTOMPATH_SUPPORT_MARK_RESTORE 0x0002
86#define CUSTOMPATH_SUPPORT_PROJECTION 0x0004
87
88
89
90
91
93{
95
96
101 List *clauses,
102 List *custom_plans);
104 List *custom_private,
107
108
109
110
111
113{
115
116
119
120
121
122
123
125{
127
128
131 int eflags);
135
136
139
140
145 void *coordinate);
148 void *coordinate);
151 void *coordinate);
153
154
156 List *ancestors,
159
162 bool missing_ok);
163
164#endif
struct CustomExecMethods CustomExecMethods
struct CustomScanMethods CustomScanMethods
struct CustomPathMethods CustomPathMethods
void RegisterExtensibleNodeMethods(const ExtensibleNodeMethods *methods)
struct ExtensibleNodeMethods ExtensibleNodeMethods
void RegisterCustomScanMethods(const CustomScanMethods *methods)
const ExtensibleNodeMethods * GetExtensibleNodeMethods(const char *extnodename, bool missing_ok)
const CustomScanMethods * GetCustomScanMethods(const char *CustomName, bool missing_ok)
struct ExtensibleNode ExtensibleNode
void(* BeginCustomScan)(CustomScanState *node, EState *estate, int eflags)
void(* EndCustomScan)(CustomScanState *node)
void(* ShutdownCustomScan)(CustomScanState *node)
void(* ReInitializeDSMCustomScan)(CustomScanState *node, ParallelContext *pcxt, void *coordinate)
void(* InitializeDSMCustomScan)(CustomScanState *node, ParallelContext *pcxt, void *coordinate)
void(* RestrPosCustomScan)(CustomScanState *node)
Size(* EstimateDSMCustomScan)(CustomScanState *node, ParallelContext *pcxt)
void(* MarkPosCustomScan)(CustomScanState *node)
void(* InitializeWorkerCustomScan)(CustomScanState *node, shm_toc *toc, void *coordinate)
void(* ExplainCustomScan)(CustomScanState *node, List *ancestors, ExplainState *es)
void(* ReScanCustomScan)(CustomScanState *node)
void(* nodeRead)(struct ExtensibleNode *node)
void(* nodeCopy)(struct ExtensibleNode *newnode, const struct ExtensibleNode *oldnode)
bool(* nodeEqual)(const struct ExtensibleNode *a, const struct ExtensibleNode *b)
void(* nodeOut)(struct StringInfoData *str, const struct ExtensibleNode *node)
pg_node_attr(custom_copy_equal, custom_read_write) NodeTag type