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