#include "univ.i"#include "que0types.h"#include "usr0types.h"#include "pars0types.h"#include "row0types.h"#include "trx0types.h"#include "ut0vec.h"Go to the source code of this file.
Classes | |
| struct | pars_info_struct |
| struct | pars_user_func_struct |
| struct | pars_bound_lit_struct |
| struct | pars_bound_id_struct |
| struct | pars_res_word_struct |
| struct | func_node_struct |
| struct | order_node_struct |
| struct | proc_node_struct |
| struct | elsif_node_struct |
| struct | if_node_struct |
| struct | while_node_struct |
| struct | for_node_struct |
| struct | exit_node_struct |
| struct | return_node_struct |
| struct | assign_node_struct |
| struct | col_assign_node_struct |
Macros | |
| #define | pars0pars_h |
| #define | PARS_INPUT 0 |
| #define | PARS_OUTPUT 1 |
| #define | PARS_NOT_PARAM 2 |
| #define | PARS_FUNC_ARITH 1 |
| #define | PARS_FUNC_LOGICAL 2 |
| #define | PARS_FUNC_CMP 3 |
| #define | PARS_FUNC_PREDEFINED 4 |
| #define | PARS_FUNC_AGGREGATE 5 |
| #define | PARS_FUNC_OTHER 6 |
Typedefs | |
| typedef void *(* | pars_user_func_cb_t )(void *arg, void *user_arg) |
Functions | |
| int | yyparse (void) |
| UNIV_INTERN que_t * | pars_sql (pars_info_t *info, const char *str) |
| UNIV_INTERN void | pars_get_lex_chars (char *buf, int *result, int max_size) |
| UNIV_INTERN void | yyerror (const char *s) |
| UNIV_INTERN sym_node_t * | pars_variable_declaration (sym_node_t *node, pars_res_word_t *type) |
| UNIV_INTERN func_node_t * | pars_func (que_node_t *res_word, que_node_t *arg) |
| UNIV_INTERN func_node_t * | pars_op (int func, que_node_t *arg1, que_node_t *arg2) |
| UNIV_INTERN order_node_t * | pars_order_by (sym_node_t *column, pars_res_word_t *asc) |
| UNIV_INTERN sel_node_t * | pars_select_list (que_node_t *select_list, sym_node_t *into_list) |
| UNIV_INTERN que_node_t * | pars_cursor_declaration (sym_node_t *sym_node, sel_node_t *select_node) |
| UNIV_INTERN que_node_t * | pars_function_declaration (sym_node_t *sym_node) |
| UNIV_INTERN sel_node_t * | pars_select_statement (sel_node_t *select_node, sym_node_t *table_list, que_node_t *search_cond, pars_res_word_t *for_update, pars_res_word_t *consistent_read, order_node_t *order_by) |
| UNIV_INTERN col_assign_node_t * | pars_column_assignment (sym_node_t *column, que_node_t *exp) |
| UNIV_INTERN upd_node_t * | pars_update_statement_start (ibool is_delete, sym_node_t *table_sym, col_assign_node_t *col_assign_list) |
| UNIV_INTERN upd_node_t * | pars_update_statement (upd_node_t *node, sym_node_t *cursor_sym, que_node_t *search_cond) |
| UNIV_INTERN ins_node_t * | pars_insert_statement (sym_node_t *table_sym, que_node_t *values_list, sel_node_t *select) |
| UNIV_INTERN sym_node_t * | pars_parameter_declaration (sym_node_t *node, ulint param_type, pars_res_word_t *type) |
| UNIV_INTERN elsif_node_t * | pars_elsif_element (que_node_t *cond, que_node_t *stat_list) |
| UNIV_INTERN if_node_t * | pars_if_statement (que_node_t *cond, que_node_t *stat_list, que_node_t *else_part) |
| UNIV_INTERN for_node_t * | pars_for_statement (sym_node_t *loop_var, que_node_t *loop_start_limit, que_node_t *loop_end_limit, que_node_t *stat_list) |
| UNIV_INTERN while_node_t * | pars_while_statement (que_node_t *cond, que_node_t *stat_list) |
| UNIV_INTERN exit_node_t * | pars_exit_statement (void) |
| UNIV_INTERN return_node_t * | pars_return_statement (void) |
| UNIV_INTERN func_node_t * | pars_procedure_call (que_node_t *res_word, que_node_t *args) |
| UNIV_INTERN assign_node_t * | pars_assignment_statement (sym_node_t *var, que_node_t *val) |
| UNIV_INTERN fetch_node_t * | pars_fetch_statement (sym_node_t *cursor, sym_node_t *into_list, sym_node_t *user_func) |
| UNIV_INTERN open_node_t * | pars_open_statement (ulint type, sym_node_t *cursor) |
| UNIV_INTERN row_printf_node_t * | pars_row_printf_statement (sel_node_t *sel_node) |
| UNIV_INTERN commit_node_t * | pars_commit_statement (void) |
| UNIV_INTERN roll_node_t * | pars_rollback_statement (void) |
| UNIV_INTERN sym_node_t * | pars_column_def (sym_node_t *sym_node, pars_res_word_t *type, sym_node_t *len, void *is_unsigned, void *is_not_null) |
| UNIV_INTERN tab_node_t * | pars_create_table (sym_node_t *table_sym, sym_node_t *column_defs, void *not_fit_in_memory) |
| UNIV_INTERN ind_node_t * | pars_create_index (pars_res_word_t *unique_def, pars_res_word_t *clustered_def, sym_node_t *index_sym, sym_node_t *table_sym, sym_node_t *column_list) |
| UNIV_INTERN que_fork_t * | pars_procedure_definition (sym_node_t *sym_node, sym_node_t *param_list, que_node_t *stat_list) |
| UNIV_INTERN que_fork_t * | pars_stored_procedure_call (sym_node_t *sym_node) |
| UNIV_INTERN que_thr_t * | pars_complete_graph_for_exec (que_node_t *node, trx_t *trx, mem_heap_t *heap) |
| UNIV_INTERN pars_info_t * | pars_info_create (void) |
| UNIV_INTERN void | pars_info_free (pars_info_t *info) |
| UNIV_INTERN void | pars_info_add_literal (pars_info_t *info, const char *name, const void *address, ulint length, ulint type, ulint prtype) |
| UNIV_INTERN void | pars_info_add_str_literal (pars_info_t *info, const char *name, const char *str) |
| UNIV_INTERN void | pars_info_add_int4_literal (pars_info_t *info, const char *name, lint val) |
| UNIV_INTERN void | pars_info_add_ull_literal (pars_info_t *info, const char *name, ib_uint64_t val) |
| UNIV_INTERN void | pars_info_add_function (pars_info_t *info, const char *name, pars_user_func_cb_t func, void *arg) |
| UNIV_INTERN void | pars_info_add_id (pars_info_t *info, const char *name, const char *id) |
| UNIV_INTERN pars_user_func_t * | pars_info_get_user_func (pars_info_t *info, const char *name) |
| UNIV_INTERN pars_bound_lit_t * | pars_info_get_bound_lit (pars_info_t *info, const char *name) |
| UNIV_INTERN pars_bound_id_t * | pars_info_get_bound_id (pars_info_t *info, const char *name) |
| UNIV_INTERN void | pars_lexer_close (void) |
Variables | |
| int | yydebug |
| sym_tab_t * | pars_sym_tab_global |
| pars_res_word_t | pars_to_char_token |
| pars_res_word_t | pars_to_number_token |
| pars_res_word_t | pars_to_binary_token |
| pars_res_word_t | pars_binary_to_number_token |
| pars_res_word_t | pars_substr_token |
| pars_res_word_t | pars_replstr_token |
| pars_res_word_t | pars_concat_token |
| pars_res_word_t | pars_length_token |
| pars_res_word_t | pars_instr_token |
| pars_res_word_t | pars_sysdate_token |
| pars_res_word_t | pars_printf_token |
| pars_res_word_t | pars_assert_token |
| pars_res_word_t | pars_rnd_token |
| pars_res_word_t | pars_rnd_str_token |
| pars_res_word_t | pars_count_token |
| pars_res_word_t | pars_sum_token |
| pars_res_word_t | pars_distinct_token |
| pars_res_word_t | pars_binary_token |
| pars_res_word_t | pars_blob_token |
| pars_res_word_t | pars_int_token |
| pars_res_word_t | pars_char_token |
| pars_res_word_t | pars_float_token |
| pars_res_word_t | pars_update_token |
| pars_res_word_t | pars_asc_token |
| pars_res_word_t | pars_desc_token |
| pars_res_word_t | pars_open_token |
| pars_res_word_t | pars_close_token |
| pars_res_word_t | pars_share_token |
| pars_res_word_t | pars_unique_token |
| pars_res_word_t | pars_clustered_token |
| ulint | pars_star_denoter |
| #define PARS_FUNC_AGGREGATE 5 |
COUNT, DISTINCT, SUM
Definition at line 746 of file pars0pars.h.
| #define PARS_FUNC_ARITH 1 |
Classes of functions +, -, *, /
Definition at line 742 of file pars0pars.h.
| #define PARS_FUNC_CMP 3 |
comparison operators
Definition at line 744 of file pars0pars.h.
| #define PARS_FUNC_LOGICAL 2 |
AND, OR, NOT
Definition at line 743 of file pars0pars.h.
| #define PARS_FUNC_OTHER 6 |
these are not real functions, e.g., :=
Definition at line 747 of file pars0pars.h.
| #define PARS_FUNC_PREDEFINED 4 |
TO_NUMBER, SUBSTR, ...
Definition at line 745 of file pars0pars.h.
| typedef void*(* pars_user_func_cb_t)(void *arg, void *user_arg) |
Type of the user functions. The first argument is always InnoDB-supplied and varies in type, while 'user_arg' is a user-supplied argument. The meaning of the return type also varies. See the individual use cases, e.g. the FETCH statement, for details on them.
Definition at line 42 of file pars0pars.h.
| UNIV_INTERN assign_node_t* pars_assignment_statement | ( | sym_node_t * | var, |
| que_node_t * | val | ||
| ) |
Parses an assignment statement.
Parses an assignment statement.
| var | in: variable to assign |
| val | in: value to assign |
Definition at line 1404 of file pars0pars.cc.
References assign_node_struct::common, dtype_get_mtype(), sym_tab_struct::heap, mem_heap_alloc(), pars_assignment_statement(), que_node_get_val(), que_common_struct::type, ut_a, assign_node_struct::val, and assign_node_struct::var.
Referenced by pars_assignment_statement().
| UNIV_INTERN col_assign_node_t* pars_column_assignment | ( | sym_node_t * | column, |
| que_node_t * | exp | ||
| ) |
Parses a column assignment in an update.
Parses a column assignment in an update.
| column | in: column to assign |
| exp | in: value to assign |
Definition at line 863 of file pars0pars.cc.
References col_assign_node_struct::col, col_assign_node_struct::common, sym_tab_struct::heap, mem_heap_alloc(), pars_column_assignment(), que_common_struct::type, and col_assign_node_struct::val.
Referenced by pars_column_assignment().
| UNIV_INTERN sym_node_t* pars_column_def | ( | sym_node_t * | sym_node, |
| pars_res_word_t * | type, | ||
| sym_node_t * | len, | ||
| void * | is_unsigned, | ||
| void * | is_not_null | ||
| ) |
Parses a column definition at a table creation.
Parses a column definition at a table creation.
| sym_node | in: column node in the symbol table |
| type | in: data type |
| len | in: length of column, or NULL |
| is_unsigned | in: if not NULL, column is of type UNSIGNED. |
| is_not_null | in: if not NULL, column is of type NOT NULL. |
Definition at line 1577 of file pars0pars.cc.
References eval_node_get_int_val(), pars_column_def(), and que_node_get_val().
Referenced by pars_column_def().
| UNIV_INTERN commit_node_t* pars_commit_statement | ( | void | ) |
Parses a commit statement.
Definition at line 1555 of file pars0pars.cc.
References commit_node_create(), sym_tab_struct::heap, and pars_commit_statement().
Referenced by pars_commit_statement().
| UNIV_INTERN que_thr_t* pars_complete_graph_for_exec | ( | que_node_t * | node, |
| trx_t * | trx, | ||
| mem_heap_t * | heap | ||
| ) |
Completes a query graph by adding query thread and fork nodes above it and prepares the graph for running. The fork created is of type QUE_FORK_MYSQL_INTERFACE.
Completes a query graph by adding query thread and fork nodes above it and prepares the graph for running. The fork created is of type QUE_FORK_MYSQL_INTERFACE.
| node | in: root node for an incomplete query graph |
| trx | in: transaction handle |
| heap | in: memory heap from which allocated |
Definition at line 1909 of file pars0pars.cc.
References que_thr_struct::child, trx_struct::graph, pars_complete_graph_for_exec(), que_fork_create(), que_node_set_parent(), que_thr_create(), and que_fork_struct::trx.
Referenced by pars_complete_graph_for_exec(), row_create_index_for_mysql(), row_create_table_for_mysql(), row_get_prebuilt_update_vector(), row_prebuild_sel_graph(), and trx_general_rollback_for_mysql().
| UNIV_INTERN ind_node_t* pars_create_index | ( | pars_res_word_t * | unique_def, |
| pars_res_word_t * | clustered_def, | ||
| sym_node_t * | index_sym, | ||
| sym_node_t * | table_sym, | ||
| sym_node_t * | column_list | ||
| ) |
Parses an index creation operation.
Parses an index creation operation.
| unique_def | in: not NULL if a unique index |
| clustered_def | in: not NULL if a clustered index |
| index_sym | in: index name node in the symbol table |
| table_sym | in: table name node in the symbol table |
| column_list | in: list of column names |
Definition at line 1670 of file pars0pars.cc.
References DICT_CLUSTERED, DICT_UNIQUE, sym_tab_struct::heap, sym_node_struct::name, pars_create_index(), que_node_get_next(), que_node_list_get_len(), sym_node_struct::resolved, SYM_COLUMN, SYM_TABLE, and sym_node_struct::token_type.
Referenced by pars_create_index().
| UNIV_INTERN tab_node_t* pars_create_table | ( | sym_node_t * | table_sym, |
| sym_node_t * | column_defs, | ||
| void * | |||
| ) |
Parses a table creation operation.
Parses a table creation operation.
| table_sym | in: table name node in the symbol table |
| column_defs | in: list of column names |
Definition at line 1608 of file pars0pars.cc.
References sym_tab_struct::heap, dict_table_struct::heap, dtype_struct::len, dtype_struct::mtype, sym_node_struct::name, pars_create_table(), dtype_struct::prtype, que_node_get_next(), que_node_get_val(), que_node_list_get_len(), sym_node_struct::resolved, SYM_COLUMN, SYM_TABLE, and sym_node_struct::token_type.
Referenced by pars_create_table().
| UNIV_INTERN que_node_t* pars_cursor_declaration | ( | sym_node_t * | sym_node, |
| sel_node_t * | select_node | ||
| ) |
Parses a cursor declaration.
Parses a cursor declaration.
| sym_node | in: cursor id node in the symbol table |
| select_node | in: select node |
Definition at line 798 of file pars0pars.cc.
References sym_node_struct::cursor_def, sel_node_struct::explicit_cursor, pars_cursor_declaration(), sym_node_struct::resolved, SEL_NODE_CLOSED, sel_node_struct::state, SYM_CURSOR, and sym_node_struct::token_type.
Referenced by pars_cursor_declaration().
| UNIV_INTERN elsif_node_t* pars_elsif_element | ( | que_node_t * | cond, |
| que_node_t * | stat_list | ||
| ) |
Parses an elsif element.
Parses an elsif element.
| cond | in: if-condition |
| stat_list | in: statement list |
Definition at line 1232 of file pars0pars.cc.
References elsif_node_struct::common, elsif_node_struct::cond, sym_tab_struct::heap, mem_heap_alloc(), pars_elsif_element(), elsif_node_struct::stat_list, and que_common_struct::type.
Referenced by pars_elsif_element().
| UNIV_INTERN exit_node_t* pars_exit_statement | ( | void | ) |
Parses an exit statement.
Definition at line 1371 of file pars0pars.cc.
References exit_node_struct::common, sym_tab_struct::heap, mem_heap_alloc(), pars_exit_statement(), and que_common_struct::type.
Referenced by pars_exit_statement().
| UNIV_INTERN fetch_node_t* pars_fetch_statement | ( | sym_node_t * | cursor, |
| sym_node_t * | into_list, | ||
| sym_node_t * | user_func | ||
| ) |
Parses a fetch statement. into_list or user_func (but not both) must be non-NULL.
Parses a fetch statement. into_list or user_func (but not both) must be non-NULL.
| cursor | in: cursor node |
| into_list | in: variables to set, or NULL |
| user_func | in: user function name, or NULL |
Definition at line 1452 of file pars0pars.cc.
References sym_node_struct::alias, fetch_node_struct::common, sym_node_struct::cursor_def, fetch_node_struct::cursor_def, fetch_node_struct::func, sym_tab_struct::heap, sym_tab_struct::info, fetch_node_struct::into_list, mem_heap_alloc(), sym_node_struct::name, pars_fetch_statement(), pars_info_get_user_func(), que_node_list_get_len(), sel_node_struct::select_list, SYM_CURSOR, sym_node_struct::token_type, que_common_struct::type, and ut_a.
Referenced by pars_fetch_statement().
| UNIV_INTERN for_node_t* pars_for_statement | ( | sym_node_t * | loop_var, |
| que_node_t * | loop_start_limit, | ||
| que_node_t * | loop_end_limit, | ||
| que_node_t * | stat_list | ||
| ) |
Parses a for-loop-statement.
Parses a for-loop-statement.
| loop_var | in: loop variable |
| loop_start_limit | in: loop start expression |
| loop_end_limit | in: loop end expression |
| stat_list | in: statement list |
Definition at line 1335 of file pars0pars.cc.
References for_node_struct::common, sym_tab_struct::heap, sym_node_struct::indirection, for_node_struct::loop_end_limit, for_node_struct::loop_start_limit, for_node_struct::loop_var, mem_heap_alloc(), pars_for_statement(), for_node_struct::stat_list, que_common_struct::type, and ut_a.
Referenced by pars_for_statement().
| UNIV_INTERN func_node_t* pars_func | ( | que_node_t * | res_word, |
| que_node_t * | arg | ||
| ) |
Parses a function expression.
Parses a function expression.
| res_word | in: function name reserved word |
| arg | in: first argument in the argument list |
Definition at line 181 of file pars0pars.cc.
References pars_func().
Referenced by pars_func(), and pars_procedure_call().
| UNIV_INTERN que_node_t* pars_function_declaration | ( | sym_node_t * | sym_node | ) |
Parses a function declaration.
Parses a function declaration.
| sym_node | in: function id node in the symbol table |
Definition at line 819 of file pars0pars.cc.
References sym_tab_struct::info, sym_node_struct::name, pars_function_declaration(), pars_info_get_user_func(), sym_node_struct::resolved, SYM_FUNCTION, sym_node_struct::token_type, and ut_a.
Referenced by pars_function_declaration().
| UNIV_INTERN void pars_get_lex_chars | ( | char * | buf, |
| int * | result, | ||
| int | max_size | ||
| ) |
Retrieves characters to the lexical analyzer. in: maximum number of characters which fit in the buffer
Retrieves characters to the lexical analyzer.
| buf | in/out: buffer where to copy |
| result | out: number of characters copied or EOF |
| max_size | in: maximum number of characters which fit in the buffer |
Definition at line 1793 of file pars0pars.cc.
References sym_tab_struct::next_char_pos, pars_get_lex_chars(), sym_tab_struct::sql_string, sym_tab_struct::string_len, and ut_memcpy().
Referenced by pars_get_lex_chars().
| UNIV_INTERN if_node_t* pars_if_statement | ( | que_node_t * | cond, |
| que_node_t * | stat_list, | ||
| que_node_t * | else_part | ||
| ) |
Parses an if-statement.
Parses an if-statement.
| cond | in: if-condition |
| stat_list | in: statement list |
| else_part | in: else-part statement list or elsif element list |
Definition at line 1257 of file pars0pars.cc.
References if_node_struct::common, if_node_struct::cond, if_node_struct::else_part, if_node_struct::elsif_list, sym_tab_struct::heap, mem_heap_alloc(), pars_if_statement(), que_node_get_next(), que_node_get_type(), elsif_node_struct::stat_list, if_node_struct::stat_list, and que_common_struct::type.
Referenced by pars_if_statement().
| UNIV_INTERN void pars_info_add_function | ( | pars_info_t * | info, |
| const char * | name, | ||
| pars_user_func_cb_t | func, | ||
| void * | arg | ||
| ) |
Add user function. in: user-supplied argument
Add user function.
| info | in: info struct |
| name | in: function name |
| func | in: function address |
| arg | in: user-supplied argument |
Definition at line 2067 of file pars0pars.cc.
References pars_user_func_struct::arg, pars_user_func_struct::func, pars_info_struct::funcs, pars_info_struct::heap, ib_vector_create(), ib_vector_push(), mem_heap_alloc(), pars_user_func_struct::name, pars_info_add_function(), pars_info_get_user_func(), and ut_ad.
Referenced by pars_info_add_function().
| UNIV_INTERN void pars_info_add_id | ( | pars_info_t * | info, |
| const char * | name, | ||
| const char * | id | ||
| ) |
Add bound id. in: id
Add bound id.
| info | in: info struct |
| name | in: name |
| id | in: id |
Definition at line 2095 of file pars0pars.cc.
References pars_info_struct::bound_ids, pars_info_struct::heap, ib_vector_create(), ib_vector_push(), pars_bound_id_struct::id, mem_heap_alloc(), pars_bound_id_struct::name, pars_info_add_id(), pars_info_get_bound_id(), and ut_ad.
Referenced by pars_info_add_id().
| UNIV_INTERN void pars_info_add_int4_literal | ( | pars_info_t * | info, |
| const char * | name, | ||
| lint | val | ||
| ) |
Equivalent to:
char buf[4]; mach_write_to_4(buf, val); pars_info_add_literal(info, name, buf, 4, DATA_INT, 0);
except that the buffer is dynamically allocated from the info struct's heap. in: value
Equivalent to:
char buf[4]; mach_write_to_4(buf, val); pars_info_add_literal(info, name, buf, 4, DATA_INT, 0);
except that the buffer is dynamically allocated from the info struct's heap.
| info | in: info struct |
| name | in: name |
| val | in: value |
Definition at line 2027 of file pars0pars.cc.
References pars_info_struct::heap, mach_write_to_4(), mem_heap_alloc(), pars_info_add_int4_literal(), and pars_info_add_literal().
Referenced by pars_info_add_int4_literal(), and row_truncate_table_for_mysql().
| UNIV_INTERN void pars_info_add_literal | ( | pars_info_t * | info, |
| const char * | name, | ||
| const void * | address, | ||
| ulint | length, | ||
| ulint | type, | ||
| ulint | prtype | ||
| ) |
Add bound literal. in: precise type, e.g. DATA_UNSIGNED
Add bound literal.
| info | in: info struct |
| name | in: name |
| address | in: address |
| length | in: length of data |
| type | in: type, e.g. DATA_FIXBINARY |
| prtype | in: precise type, e.g. DATA_UNSIGNED |
Definition at line 1972 of file pars0pars.cc.
References pars_bound_lit_struct::address, pars_info_struct::bound_lits, pars_info_struct::heap, ib_vector_create(), ib_vector_push(), pars_bound_lit_struct::length, mem_heap_alloc(), pars_bound_lit_struct::name, pars_info_add_literal(), pars_info_get_bound_lit(), pars_bound_lit_struct::prtype, pars_bound_lit_struct::type, and ut_ad.
Referenced by pars_info_add_int4_literal(), pars_info_add_literal(), pars_info_add_str_literal(), and pars_info_add_ull_literal().
| UNIV_INTERN void pars_info_add_str_literal | ( | pars_info_t * | info, |
| const char * | name, | ||
| const char * | str | ||
| ) |
Equivalent to pars_info_add_literal(info, name, str, strlen(str), DATA_VARCHAR, DATA_ENGLISH). in: string
Equivalent to pars_info_add_literal(info, name, str, strlen(str), DATA_VARCHAR, DATA_ENGLISH).
| info | in: info struct |
| name | in: name |
| str | in: string |
Definition at line 2006 of file pars0pars.cc.
References pars_info_add_literal(), and pars_info_add_str_literal().
Referenced by pars_info_add_str_literal(), row_discard_tablespace_for_mysql(), row_drop_table_for_mysql(), and row_rename_table_for_mysql().
| UNIV_INTERN void pars_info_add_ull_literal | ( | pars_info_t * | info, |
| const char * | name, | ||
| ib_uint64_t | val | ||
| ) |
Equivalent to:
char buf[8]; mach_write_to_8(buf, val); pars_info_add_literal(info, name, buf, 8, DATA_FIXBINARY, 0);
except that the buffer is dynamically allocated from the info struct's heap. in: value
Equivalent to:
char buf[8]; mach_write_to_8(buf, val); pars_info_add_literal(info, name, buf, 8, DATA_FIXBINARY, 0);
except that the buffer is dynamically allocated from the info struct's heap.
| info | in: info struct |
| name | in: name |
| val | in: value |
Definition at line 2050 of file pars0pars.cc.
References pars_info_struct::heap, mach_write_to_8(), mem_heap_alloc(), pars_info_add_literal(), and pars_info_add_ull_literal().
Referenced by pars_info_add_ull_literal(), row_discard_tablespace_for_mysql(), and row_truncate_table_for_mysql().
| UNIV_INTERN pars_info_t* pars_info_create | ( | void | ) |
Create parser info struct.
Definition at line 1938 of file pars0pars.cc.
References pars_info_struct::bound_ids, pars_info_struct::bound_lits, pars_info_struct::funcs, pars_info_struct::graph_owns_us, pars_info_struct::heap, mem_heap_alloc(), mem_heap_create, and pars_info_create().
Referenced by dict_create_or_check_foreign_constraint_tables(), pars_info_create(), row_discard_tablespace_for_mysql(), row_drop_table_for_mysql(), row_rename_table_for_mysql(), and row_truncate_table_for_mysql().
| UNIV_INTERN void pars_info_free | ( | pars_info_t * | info | ) |
Free info struct and everything it contains. in, own: info struct
Free info struct and everything it contains.
| info | in, own: info struct |
Definition at line 1961 of file pars0pars.cc.
References pars_info_struct::heap, mem_heap_free, and pars_info_free().
Referenced by pars_info_free(), and que_graph_free().
| UNIV_INTERN pars_bound_id_t* pars_info_get_bound_id | ( | pars_info_t * | info, |
| const char * | name | ||
| ) |
Get bound id with the given name.
Get bound id with the given name.
| info | in: info struct |
| name | in: bound id name to find |
Definition at line 2182 of file pars0pars.cc.
References pars_info_struct::bound_ids, ib_vector_get(), ib_vector_size(), pars_bound_id_struct::name, and pars_info_get_bound_id().
Referenced by pars_info_add_id(), pars_info_get_bound_id(), and sym_tab_add_bound_id().
| UNIV_INTERN pars_bound_lit_t* pars_info_get_bound_lit | ( | pars_info_t * | info, |
| const char * | name | ||
| ) |
Get bound literal with the given name.
Get bound literal with the given name.
| info | in: info struct |
| name | in: bound literal name to find |
Definition at line 2152 of file pars0pars.cc.
References pars_info_struct::bound_lits, ib_vector_get(), ib_vector_size(), pars_bound_lit_struct::name, and pars_info_get_bound_lit().
Referenced by pars_info_add_literal(), pars_info_get_bound_lit(), and sym_tab_add_bound_lit().
| UNIV_INTERN pars_user_func_t* pars_info_get_user_func | ( | pars_info_t * | info, |
| const char * | name | ||
| ) |
Get user function with the given name.
Get user function with the given name.
| info | in: info struct |
| name | in: function name to find |
Definition at line 2122 of file pars0pars.cc.
References pars_info_struct::funcs, ib_vector_get(), ib_vector_size(), pars_user_func_struct::name, and pars_info_get_user_func().
Referenced by pars_fetch_statement(), pars_function_declaration(), pars_info_add_function(), and pars_info_get_user_func().
| UNIV_INTERN ins_node_t* pars_insert_statement | ( | sym_node_t * | table_sym, |
| que_node_t * | values_list, | ||
| sel_node_t * | select | ||
| ) |
Parses an insert statement.
Parses an insert statement.
| table_sym | in: table name node |
| values_list | in: value expression list or NULL |
| select | in: select condition or NULL |
Definition at line 1058 of file pars0pars.cc.
References sel_node_struct::common, dict_table_get_n_cols(), dict_table_get_n_user_cols(), dtuple_create(), sym_tab_struct::heap, ins_node_create(), ins_node_set_new_row(), que_common_struct::parent, pars_insert_statement(), que_node_list_get_len(), ins_node_struct::select, sel_node_struct::select_list, ins_node_struct::table, sym_node_struct::table, and ut_a.
Referenced by pars_insert_statement().
| UNIV_INTERN void pars_lexer_close | ( | void | ) |
Release any resources used by the lexer.
Definition at line 2851 of file pars0lex.c.
References pars_lexer_close().
Referenced by innobase_shutdown_for_mysql(), and pars_lexer_close().
| UNIV_INTERN func_node_t* pars_op | ( | int | func, |
| que_node_t * | arg1, | ||
| que_node_t * | arg2 | ||
| ) |
Parses an operator expression.
Parses an operator expression.
| func | in: operator token code |
| arg1 | in: first argument |
| arg2 | in: second argument or NULL for an unary operator |
Definition at line 194 of file pars0pars.cc.
References pars_op(), and que_node_list_add_last().
Referenced by pars_op().
| UNIV_INTERN open_node_t* pars_open_statement | ( | ulint | type, |
| sym_node_t * | cursor | ||
| ) |
Parses an open or close cursor statement.
Parses an open or close cursor statement.
| type | in: ROW_SEL_OPEN_CURSOR or ROW_SEL_CLOSE_CURSOR |
| cursor | in: cursor node |
Definition at line 1503 of file pars0pars.cc.
References sym_node_struct::alias, open_node_struct::common, sym_node_struct::cursor_def, open_node_struct::cursor_def, sym_tab_struct::heap, mem_heap_alloc(), open_node_struct::op_type, pars_open_statement(), SYM_CURSOR, sym_node_struct::token_type, que_common_struct::type, and ut_a.
Referenced by pars_open_statement().
| UNIV_INTERN order_node_t* pars_order_by | ( | sym_node_t * | column, |
| pars_res_word_t * | asc | ||
| ) |
Parses an ORDER BY clause. Order by a single column only is supported.
Parses an ORDER BY clause. Order by a single column only is supported.
| column | in: column name |
| asc | in: &pars_asc_token or pars_desc_token |
Definition at line 215 of file pars0pars.cc.
References order_node_struct::asc, order_node_struct::column, order_node_struct::common, sym_tab_struct::heap, mem_heap_alloc(), pars_order_by(), que_common_struct::type, and ut_a.
Referenced by pars_order_by().
| UNIV_INTERN sym_node_t* pars_parameter_declaration | ( | sym_node_t * | node, |
| ulint | param_type, | ||
| pars_res_word_t * | type | ||
| ) |
Parses a procedure parameter declaration.
Parses a procedure parameter declaration.
| node | in: symbol table node allocated for the id of the parameter |
| param_type | in: PARS_INPUT or PARS_OUTPUT |
| type | in: pointer to a type token |
Definition at line 1189 of file pars0pars.cc.
References sym_node_struct::param_type, pars_parameter_declaration(), pars_variable_declaration(), and ut_a.
Referenced by pars_parameter_declaration().
| UNIV_INTERN func_node_t* pars_procedure_call | ( | que_node_t * | res_word, |
| que_node_t * | args | ||
| ) |
Parses a procedure call.
Parses a procedure call.
| res_word | in: procedure name reserved word |
| args | in: argument list |
Definition at line 1432 of file pars0pars.cc.
References pars_func(), and pars_procedure_call().
Referenced by pars_procedure_call().
| UNIV_INTERN que_fork_t* pars_procedure_definition | ( | sym_node_t * | sym_node, |
| sym_node_t * | param_list, | ||
| que_node_t * | stat_list | ||
| ) |
Parses a procedure definition.
Parses a procedure definition.
| sym_node | in: procedure id node in the symbol table |
| param_list | in: parameter declaration list |
| stat_list | in: statement list |
Definition at line 1727 of file pars0pars.cc.
References que_thr_struct::child, proc_node_struct::common, sym_tab_struct::heap, mem_heap_alloc(), proc_node_struct::param_list, que_common_struct::parent, pars_procedure_definition(), proc_node_struct::proc_id, que_fork_create(), que_thr_create(), sym_tab_struct::query_graph, sym_node_struct::resolved, proc_node_struct::stat_list, SYM_PROCEDURE_NAME, proc_node_struct::sym_tab, sym_node_struct::token_type, que_fork_struct::trx, and que_common_struct::type.
Referenced by pars_procedure_definition().
| UNIV_INTERN return_node_t* pars_return_statement | ( | void | ) |
Parses a return-statement.
Definition at line 1387 of file pars0pars.cc.
References return_node_struct::common, sym_tab_struct::heap, mem_heap_alloc(), pars_return_statement(), and que_common_struct::type.
Referenced by pars_return_statement().
| UNIV_INTERN roll_node_t* pars_rollback_statement | ( | void | ) |
Parses a rollback statement.
Definition at line 1566 of file pars0pars.cc.
References sym_tab_struct::heap, pars_rollback_statement(), and roll_node_create().
Referenced by pars_rollback_statement().
| UNIV_INTERN row_printf_node_t* pars_row_printf_statement | ( | sel_node_t * | sel_node | ) |
Parses a row_printf-statement.
Parses a row_printf-statement.
| sel_node | in: select node |
Definition at line 1533 of file pars0pars.cc.
References sel_node_struct::common, row_printf_node_struct::common, sym_tab_struct::heap, mem_heap_alloc(), que_common_struct::parent, pars_row_printf_statement(), row_printf_node_struct::sel_node, and que_common_struct::type.
Referenced by pars_row_printf_statement().
| UNIV_INTERN sel_node_t* pars_select_list | ( | que_node_t * | select_list, |
| sym_node_t * | into_list | ||
| ) |
Parses a select list; creates a query graph node for the whole SELECT statement.
Parses a select list; creates a query graph node for the whole SELECT statement.
| select_list | in: select list |
| into_list | in: variables list or NULL |
Definition at line 650 of file pars0pars.cc.
References sym_tab_struct::heap, sel_node_struct::into_list, pars_select_list(), sel_node_create(), and sel_node_struct::select_list.
Referenced by pars_select_list(), and pars_update_statement().
| UNIV_INTERN sel_node_t* pars_select_statement | ( | sel_node_t * | select_node, |
| sym_node_t * | table_list, | ||
| que_node_t * | search_cond, | ||
| pars_res_word_t * | for_update, | ||
| pars_res_word_t * | lock_shared, | ||
| order_node_t * | order_by | ||
| ) |
Parses a select statement.
Parses a select statement.
| select_node | in: select node already containing the select list |
| table_list | in: table list |
| search_cond | in: search condition or NULL |
| for_update | in: NULL or &pars_update_token |
| lock_shared | in: NULL or &pars_share_token |
| order_by | in: NULL or an order-by node |
Definition at line 715 of file pars0pars.cc.
References sel_node_struct::can_get_updated, order_node_struct::column, sel_node_struct::consistent_read, sel_node_struct::copy_variables, sel_node_struct::explicit_cursor, sel_node_struct::into_list, sel_node_struct::n_tables, opt_search_plan(), sel_node_struct::order_by, pars_select_statement(), pars_star_denoter, que_node_list_get_len(), sel_node_struct::read_view, sel_node_struct::row_lock_mode, sel_node_struct::search_cond, SEL_NODE_OPEN, sel_node_struct::select_list, sel_node_struct::set_x_locks, sel_node_struct::state, sel_node_struct::table_list, ut_a, and UT_LIST_INIT.
Referenced by pars_select_statement(), and pars_update_statement().
| UNIV_INTERN que_t* pars_sql | ( | pars_info_t * | info, |
| const char * | str | ||
| ) |
Parses an SQL string returning the query graph.
Parses an SQL string returning the query graph.
| info | in: extra information, or NULL |
| str | in: SQL string |
Definition at line 1858 of file pars0pars.cc.
References sym_tab_struct::info, que_fork_struct::info, mem_heap_create, mem_heap_dup(), dict_sys_struct::mutex, sym_tab_struct::next_char_pos, pars_sql(), sym_tab_struct::query_graph, sym_node_struct::resolved, sym_tab_struct::sql_string, sym_tab_struct::string_len, sym_tab_struct::sym_list, que_fork_struct::sym_tab, sym_tab_create(), ut_a, ut_ad, UT_LIST_GET_FIRST, and UT_LIST_GET_NEXT.
Referenced by pars_sql(), and que_eval_sql().
| UNIV_INTERN que_fork_t* pars_stored_procedure_call | ( | sym_node_t * | ) |
Parses a stored procedure call, when this is not within another stored procedure, that is, the client issues a procedure call directly. In MySQL/InnoDB, stored InnoDB procedures are invoked via the parsed procedure tree, not via InnoDB SQL, so this function is not used.
Parses a stored procedure call, when this is not within another stored procedure, that is, the client issues a procedure call directly. In MySQL/InnoDB, stored InnoDB procedures are invoked via the parsed procedure tree, not via InnoDB SQL, so this function is not used.
Definition at line 1777 of file pars0pars.cc.
References pars_stored_procedure_call(), and ut_error.
Referenced by pars_stored_procedure_call().
| UNIV_INTERN upd_node_t* pars_update_statement | ( | upd_node_t * | node, |
| sym_node_t * | cursor_sym, | ||
| que_node_t * | search_cond | ||
| ) |
Parses an update or delete statement.
Parses an update or delete statement.
| node | in: update node |
| cursor_sym | in: pointer to a cursor entry in the symbol table or NULL |
| search_cond | in: search condition or NULL |
Definition at line 972 of file pars0pars.cc.
References sym_node_struct::alias, sel_node_struct::can_get_updated, plan_struct::clust_pcur, sel_node_struct::common, sel_node_struct::consistent_read, sym_node_struct::cursor_def, dict_index_is_clust(), plan_struct::index, sel_node_struct::is_aggregate, plan_struct::must_get_clust, sel_node_struct::n_tables, plan_struct::no_prefetch, sel_node_struct::order_by, que_common_struct::parent, pars_select_list(), pars_select_statement(), pars_update_statement(), plan_struct::pcur, upd_node_struct::pcur, que_node_list_add_last(), sel_node_struct::row_lock_mode, sel_node_get_nth_plan(), upd_node_struct::select, sel_node_struct::set_x_locks, upd_node_struct::state, sym_node_struct::table, upd_node_struct::table, ut_a, and UT_LIST_INIT.
Referenced by pars_update_statement().
| UNIV_INTERN upd_node_t* pars_update_statement_start | ( | ibool | is_delete, |
| sym_node_t * | table_sym, | ||
| col_assign_node_t * | col_assign_list | ||
| ) |
Parses a delete or update statement start.
Parses a delete or update statement start.
| is_delete | in: TRUE if delete |
| table_sym | in: table name node |
| col_assign_list | in: column assignment list, NULL if delete |
Definition at line 839 of file pars0pars.cc.
References sym_tab_struct::heap, pars_update_statement_start(), and upd_node_create().
Referenced by pars_update_statement_start().
| UNIV_INTERN sym_node_t* pars_variable_declaration | ( | sym_node_t * | node, |
| pars_res_word_t * | type | ||
| ) |
Parses a variable declaration.
Parses a variable declaration.
| node | in: symbol table node allocated for the id of the variable |
| type | in: pointer to a type token |
Definition at line 1168 of file pars0pars.cc.
References sym_node_struct::param_type, pars_variable_declaration(), que_node_get_val(), sym_node_struct::resolved, SYM_VAR, and sym_node_struct::token_type.
Referenced by pars_parameter_declaration(), and pars_variable_declaration().
| UNIV_INTERN while_node_t* pars_while_statement | ( | que_node_t * | cond, |
| que_node_t * | stat_list | ||
| ) |
Parses a while-statement.
Parses a while-statement.
| cond | in: while-condition |
| stat_list | in: statement list |
Definition at line 1308 of file pars0pars.cc.
References while_node_struct::common, while_node_struct::cond, sym_tab_struct::heap, mem_heap_alloc(), pars_while_statement(), while_node_struct::stat_list, and que_common_struct::type.
Referenced by pars_while_statement().
| UNIV_INTERN void yyerror | ( | const char * | ) |
Called by yyparse on error. in: error message string
Called by yyparse on error.
Definition at line 1841 of file pars0pars.cc.
| ulint pars_star_denoter |
Global variable used to denote the '*' in SELECT * FROM..
Definition at line 99 of file pars0pars.cc.
Referenced by pars_select_statement().
| int yydebug |
If the following is set TRUE, the parser will emit debugging information