⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 plpgsql.h

📁 PostgreSQL 8.1.4的源码 适用于Linux下的开源数据库系统
💻 H
📖 第 1 页 / 共 2 页
字号:
	int			lineno;	List	   *diag_items;		/* List of PLpgSQL_diag_item */} PLpgSQL_stmt_getdiag;typedef struct{								/* IF statement				*/	int			cmd_type;	int			lineno;	PLpgSQL_expr *cond;	List	   *true_body;		/* List of statements */	List	   *false_body;		/* List of statements */} PLpgSQL_stmt_if;typedef struct{								/* Unconditional LOOP statement		*/	int			cmd_type;	int			lineno;	char	   *label;	List	   *body;			/* List of statements */} PLpgSQL_stmt_loop;typedef struct{								/* WHILE cond LOOP statement		*/	int			cmd_type;	int			lineno;	char	   *label;	PLpgSQL_expr *cond;	List	   *body;			/* List of statements */} PLpgSQL_stmt_while;typedef struct{								/* FOR statement with integer loopvar	*/	int			cmd_type;	int			lineno;	char	   *label;	PLpgSQL_var *var;	PLpgSQL_expr *lower;	PLpgSQL_expr *upper;	int			reverse;	List	   *body;			/* List of statements */} PLpgSQL_stmt_fori;typedef struct{								/* FOR statement running over SELECT	*/	int			cmd_type;	int			lineno;	char	   *label;	PLpgSQL_rec *rec;	PLpgSQL_row *row;	PLpgSQL_expr *query;	List	   *body;			/* List of statements */} PLpgSQL_stmt_fors;typedef struct{								/* FOR statement running over EXECUTE	*/	int			cmd_type;	int			lineno;	char	   *label;	PLpgSQL_rec *rec;	PLpgSQL_row *row;	PLpgSQL_expr *query;	List	   *body;			/* List of statements */} PLpgSQL_stmt_dynfors;typedef struct{								/* SELECT ... INTO statement		*/	int			cmd_type;	int			lineno;	PLpgSQL_rec *rec;	PLpgSQL_row *row;	PLpgSQL_expr *query;} PLpgSQL_stmt_select;typedef struct{								/* OPEN a curvar					*/	int			cmd_type;	int			lineno;	int			curvar;	PLpgSQL_row *returntype;	PLpgSQL_expr *argquery;	PLpgSQL_expr *query;	PLpgSQL_expr *dynquery;} PLpgSQL_stmt_open;typedef struct{								/* FETCH curvar INTO statement		*/	int			cmd_type;	int			lineno;	PLpgSQL_rec *rec;	PLpgSQL_row *row;	int			curvar;} PLpgSQL_stmt_fetch;typedef struct{								/* CLOSE curvar						*/	int			cmd_type;	int			lineno;	int			curvar;} PLpgSQL_stmt_close;typedef struct{								/* EXIT or CONTINUE statement			*/	int			cmd_type;	int			lineno;	bool		is_exit;		/* Is this an exit or a continue? */	char	   *label;	PLpgSQL_expr *cond;} PLpgSQL_stmt_exit;typedef struct{								/* RETURN statement			*/	int			cmd_type;	int			lineno;	PLpgSQL_expr *expr;	int			retvarno;} PLpgSQL_stmt_return;typedef struct{								/* RETURN NEXT statement */	int			cmd_type;	int			lineno;	PLpgSQL_expr *expr;	int			retvarno;} PLpgSQL_stmt_return_next;typedef struct{								/* RAISE statement			*/	int			cmd_type;	int			lineno;	int			elog_level;	char	   *message;	List	   *params;			/* list of expressions */} PLpgSQL_stmt_raise;typedef struct{								/* Generic SQL statement to execute */	int			cmd_type;	int			lineno;	PLpgSQL_expr *sqlstmt;} PLpgSQL_stmt_execsql;typedef struct{								/* Dynamic SQL string to execute */	int			cmd_type;	int			lineno;	PLpgSQL_rec *rec;			/* INTO record or row variable */	PLpgSQL_row *row;	PLpgSQL_expr *query;} PLpgSQL_stmt_dynexecute;typedef struct PLpgSQL_func_hashkey{								/* Hash lookup key for functions */	Oid			funcOid;	/*	 * For a trigger function, the OID of the relation triggered on is part of	 * the hashkey --- we want to compile the trigger separately for each	 * relation it is used with, in case the rowtype is different.	Zero if	 * not called as a trigger.	 */	Oid			trigrelOid;	/*	 * We include actual argument types in the hash key to support polymorphic	 * PLpgSQL functions.  Be careful that extra positions are zeroed!	 */	Oid			argtypes[FUNC_MAX_ARGS];} PLpgSQL_func_hashkey;typedef struct PLpgSQL_function{								/* Complete compiled function	  */	char	   *fn_name;	Oid			fn_oid;	TransactionId fn_xmin;	CommandId	fn_cmin;	int			fn_functype;	PLpgSQL_func_hashkey *fn_hashkey;	/* back-link to hashtable key */	MemoryContext fn_cxt;	Oid			fn_rettype;	int			fn_rettyplen;	bool		fn_retbyval;	FmgrInfo	fn_retinput;	Oid			fn_rettypioparam;	bool		fn_retistuple;	bool		fn_retset;	bool		fn_readonly;	int			fn_nargs;	int			fn_argvarnos[FUNC_MAX_ARGS];	int			out_param_varno;	int			found_varno;	int			new_varno;	int			old_varno;	int			tg_name_varno;	int			tg_when_varno;	int			tg_level_varno;	int			tg_op_varno;	int			tg_relid_varno;	int			tg_relname_varno;	int			tg_nargs_varno;	int			ndatums;	PLpgSQL_datum **datums;	PLpgSQL_stmt_block *action;} PLpgSQL_function;typedef struct{								/* Runtime execution data	*/	Datum		retval;	bool		retisnull;	Oid			rettype;		/* type of current retval */	Oid			fn_rettype;		/* info about declared function rettype */	bool		retistuple;	bool		retisset;	bool		readonly_func;	TupleDesc	rettupdesc;	char	   *exitlabel;		/* the "target" label of the current EXIT or								 * CONTINUE stmt, if any */	Tuplestorestate *tuple_store;		/* SRFs accumulate results here */	MemoryContext tuple_store_cxt;	ReturnSetInfo *rsi;	int			trig_nargs;	Datum	   *trig_argv;	int			found_varno;	int			ndatums;	PLpgSQL_datum **datums;	/* temporary state for results from evaluation of query or expr */	SPITupleTable *eval_tuptable;	uint32		eval_processed;	Oid			eval_lastoid;	ExprContext *eval_econtext;	/* status information for error context reporting */	PLpgSQL_function *err_func; /* current func */	PLpgSQL_stmt *err_stmt;		/* current stmt */	const char *err_text;		/* additional state info */} PLpgSQL_execstate;/********************************************************************** * Global variable declarations **********************************************************************/extern bool plpgsql_DumpExecTree;extern bool plpgsql_SpaceScanned;extern int	plpgsql_nDatums;extern PLpgSQL_datum **plpgsql_Datums;extern int	plpgsql_error_lineno;extern char *plpgsql_error_funcname;/* linkage to the real yytext variable */extern char *plpgsql_base_yytext;#define plpgsql_yytext plpgsql_base_yytextextern PLpgSQL_function *plpgsql_curr_compile;extern bool plpgsql_check_syntax;extern MemoryContext compile_tmp_cxt;/********************************************************************** * Function declarations **********************************************************************//* ---------- * Functions in pl_comp.c * ---------- */extern PLpgSQL_function *plpgsql_compile(FunctionCallInfo fcinfo,				bool forValidator);extern int	plpgsql_parse_word(char *word);extern int	plpgsql_parse_dblword(char *word);extern int	plpgsql_parse_tripword(char *word);extern int	plpgsql_parse_wordtype(char *word);extern int	plpgsql_parse_dblwordtype(char *word);extern int	plpgsql_parse_tripwordtype(char *word);extern int	plpgsql_parse_wordrowtype(char *word);extern int	plpgsql_parse_dblwordrowtype(char *word);extern PLpgSQL_type *plpgsql_parse_datatype(const char *string);extern PLpgSQL_type *plpgsql_build_datatype(Oid typeOid, int32 typmod);extern PLpgSQL_variable *plpgsql_build_variable(const char *refname, int lineno,					   PLpgSQL_type *dtype,					   bool add2namespace);extern PLpgSQL_condition *plpgsql_parse_err_condition(char *condname);extern void plpgsql_adddatum(PLpgSQL_datum *new);extern int	plpgsql_add_initdatums(int **varnos);extern void plpgsql_HashTableInit(void);extern void plpgsql_compile_error_callback(void *arg);/* ---------- * Functions in pl_handler.c * ---------- */extern void plpgsql_init(void);extern Datum plpgsql_call_handler(PG_FUNCTION_ARGS);extern Datum plpgsql_validator(PG_FUNCTION_ARGS);/* ---------- * Functions in pl_exec.c * ---------- */extern Datum plpgsql_exec_function(PLpgSQL_function *func,					  FunctionCallInfo fcinfo);extern HeapTuple plpgsql_exec_trigger(PLpgSQL_function *func,					 TriggerData *trigdata);extern void plpgsql_xact_cb(XactEvent event, void *arg);/* ---------- * Functions for the dynamic string handling in pl_funcs.c * ---------- */extern void plpgsql_dstring_init(PLpgSQL_dstring *ds);extern void plpgsql_dstring_free(PLpgSQL_dstring *ds);extern void plpgsql_dstring_append(PLpgSQL_dstring *ds, const char *str);extern void plpgsql_dstring_append_char(PLpgSQL_dstring *ds, char c);extern char *plpgsql_dstring_get(PLpgSQL_dstring *ds);/* ---------- * Functions for the namestack handling in pl_funcs.c * ---------- */extern void plpgsql_ns_init(void);extern bool plpgsql_ns_setlocal(bool flag);extern void plpgsql_ns_push(char *label);extern void plpgsql_ns_pop(void);extern void plpgsql_ns_additem(int itemtype, int itemno, const char *name);extern PLpgSQL_nsitem *plpgsql_ns_lookup(char *name, char *nsname);extern void plpgsql_ns_rename(char *oldname, char *newname);/* ---------- * Other functions in pl_funcs.c * ---------- */extern void plpgsql_convert_ident(const char *s, char **output, int numidents);extern const char *plpgsql_stmt_typename(PLpgSQL_stmt *stmt);extern void plpgsql_dumptree(PLpgSQL_function *func);/* ---------- * Externs in gram.y and scan.l * ---------- */extern PLpgSQL_expr *plpgsql_read_expression(int until, const char *expected);extern int	plpgsql_yyparse(void);extern int	plpgsql_base_yylex(void);extern int	plpgsql_yylex(void);extern void plpgsql_push_back_token(int token);extern void plpgsql_yyerror(const char *message);extern int	plpgsql_scanner_lineno(void);extern void plpgsql_scanner_init(const char *str, int functype);extern void plpgsql_scanner_finish(void);extern char *plpgsql_get_string_value(void);#endif   /* PLPGSQL_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -