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

📄 plpgsql.h

📁 PostgreSQL7.4.6 for Linux
💻 H
📖 第 1 页 / 共 2 页
字号:
typedef struct{								/* Unconditional LOOP statement		*/	int			cmd_type;	int			lineno;	char	   *label;	PLpgSQL_stmts *body;}	PLpgSQL_stmt_loop;typedef struct{								/* WHILE cond LOOP statement		*/	int			cmd_type;	int			lineno;	char	   *label;	PLpgSQL_expr *cond;	PLpgSQL_stmts *body;}	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;	PLpgSQL_stmts *body;}	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;	PLpgSQL_stmts *body;}	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;	PLpgSQL_stmts *body;}	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 statement			*/	int			cmd_type;	int			lineno;	char	   *label;	PLpgSQL_expr *cond;}	PLpgSQL_stmt_exit;typedef struct{								/* RETURN statement			*/	int			cmd_type;	int			lineno;	PLpgSQL_expr *expr;	int			retrecno;	int			retrowno;}	PLpgSQL_stmt_return;typedef struct{								/* RETURN NEXT statement */	int			cmd_type;	int			lineno;	PLpgSQL_rec *rec;	PLpgSQL_row *row;	PLpgSQL_expr *expr;}	PLpgSQL_stmt_return_next;typedef struct{								/* RAISE statement			*/	int			cmd_type;	int			lineno;	int			elog_level;	char	   *message;	int			nparams;	int		   *params;}	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_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 */	Oid			fn_rettype;	int			fn_rettyplen;	bool		fn_retbyval;	FmgrInfo	fn_retinput;	Oid			fn_rettypelem;	bool		fn_retistuple;	bool		fn_retset;	int			fn_nargs;	int			fn_argvarnos[FUNC_MAX_ARGS];	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;	TupleDesc	rettupdesc;	char	   *exitlabel;	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 int	plpgsql_DumpExecTree;extern int	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;/********************************************************************** * Function declarations **********************************************************************//* ---------- * Functions in pl_comp.c * ---------- */extern PLpgSQL_function *plpgsql_compile(FunctionCallInfo fcinfo);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(char *string);extern PLpgSQL_row *plpgsql_build_rowtype(Oid classOid);extern void plpgsql_adddatum(PLpgSQL_datum * new);extern int	plpgsql_add_initdatums(int **varnos);extern void plpgsql_yyerror(const char *s);extern void plpgsql_HashTableInit(void);/* ---------- * Functions in pl_handler.c * ---------- */extern void plpgsql_init(void);extern Datum plpgsql_call_handler(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_eoxact(bool isCommit, 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, char *str);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, 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 int	plpgsql_scanner_lineno(void);extern void plpgsql_scanner_init(const char *str, int functype);extern void plpgsql_scanner_finish(void);#endif   /* PLPGSQL_H */

⌨️ 快捷键说明

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