PostgreSQL Source Code  git master
tablefunc.h
Go to the documentation of this file.
1 /*-------------------------------------------------------------------------
2  *
3  * tablefunc.h
4  * interface for TableFunc executor node
5  *
6  * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
7  * Portions Copyright (c) 1994, Regents of the University of California
8  *
9  * src/include/executor/tablefunc.h
10  *
11  *-------------------------------------------------------------------------
12  */
13 #ifndef _TABLEFUNC_H
14 #define _TABLEFUNC_H
15 
16 /* Forward-declare this to avoid including execnodes.h here */
17 struct TableFuncScanState;
18 
19 /*
20  * TableFuncRoutine holds function pointers used for generating content of
21  * table-producer functions, such as XMLTABLE.
22  *
23  * InitOpaque initializes table builder private objects. The output tuple
24  * descriptor, input functions for the columns, and typioparams are passed
25  * from executor state.
26  *
27  * SetDocument is called to define the input document. The table builder may
28  * apply additional transformations not exposed outside the table builder
29  * context.
30  *
31  * SetNamespace is called to pass namespace declarations from the table
32  * expression. This function may be NULL if namespaces are not supported by
33  * the table builder. Namespaces must be given before setting the row and
34  * column filters. If the name is given as NULL, the entry shall be for the
35  * default namespace.
36  *
37  * SetRowFilter is called do define the row-generating filter, which shall be
38  * used to extract each row from the input document.
39  *
40  * SetColumnFilter is called once for each column, to define the column-
41  * generating filter for the given column.
42  *
43  * FetchRow shall be called repeatedly until it returns that no more rows are
44  * found in the document. On each invocation it shall set state in the table
45  * builder context such that each subsequent GetValue call returns the values
46  * for the indicated column for the row being processed.
47  *
48  * DestroyOpaque shall release all resources associated with a table builder
49  * context. It may be called either because all rows have been consumed, or
50  * because an error occurred while processing the table expression.
51  */
52 typedef struct TableFuncRoutine
53 {
54  void (*InitOpaque) (struct TableFuncScanState *state, int natts);
56  void (*SetNamespace) (struct TableFuncScanState *state, const char *name,
57  const char *uri);
58  void (*SetRowFilter) (struct TableFuncScanState *state, const char *path);
60  const char *path, int colnum);
61  bool (*FetchRow) (struct TableFuncScanState *state);
62  Datum (*GetValue) (struct TableFuncScanState *state, int colnum,
63  Oid typid, int32 typmod, bool *isnull);
66 
67 #endif /* _TABLEFUNC_H */
int32_t int32
Definition: c.h:481
static struct @160 value
uintptr_t Datum
Definition: postgres.h:64
unsigned int Oid
Definition: postgres_ext.h:31
void(* SetRowFilter)(struct TableFuncScanState *state, const char *path)
Definition: tablefunc.h:58
bool(* FetchRow)(struct TableFuncScanState *state)
Definition: tablefunc.h:61
void(* SetNamespace)(struct TableFuncScanState *state, const char *name, const char *uri)
Definition: tablefunc.h:56
Datum(* GetValue)(struct TableFuncScanState *state, int colnum, Oid typid, int32 typmod, bool *isnull)
Definition: tablefunc.h:62
void(* InitOpaque)(struct TableFuncScanState *state, int natts)
Definition: tablefunc.h:54
void(* SetColumnFilter)(struct TableFuncScanState *state, const char *path, int colnum)
Definition: tablefunc.h:59
void(* SetDocument)(struct TableFuncScanState *state, Datum value)
Definition: tablefunc.h:55
void(* DestroyOpaque)(struct TableFuncScanState *state)
Definition: tablefunc.h:64
Definition: regguts.h:323
struct TableFuncRoutine TableFuncRoutine
const char * name