Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
pg_proc.h221 linesDownload Raw Back to catalog
1/*-------------------------------------------------------------------------2 *3 * pg_proc.h4 *	  definition of the "procedure" system catalog (pg_proc)5 *6 * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group7 * Portions Copyright (c) 1994, Regents of the University of California8 *9 * src/include/catalog/pg_proc.h10 *11 * NOTES12 *	  The Catalog.pm module reads this file and derives schema13 *	  information.14 *15 *-------------------------------------------------------------------------16 */17#ifndef PG_PROC_H18#define PG_PROC_H19 20#include "catalog/genbki.h"21#include "catalog/objectaddress.h"22#include "catalog/pg_proc_d.h"23#include "nodes/pg_list.h"24 25/* ----------------26 *		pg_proc definition.  cpp turns this into27 *		typedef struct FormData_pg_proc28 * ----------------29 */30CATALOG(pg_proc,1255,ProcedureRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81,ProcedureRelation_Rowtype_Id) BKI_SCHEMA_MACRO31{32	Oid			oid;			/* oid */33 34	/* procedure name */35	NameData	proname;36 37	/* OID of namespace containing this proc */38	Oid			pronamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);39 40	/* procedure owner */41	Oid			proowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);42 43	/* OID of pg_language entry */44	Oid			prolang BKI_DEFAULT(internal) BKI_LOOKUP(pg_language);45 46	/* estimated execution cost */47	float4		procost BKI_DEFAULT(1);48 49	/* estimated # of rows out (if proretset) */50	float4		prorows BKI_DEFAULT(0);51 52	/* element type of variadic array, or 0 if not variadic */53	Oid			provariadic BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_type);54 55	/* planner support function for this function, or 0 if none */56	regproc		prosupport BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_proc);57 58	/* see PROKIND_ categories below */59	char		prokind BKI_DEFAULT(f);60 61	/* security definer */62	bool		prosecdef BKI_DEFAULT(f);63 64	/* is it a leak-proof function? */65	bool		proleakproof BKI_DEFAULT(f);66 67	/* strict with respect to NULLs? */68	bool		proisstrict BKI_DEFAULT(t);69 70	/* returns a set? */71	bool		proretset BKI_DEFAULT(f);72 73	/* see PROVOLATILE_ categories below */74	char		provolatile BKI_DEFAULT(i);75 76	/* see PROPARALLEL_ categories below */77	char		proparallel BKI_DEFAULT(s);78 79	/* number of arguments */80	/* Note: need not be given in pg_proc.dat; genbki.pl will compute it */81	int16		pronargs;82 83	/* number of arguments with defaults */84	int16		pronargdefaults BKI_DEFAULT(0);85 86	/* OID of result type */87	Oid			prorettype BKI_LOOKUP(pg_type);88 89	/*90	 * variable-length fields start here, but we allow direct access to91	 * proargtypes92	 */93 94	/* parameter types (excludes OUT params) */95	oidvector	proargtypes BKI_LOOKUP(pg_type) BKI_FORCE_NOT_NULL;96 97#ifdef CATALOG_VARLEN98 99	/* all param types (NULL if IN only) */100	Oid			proallargtypes[1] BKI_DEFAULT(_null_) BKI_LOOKUP(pg_type);101 102	/* parameter modes (NULL if IN only) */103	char		proargmodes[1] BKI_DEFAULT(_null_);104 105	/* parameter names (NULL if no names) */106	text		proargnames[1] BKI_DEFAULT(_null_);107 108	/* list of expression trees for argument defaults (NULL if none) */109	pg_node_tree proargdefaults BKI_DEFAULT(_null_);110 111	/* types for which to apply transforms */112	Oid			protrftypes[1] BKI_DEFAULT(_null_) BKI_LOOKUP(pg_type);113 114	/* procedure source text */115	text		prosrc BKI_FORCE_NOT_NULL;116 117	/* secondary procedure info (can be NULL) */118	text		probin BKI_DEFAULT(_null_);119 120	/* pre-parsed SQL function body */121	pg_node_tree prosqlbody BKI_DEFAULT(_null_);122 123	/* procedure-local GUC settings */124	text		proconfig[1] BKI_DEFAULT(_null_);125 126	/* access permissions */127	aclitem		proacl[1] BKI_DEFAULT(_null_);128#endif129} FormData_pg_proc;130 131/* ----------------132 *		Form_pg_proc corresponds to a pointer to a tuple with133 *		the format of pg_proc relation.134 * ----------------135 */136typedef FormData_pg_proc *Form_pg_proc;137 138DECLARE_TOAST(pg_proc, 2836, 2837);139 140DECLARE_UNIQUE_INDEX_PKEY(pg_proc_oid_index, 2690, ProcedureOidIndexId, on pg_proc using btree(oid oid_ops));141DECLARE_UNIQUE_INDEX(pg_proc_proname_args_nsp_index, 2691, ProcedureNameArgsNspIndexId, on pg_proc using btree(proname name_ops, proargtypes oidvector_ops, pronamespace oid_ops));142 143#ifdef EXPOSE_TO_CLIENT_CODE144 145/*146 * Symbolic values for prokind column147 */148#define PROKIND_FUNCTION 'f'149#define PROKIND_AGGREGATE 'a'150#define PROKIND_WINDOW 'w'151#define PROKIND_PROCEDURE 'p'152 153/*154 * Symbolic values for provolatile column: these indicate whether the result155 * of a function is dependent *only* on the values of its explicit arguments,156 * or can change due to outside factors (such as parameter variables or157 * table contents).  NOTE: functions having side-effects, such as setval(),158 * must be labeled volatile to ensure they will not get optimized away,159 * even if the actual return value is not changeable.160 */161#define PROVOLATILE_IMMUTABLE	'i' /* never changes for given input */162#define PROVOLATILE_STABLE		's' /* does not change within a scan */163#define PROVOLATILE_VOLATILE	'v' /* can change even within a scan */164 165/*166 * Symbolic values for proparallel column: these indicate whether a function167 * can be safely be run in a parallel backend, during parallelism but168 * necessarily in the leader, or only in non-parallel mode.169 */170#define PROPARALLEL_SAFE		's' /* can run in worker or leader */171#define PROPARALLEL_RESTRICTED	'r' /* can run in parallel leader only */172#define PROPARALLEL_UNSAFE		'u' /* banned while in parallel mode */173 174/*175 * Symbolic values for proargmodes column.  Note that these must agree with176 * the FunctionParameterMode enum in parsenodes.h; we declare them here to177 * be accessible from either header.178 */179#define PROARGMODE_IN		'i'180#define PROARGMODE_OUT		'o'181#define PROARGMODE_INOUT	'b'182#define PROARGMODE_VARIADIC 'v'183#define PROARGMODE_TABLE	't'184 185#endif							/* EXPOSE_TO_CLIENT_CODE */186 187 188extern ObjectAddress ProcedureCreate(const char *procedureName,189									 Oid procNamespace,190									 bool replace,191									 bool returnsSet,192									 Oid returnType,193									 Oid proowner,194									 Oid languageObjectId,195									 Oid languageValidator,196									 const char *prosrc,197									 const char *probin,198									 Node *prosqlbody,199									 char prokind,200									 bool security_definer,201									 bool isLeakProof,202									 bool isStrict,203									 char volatility,204									 char parallel,205									 oidvector *parameterTypes,206									 Datum allParameterTypes,207									 Datum parameterModes,208									 Datum parameterNames,209									 List *parameterDefaults,210									 Datum trftypes,211									 Datum proconfig,212									 Oid prosupport,213									 float4 procost,214									 float4 prorows);215 216extern bool function_parse_error_transpose(const char *prosrc);217 218extern List *oid_array_to_list(Datum datum);219 220#endif							/* PG_PROC_H */221 
codekingpro/portable-devtools · Team Ai