1/*-------------------------------------------------------------------------
2 *
3 * pg_proc_d.h
4 * Macro definitions for pg_proc
5 *
6 * Portions Copyright (c) 1996-2019, 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_proconfig 28
52#define Anum_pg_proc_proacl 29
53
54#define Natts_pg_proc 29
55
56
57/*
58 * Symbolic values for prokind column
59 */
60#define PROKIND_FUNCTION 'f'
61#define PROKIND_AGGREGATE 'a'
62#define PROKIND_WINDOW 'w'
63#define PROKIND_PROCEDURE 'p'
64
65/*
66 * Symbolic values for provolatile column: these indicate whether the result
67 * of a function is dependent *only* on the values of its explicit arguments,
68 * or can change due to outside factors (such as parameter variables or
69 * table contents). NOTE: functions having side-effects, such as setval(),
70 * must be labeled volatile to ensure they will not get optimized away,
71 * even if the actual return value is not changeable.
72 */
73#define PROVOLATILE_IMMUTABLE 'i' /* never changes for given input */
74#define PROVOLATILE_STABLE 's' /* does not change within a scan */
75#define PROVOLATILE_VOLATILE 'v' /* can change even within a scan */
76
77/*
78 * Symbolic values for proparallel column: these indicate whether a function
79 * can be safely be run in a parallel backend, during parallelism but
80 * necessarily in the master, or only in non-parallel mode.
81 */
82#define PROPARALLEL_SAFE 's' /* can run in worker or master */
83#define PROPARALLEL_RESTRICTED 'r' /* can run in parallel master only */
84#define PROPARALLEL_UNSAFE 'u' /* banned while in parallel mode */
85
86/*
87 * Symbolic values for proargmodes column. Note that these must agree with
88 * the FunctionParameterMode enum in parsenodes.h; we declare them here to
89 * be accessible from either header.
90 */
91#define PROARGMODE_IN 'i'
92#define PROARGMODE_OUT 'o'
93#define PROARGMODE_INOUT 'b'
94#define PROARGMODE_VARIADIC 'v'
95#define PROARGMODE_TABLE 't'
96
97#define HEAP_TABLE_AM_HANDLER_OID 3
98
99#endif /* PG_PROC_D_H */
100