📄 pars0pars.h
字号:
/*=================*/ /* out: while-statement node */ que_node_t* cond, /* in: while-condition */ que_node_t* stat_list); /* in: statement list *//*************************************************************************Parses a return-statement. */return_node_t*pars_return_statement(void);/*=======================*/ /* out: return-statement node *//*************************************************************************Parses a procedure call. */func_node_t*pars_procedure_call(/*================*/ /* out: function node */ que_node_t* res_word,/* in: procedure name reserved word */ que_node_t* args); /* in: argument list *//*************************************************************************Parses an assignment statement. */assign_node_t*pars_assignment_statement(/*======================*/ /* out: assignment statement node */ sym_node_t* var, /* in: variable to assign */ que_node_t* val); /* in: value to assign *//*************************************************************************Parses a fetch statement. */fetch_node_t*pars_fetch_statement(/*=================*/ /* out: fetch statement node */ sym_node_t* cursor, /* in: cursor node */ sym_node_t* into_list); /* in: variables to set *//*************************************************************************Parses an open or close cursor statement. */open_node_t*pars_open_statement(/*================*/ /* out: fetch statement node */ ulint type, /* in: ROW_SEL_OPEN_CURSOR or ROW_SEL_CLOSE_CURSOR */ sym_node_t* cursor); /* in: cursor node *//*************************************************************************Parses a row_printf-statement. */row_printf_node_t*pars_row_printf_statement(/*======================*/ /* out: row_printf-statement node */ sel_node_t* sel_node); /* in: select node *//*************************************************************************Parses a commit statement. */commit_node_t*pars_commit_statement(void);/*=======================*//*************************************************************************Parses a rollback statement. */roll_node_t*pars_rollback_statement(void);/*=========================*//*************************************************************************Parses a column definition at a table creation. */sym_node_t*pars_column_def(/*============*/ /* out: column sym table node */ sym_node_t* sym_node, /* in: column node in the symbol table */ pars_res_word_t* type); /* in: data type *//*************************************************************************Parses a table creation operation. */tab_node_t*pars_create_table(/*==============*/ /* out: table create subgraph */ sym_node_t* table_sym, /* in: table name node in the symbol table */ sym_node_t* column_defs, /* in: list of column names */ void* not_fit_in_memory);/* in: a non-NULL pointer means that this is a table which in simulations should be simulated as not fitting in memory; thread is put to sleep to simulate disk accesses; NOTE that this flag is not stored to the data dictionary on disk, and the database will forget about non-NULL value if it has to reload the table definition from disk *//*************************************************************************Parses an index creation operation. */ind_node_t*pars_create_index(/*==============*/ /* out: index create subgraph */ pars_res_word_t* unique_def, /* in: not NULL if a unique index */ pars_res_word_t* clustered_def, /* in: not NULL if a clustered index */ sym_node_t* index_sym, /* in: index name node in the symbol table */ sym_node_t* table_sym, /* in: table name node in the symbol table */ sym_node_t* column_list); /* in: list of column names *//*************************************************************************Parses a procedure definition. */que_fork_t*pars_procedure_definition(/*======================*/ /* out: query fork node */ sym_node_t* sym_node, /* in: procedure id node in the symbol table */ sym_node_t* param_list, /* in: parameter declaration list */ que_node_t* stat_list); /* in: statement list *//*****************************************************************Parses a stored procedure call, when this is not within another storedprocedure, that is, the client issues a procedure call directly.In MySQL/InnoDB, stored InnoDB procedures are invoked via theparsed procedure tree, not via InnoDB SQL, so this function is not used. */que_fork_t*pars_stored_procedure_call(/*=======================*/ /* out: query graph */ sym_node_t* sym_node); /* in: stored procedure name *//**********************************************************************Completes a query graph by adding query thread and fork nodesabove it and prepares the graph for running. The fork created is oftype QUE_FORK_MYSQL_INTERFACE. */que_thr_t*pars_complete_graph_for_exec(/*=========================*/ /* out: query thread node to run */ que_node_t* node, /* in: root node for an incomplete query graph */ trx_t* trx, /* in: transaction handle */ mem_heap_t* heap); /* in: memory heap from which allocated *//* Struct used to denote a reserved word in a parsing tree */struct pars_res_word_struct{ int code; /* the token code for the reserved word from pars0grm.h */};/* A predefined function or operator node in a parsing tree; this constructis also used for some non-functions like the assignment ':=' */struct func_node_struct{ que_common_t common; /* type: QUE_NODE_FUNC */ int func; /* token code of the function name */ ulint class; /* class of the function */ que_node_t* args; /* argument(s) of the function */ UT_LIST_NODE_T(func_node_t) cond_list; /* list of comparison conditions; defined only for comparison operator nodes except, presently, for OPT_SCROLL_TYPE ones */ UT_LIST_NODE_T(func_node_t) func_node_list; /* list of function nodes in a parsed query graph */};/* An order-by node in a select */struct order_node_struct{ que_common_t common; /* type: QUE_NODE_ORDER */ sym_node_t* column; /* order-by column */ ibool asc; /* TRUE if ascending, FALSE if descending */};/* Procedure definition node */struct proc_node_struct{ que_common_t common; /* type: QUE_NODE_PROC */ sym_node_t* proc_id; /* procedure name symbol in the symbol table of this same procedure */ sym_node_t* param_list; /* input and output parameters */ que_node_t* stat_list; /* statement list */ sym_tab_t* sym_tab; /* symbol table of this procedure */};/* elsif-element node */struct elsif_node_struct{ que_common_t common; /* type: QUE_NODE_ELSIF */ que_node_t* cond; /* if condition */ que_node_t* stat_list; /* statement list */};/* if-statement node */struct if_node_struct{ que_common_t common; /* type: QUE_NODE_IF */ que_node_t* cond; /* if condition */ que_node_t* stat_list; /* statement list */ que_node_t* else_part; /* else-part statement list */ elsif_node_t* elsif_list; /* elsif element list */};/* while-statement node */struct while_node_struct{ que_common_t common; /* type: QUE_NODE_WHILE */ que_node_t* cond; /* while condition */ que_node_t* stat_list; /* statement list */};/* for-loop-statement node */struct for_node_struct{ que_common_t common; /* type: QUE_NODE_FOR */ sym_node_t* loop_var; /* loop variable: this is the dereferenced symbol from the variable declarations, not the symbol occurrence in the for loop definition */ que_node_t* loop_start_limit;/* initial value of loop variable */ que_node_t* loop_end_limit; /* end value of loop variable */ int loop_end_value; /* evaluated value for the end value: it is calculated only when the loop is entered, and will not change within the loop */ que_node_t* stat_list; /* statement list */};/* return-statement node */struct return_node_struct{ que_common_t common; /* type: QUE_NODE_RETURN */};/* Assignment statement node */struct assign_node_struct{ que_common_t common; /* type: QUE_NODE_ASSIGNMENT */ sym_node_t* var; /* variable to set */ que_node_t* val; /* value to assign */};/* Column assignment node */struct col_assign_node_struct{ que_common_t common; /* type: QUE_NODE_COL_ASSIGN */ sym_node_t* col; /* column to set */ que_node_t* val; /* value to assign */};/* Classes of functions */#define PARS_FUNC_ARITH 1 /* +, -, *, / */#define PARS_FUNC_LOGICAL 2#define PARS_FUNC_CMP 3#define PARS_FUNC_PREDEFINED 4 /* TO_NUMBER, SUBSTR, ... */#define PARS_FUNC_AGGREGATE 5 /* COUNT, DISTINCT, SUM */#define PARS_FUNC_OTHER 6 /* these are not real functions, e.g., := */#ifndef UNIV_NONINL#include "pars0pars.ic"#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -