1 /*-------------------------------------------------------------------------
2  *
3  * pg_proc_d.h
4  *    Macro definitions for pg_proc
5  *
6  * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
7  * Portions Copyright (c) 1994, Regents of the University of California
8  *
9  * NOTES
10  *  ******************************
11  *  *** DO NOT EDIT THIS FILE! ***
12  *  ******************************
13  *
14  *  It has been GENERATED by src/backend/catalog/genbki.pl
15  *
16  *-------------------------------------------------------------------------
17  */
18 #ifndef PG_PROC_D_H
19 #define PG_PROC_D_H
20 
21 #define ProcedureRelationId 1255
22 #define ProcedureRelation_Rowtype_Id 81
23 
24 #define Anum_pg_proc_oid 1
25 #define Anum_pg_proc_proname 2
26 #define Anum_pg_proc_pronamespace 3
27 #define Anum_pg_proc_proowner 4
28 #define Anum_pg_proc_prolang 5
29 #define Anum_pg_proc_procost 6
30 #define Anum_pg_proc_prorows 7
31 #define Anum_pg_proc_provariadic 8
32 #define Anum_pg_proc_prosupport 9
33 #define Anum_pg_proc_prokind 10
34 #define Anum_pg_proc_prosecdef 11
35 #define Anum_pg_proc_proleakproof 12
36 #define Anum_pg_proc_proisstrict 13
37 #define Anum_pg_proc_proretset 14
38 #define Anum_pg_proc_provolatile 15
39 #define Anum_pg_proc_proparallel 16
40 #define Anum_pg_proc_pronargs 17
41 #define Anum_pg_proc_pronargdefaults 18
42 #define Anum_pg_proc_prorettype 19
43 #define Anum_pg_proc_proargtypes 20
44 #define Anum_pg_proc_proallargtypes 21
45 #define Anum_pg_proc_proargmodes 22
46 #define Anum_pg_proc_proargnames 23
47 #define Anum_pg_proc_proargdefaults 24
48 #define Anum_pg_proc_protrftypes 25
49 #define Anum_pg_proc_prosrc 26
50 #define Anum_pg_proc_probin 27
51 #define Anum_pg_proc_prosqlbody 28
52 #define Anum_pg_proc_proconfig 29
53 #define Anum_pg_proc_proacl 30
54 
55 #define Natts_pg_proc 30
56 
57 
58 /*
59  * Symbolic values for prokind column
60  */
61 #define PROKIND_FUNCTION 'f'
62 #define PROKIND_AGGREGATE 'a'
63 #define PROKIND_WINDOW 'w'
64 #define PROKIND_PROCEDURE 'p'
65 
66 /*
67  * Symbolic values for provolatile column: these indicate whether the result
68  * of a function is dependent *only* on the values of its explicit arguments,
69  * or can change due to outside factors (such as parameter variables or
70  * table contents).  NOTE: functions having side-effects, such as setval(),
71  * must be labeled volatile to ensure they will not get optimized away,
72  * even if the actual return value is not changeable.
73  */
74 #define PROVOLATILE_IMMUTABLE	'i' /* never changes for given input */
75 #define PROVOLATILE_STABLE		's' /* does not change within a scan */
76 #define PROVOLATILE_VOLATILE	'v' /* can change even within a scan */
77 
78 /*
79  * Symbolic values for proparallel column: these indicate whether a function
80  * can be safely be run in a parallel backend, during parallelism but
81  * necessarily in the leader, or only in non-parallel mode.
82  */
83 #define PROPARALLEL_SAFE		's' /* can run in worker or leader */
84 #define PROPARALLEL_RESTRICTED	'r' /* can run in parallel leader only */
85 #define PROPARALLEL_UNSAFE		'u' /* banned while in parallel mode */
86 
87 /*
88  * Symbolic values for proargmodes column.  Note that these must agree with
89  * the FunctionParameterMode enum in parsenodes.h; we declare them here to
90  * be accessible from either header.
91  */
92 #define PROARGMODE_IN		'i'
93 #define PROARGMODE_OUT		'o'
94 #define PROARGMODE_INOUT	'b'
95 #define PROARGMODE_VARIADIC 'v'
96 #define PROARGMODE_TABLE	't'
97 
98 
99 #endif							/* PG_PROC_D_H */
100