1 /*-------------------------------------------------------------------------
2  *
3  * fmgrtab.h
4  *	  The function manager's table of internal functions.
5  *
6  * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
7  * Portions Copyright (c) 1994, Regents of the University of California
8  *
9  * src/include/utils/fmgrtab.h
10  *
11  *-------------------------------------------------------------------------
12  */
13 #ifndef FMGRTAB_H
14 #define FMGRTAB_H
15 
16 #include "access/transam.h"
17 #include "fmgr.h"
18 
19 
20 /*
21  * This table stores info about all the built-in functions (ie, functions
22  * that are compiled into the Postgres executable).
23  */
24 
25 typedef struct
26 {
27 	Oid			foid;			/* OID of the function */
28 	short		nargs;			/* 0..FUNC_MAX_ARGS, or -1 if variable count */
29 	bool		strict;			/* T if function is "strict" */
30 	bool		retset;			/* T if function returns a set */
31 	const char *funcName;		/* C name of the function */
32 	PGFunction	func;			/* pointer to compiled function */
33 } FmgrBuiltin;
34 
35 extern const FmgrBuiltin fmgr_builtins[];
36 
37 extern const int fmgr_nbuiltins;	/* number of entries in table */
38 
39 extern const Oid fmgr_last_builtin_oid; /* highest function OID in table */
40 
41 /*
42  * Mapping from a builtin function's OID to its index in the fmgr_builtins
43  * array.  This is indexed from 0 through fmgr_last_builtin_oid.
44  */
45 #define InvalidOidBuiltinMapping PG_UINT16_MAX
46 extern const uint16 fmgr_builtin_oid_index[];
47 
48 #endif							/* FMGRTAB_H */
49