MySQL 5.6.14 Source Code Document
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
pars0pars.h File Reference
#include "univ.i"
#include "que0types.h"
#include "usr0types.h"
#include "pars0types.h"
#include "row0types.h"
#include "trx0types.h"
#include "ut0vec.h"
#include "pars0pars.ic"
Include dependency graph for pars0pars.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  pars_info_t
struct  pars_user_func_t
struct  pars_bound_lit_t
struct  pars_bound_id_t
struct  pars_res_word_t
struct  func_node_t
struct  order_node_t
struct  proc_node_t
struct  elsif_node_t
struct  if_node_t
struct  while_node_t
struct  for_node_t
struct  exit_node_t
struct  return_node_t
struct  assign_node_t
struct  col_assign_node_t

Macros

#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 ibool(* pars_user_func_cb_t )(void *arg, void *user_arg)

Functions

int yyparse (void)
UNIV_INTERN que_tpars_sql (pars_info_t *info, const char *str)
UNIV_INTERN int pars_get_lex_chars (char *buf, int max_size)
UNIV_INTERN void yyerror (const char *s)
UNIV_INTERN sym_node_tpars_variable_declaration (sym_node_t *node, pars_res_word_t *type)
UNIV_INTERN func_node_tpars_func (que_node_t *res_word, que_node_t *arg)
UNIV_INTERN int pars_like_rebind (sym_node_t *node, const byte *ptr, ulint len)
UNIV_INTERN func_node_tpars_op (int func, que_node_t *arg1, que_node_t *arg2)
UNIV_INTERN order_node_tpars_order_by (sym_node_t *column, pars_res_word_t *asc)
UNIV_INTERN sel_node_tpars_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_tpars_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_tpars_column_assignment (sym_node_t *column, que_node_t *exp)
UNIV_INTERN upd_node_tpars_update_statement_start (ibool is_delete, sym_node_t *table_sym, col_assign_node_t *col_assign_list)
UNIV_INTERN upd_node_tpars_update_statement (upd_node_t *node, sym_node_t *cursor_sym, que_node_t *search_cond)
UNIV_INTERN ins_node_tpars_insert_statement (sym_node_t *table_sym, que_node_t *values_list, sel_node_t *select)
UNIV_INTERN sym_node_tpars_parameter_declaration (sym_node_t *node, ulint param_type, pars_res_word_t *type)
UNIV_INTERN elsif_node_tpars_elsif_element (que_node_t *cond, que_node_t *stat_list)
UNIV_INTERN if_node_tpars_if_statement (que_node_t *cond, que_node_t *stat_list, que_node_t *else_part)
UNIV_INTERN for_node_tpars_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_tpars_while_statement (que_node_t *cond, que_node_t *stat_list)
UNIV_INTERN exit_node_tpars_exit_statement (void)
UNIV_INTERN return_node_tpars_return_statement (void)
UNIV_INTERN func_node_tpars_procedure_call (que_node_t *res_word, que_node_t *args)
UNIV_INTERN assign_node_tpars_assignment_statement (sym_node_t *var, que_node_t *val)
UNIV_INTERN fetch_node_tpars_fetch_statement (sym_node_t *cursor, sym_node_t *into_list, sym_node_t *user_func)
UNIV_INTERN open_node_tpars_open_statement (ulint type, sym_node_t *cursor)
UNIV_INTERN row_printf_node_tpars_row_printf_statement (sel_node_t *sel_node)
UNIV_INTERN commit_node_tpars_commit_statement (void)
UNIV_INTERN roll_node_tpars_rollback_statement (void)
UNIV_INTERN sym_node_tpars_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_tpars_create_table (sym_node_t *table_sym, sym_node_t *column_defs, sym_node_t *compact, sym_node_t *block_size, void *not_fit_in_memory)
UNIV_INTERN ind_node_tpars_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_tpars_procedure_definition (sym_node_t *sym_node, sym_node_t *param_list, que_node_t *stat_list)
UNIV_INTERN que_fork_tpars_stored_procedure_call (sym_node_t *sym_node)
UNIV_INTERN que_thr_tpars_complete_graph_for_exec (que_node_t *node, trx_t *trx, mem_heap_t *heap) __attribute__((nonnull(2
UNIV_INTERN pars_info_tpars_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_bind_literal (pars_info_t *info, const char *name, const void *address, ulint length, ulint type, ulint prtype)
UNIV_INTERN void pars_info_bind_varchar_literal (pars_info_t *info, const char *name, const byte *str, ulint str_len)
UNIV_INTERN void pars_info_bind_int4_literal (pars_info_t *info, const char *name, const ib_uint32_t *val)
UNIV_INTERN void pars_info_bind_int8_literal (pars_info_t *info, const char *name, const ib_uint64_t *val)
UNIV_INTERN void pars_info_bind_function (pars_info_t *info, const char *name, pars_user_func_cb_t func, void *arg)
UNIV_INTERN void pars_info_bind_id (pars_info_t *info, ibool copy_name, const char *name, const char *id)
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_bind_ull_literal (pars_info_t *info, const char *name, const ib_uint64_t *val) __attribute__((nonnull))
UNIV_INTERN void pars_info_add_id (pars_info_t *info, const char *name, const char *id)
UNIV_INTERN pars_bound_lit_tpars_info_get_bound_lit (pars_info_t *info, const char *name)
UNIV_INTERN pars_bound_id_tpars_info_get_bound_id (pars_info_t *info, const char *name)
UNIV_INTERN void pars_lexer_close (void)

Variables

int yydebug
sym_tab_tpars_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_bigint_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
UNIV_INTERN que_thr_t warn_unused_result

Detailed Description

SQL parser

Created 11/19/1996 Heikki Tuuri

Definition in file pars0pars.h.

Macro Definition Documentation

#define PARS_FUNC_AGGREGATE   5

COUNT, DISTINCT, SUM

Definition at line 817 of file pars0pars.h.

#define PARS_FUNC_ARITH   1

Classes of functions +, -, *, /

Definition at line 813 of file pars0pars.h.

#define PARS_FUNC_CMP   3

comparison operators

Definition at line 815 of file pars0pars.h.

#define PARS_FUNC_LOGICAL   2

AND, OR, NOT

Definition at line 814 of file pars0pars.h.

#define PARS_FUNC_OTHER   6

these are not real functions, e.g., :=

Definition at line 818 of file pars0pars.h.

#define PARS_FUNC_PREDEFINED   4

TO_NUMBER, SUBSTR, ...

Definition at line 816 of file pars0pars.h.

Typedef Documentation

typedef ibool(* 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 41 of file pars0pars.h.

Function Documentation

UNIV_INTERN assign_node_t* pars_assignment_statement ( sym_node_t var,
que_node_t *  val 
)

Parses an assignment statement.

Returns
assignment statement node in: value to assign

Parses an assignment statement.

Returns
assignment statement node
Parameters
varin: variable to assign
valin: value to assign

Definition at line 1710 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

UNIV_INTERN col_assign_node_t* pars_column_assignment ( sym_node_t column,
que_node_t *  exp 
)

Parses a column assignment in an update.

Returns
column assignment node in: value to assign

Parses a column assignment in an update.

Returns
column assignment node
Parameters
columnin: column to assign
expin: value to assign

Definition at line 1154 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

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.

Returns
column sym table node in: if not NULL, column is of type NOT NULL.

Parses a column definition at a table creation.

Returns
column sym table node
Parameters
sym_nodein: column node in the symbol table
typein: data type
lenin: length of column, or NULL
is_unsignedin: if not NULL, column is of type UNSIGNED.
is_not_nullin: if not NULL, column is of type NOT NULL.

Definition at line 1890 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

UNIV_INTERN commit_node_t* pars_commit_statement ( void  )

Parses a commit statement.

Returns
own: commit node struct

Definition at line 1868 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

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.

Returns
query thread node to run
Parameters
nodein: root node for an incomplete query graph, or NULL for dummy graph
trxin: transaction handle
heapin: memory heap from which allocated

Here is the caller graph for this function:

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.

Returns
index create subgraph in: list of column names

Parses an index creation operation.

Returns
index create subgraph
Parameters
unique_defin: not NULL if a unique index
clustered_defin: not NULL if a clustered index
index_symin: index name node in the symbol table
table_symin: table name node in the symbol table
column_listin: list of column names

Definition at line 2028 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

UNIV_INTERN tab_node_t* pars_create_table ( sym_node_t table_sym,
sym_node_t column_defs,
sym_node_t compact,
sym_node_t block_size,
void *  not_fit_in_memory 
)

Parses a table creation operation.

Returns
table create subgraph 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
Parameters
table_symin: table name node in the symbol table
column_defsin: list of column names
UNIV_INTERN que_node_t* pars_cursor_declaration ( sym_node_t sym_node,
sel_node_t select_node 
)

Parses a cursor declaration.

Returns
sym_node in: select node

Parses a cursor declaration.

Returns
sym_node
Parameters
sym_nodein: cursor id node in the symbol table
select_nodein: select node

Definition at line 1089 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

UNIV_INTERN elsif_node_t* pars_elsif_element ( que_node_t *  cond,
que_node_t *  stat_list 
)

Parses an elsif element.

Returns
elsif node in: statement list

Parses an elsif element.

Returns
elsif node
Parameters
condin: if-condition
stat_listin: statement list

Definition at line 1528 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

UNIV_INTERN exit_node_t* pars_exit_statement ( void  )

Parses an exit statement.

Returns
exit statement node

Definition at line 1675 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

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.

Returns
fetch statement node in: user function name, or NULL

Parses a fetch statement. into_list or user_func (but not both) must be non-NULL.

Returns
fetch statement node
Parameters
cursorin: cursor node
into_listin: variables to set, or NULL
user_funcin: user function name, or NULL

Definition at line 1759 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

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.

Returns
for-statement node in: statement list

Parses a for-loop-statement.

Returns
for-statement node
Parameters
loop_varin: loop variable
loop_start_limitin: loop start expression
loop_end_limitin: loop end expression
stat_listin: statement list

Definition at line 1638 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

UNIV_INTERN func_node_t* pars_func ( que_node_t *  res_word,
que_node_t *  arg 
)

Parses a function expression.

Returns
own: function node in a query tree in: first argument in the argument list

Parses a function expression.

Returns
own: function node in a query tree
Parameters
res_wordin: function name reserved word
argin: first argument in the argument list

Definition at line 269 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

UNIV_INTERN que_node_t* pars_function_declaration ( sym_node_t sym_node)

Parses a function declaration.

Returns
sym_node in: function id node in the symbol table

Parses a function declaration.

Returns
sym_node
Parameters
sym_nodein: function id node in the symbol table

Definition at line 1110 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

UNIV_INTERN int pars_get_lex_chars ( char *  buf,
int  max_size 
)

Retrieves characters to the lexical analyzer.

Returns
number of characters copied or 0 on EOF in: maximum number of characters which fit in the buffer

Retrieves characters to the lexical analyzer.

Parameters
bufin/out: buffer where to copy
max_sizein: maximum number of characters which fit in the buffer

Definition at line 2149 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

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.

Returns
if-statement node in: else-part statement list

Parses an if-statement.

Returns
if-statement node
Parameters
condin: if-condition
stat_listin: statement list
else_partin: else-part statement list or elsif element list

Definition at line 1555 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

UNIV_INTERN void pars_info_add_id ( pars_info_t info,
const char *  name,
const char *  id 
)

Add bound id. in: id

Parameters
infoin: info struct
namein: name
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.

Parameters
infoin: info struct
namein: name
valin: value

Definition at line 2448 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

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.

Parameters
infoin: info struct
namein: name
addressin: address
lengthin: length of data
typein: type, e.g. DATA_FIXBINARY
prtypein: precise type, e.g. DATA_UNSIGNED

Definition at line 2330 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

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).

Parameters
infoin: info struct
namein: name
strin: string

Definition at line 2370 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

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.

Parameters
infoin: info struct
namein: name
valin: value

Definition at line 2524 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

UNIV_INTERN void pars_info_bind_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.

Parameters
infoin: info struct
namein: function name
funcin: function address
argin: user-supplied argument

Definition at line 2568 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

UNIV_INTERN void pars_info_bind_id ( pars_info_t info,
ibool  copy_name,
const char *  name,
const char *  id 
)

Add bound id. in: id

Parameters
infoin: info struct
namein: name
idin: id

Definition at line 2603 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

UNIV_INTERN void pars_info_bind_int4_literal ( pars_info_t info,
const char *  name,
const ib_uint32_t *  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

Parameters
infoin: info struct
namein: name

Definition at line 2465 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

UNIV_INTERN void pars_info_bind_int8_literal ( pars_info_t info,
const char *  name,
const ib_uint64_t *  val 
)

in: value

Parameters
infoin: info struct
namein: name

Definition at line 2491 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

UNIV_INTERN void pars_info_bind_ull_literal ( pars_info_t info,
const char *  name,
const ib_uint64_t *  val 
)

If the literal value already exists then it rebinds otherwise it creates a new entry.

Parameters
infoin: info struct
namein: name
valin: value

Definition at line 2542 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

UNIV_INTERN void pars_info_bind_varchar_literal ( pars_info_t info,
const char *  name,
const byte *  str,
ulint  str_len 
)

in: string length

Parameters
infoin: info struct
namein: name
strin: string
str_lenin: string length

Definition at line 2414 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

UNIV_INTERN pars_info_t* pars_info_create ( void  )

Create parser info struct.

Returns
own: info struct

Definition at line 2296 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

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.

Parameters
infoin, own: info struct

Definition at line 2319 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

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.

Returns
bound id, or NULL if not found in: bound id name to find
Parameters
infoin: info struct

Definition at line 2640 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

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.

Returns
bound literal, or NULL if not found in: bound literal name to find

Get bound literal with the given name.

Returns
bound literal, or NULL if not found
Parameters
infoin: info struct
namein: bound literal name to find

Definition at line 2655 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

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.

Returns
own: update node in a query tree in: select condition or NULL

Parses an insert statement.

Returns
own: update node in a query tree
Parameters
table_symin: table name node
values_listin: value expression list or NULL
selectin: select condition or NULL

Definition at line 1353 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

UNIV_INTERN void pars_lexer_close ( void  )

Release any resources used by the lexer.

Definition at line 3120 of file lexyy.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

UNIV_INTERN func_node_t* pars_op ( int  func,
que_node_t *  arg1,
que_node_t *  arg2 
)

Parses an operator expression.

Returns
own: function node in a query tree in: second argument or NULL for an unary operator

Parses an operator expression.

Returns
own: function node in a query tree
Parameters
funcin: operator token code
arg1in: first argument
arg2in: second argument or NULL for an unary operator

Definition at line 456 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

UNIV_INTERN open_node_t* pars_open_statement ( ulint  type,
sym_node_t cursor 
)

Parses an open or close cursor statement.

Returns
fetch statement node in: cursor node

Parses an open or close cursor statement.

Returns
fetch statement node
Parameters
typein: ROW_SEL_OPEN_CURSOR or ROW_SEL_CLOSE_CURSOR
cursorin: cursor node

Definition at line 1813 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

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.

Returns
own: order-by node in a query tree in: &pars_asc_token or pars_desc_token

Parses an ORDER BY clause. Order by a single column only is supported.

Returns
own: order-by node in a query tree
Parameters
columnin: column name
ascin: &pars_asc_token or pars_desc_token

Definition at line 491 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

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.

Returns
own: symbol table node of type SYM_VAR in: pointer to a type token

Parses a procedure parameter declaration.

Returns
own: symbol table node of type SYM_VAR
Parameters
nodein: symbol table node allocated for the id of the parameter
param_typein: PARS_INPUT or PARS_OUTPUT
typein: pointer to a type token

Definition at line 1485 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

UNIV_INTERN func_node_t* pars_procedure_call ( que_node_t *  res_word,
que_node_t *  args 
)

Parses a procedure call.

Returns
function node in: argument list

Parses a procedure call.

Returns
function node
Parameters
res_wordin: procedure name reserved word
argsin: argument list

Definition at line 1739 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

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.

Returns
query fork node in: statement list

Parses a procedure definition.

Returns
query fork node
Parameters
sym_nodein: procedure id node in the symbol table
param_listin: parameter declaration list
stat_listin: statement list

Definition at line 2085 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

UNIV_INTERN return_node_t* pars_return_statement ( void  )

Parses a return-statement.

Returns
return-statement node

Definition at line 1692 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

UNIV_INTERN roll_node_t* pars_rollback_statement ( void  )

Parses a rollback statement.

Returns
own: rollback node struct

Definition at line 1879 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

UNIV_INTERN row_printf_node_t* pars_row_printf_statement ( sel_node_t sel_node)

Parses a row_printf-statement.

Returns
row_printf-statement node in: select node

Parses a row_printf-statement.

Returns
row_printf-statement node
Parameters
sel_nodein: select node

Definition at line 1845 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

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.

Returns
own: select node in a query tree in: variables list or NULL

Parses a select list; creates a query graph node for the whole SELECT statement.

Returns
own: select node in a query tree
Parameters
select_listin: select list
into_listin: variables list or NULL

Definition at line 941 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

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.

Returns
own: select node in a query tree in: NULL or an order-by node

Parses a select statement.

Returns
own: select node in a query tree
Parameters
select_nodein: select node already containing the select list
table_listin: table list
search_condin: search condition or NULL
for_updatein: NULL or &pars_update_token
lock_sharedin: NULL or &pars_share_token
order_byin: NULL or an order-by node

Definition at line 1006 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

UNIV_INTERN que_t* pars_sql ( pars_info_t info,
const char *  str 
)

Parses an SQL string returning the query graph.

Returns
own: the query graph in: SQL string

Parses an SQL string returning the query graph.

Returns
own: the query graph
Parameters
infoin: extra information, or NULL
strin: SQL string

Definition at line 2212 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

UNIV_INTERN que_fork_t* pars_stored_procedure_call ( sym_node_t sym_node)

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.

Returns
query graph in: stored procedure name
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.

Returns
own: update node in a query tree in: search condition or NULL

Parses an update or delete statement.

Returns
own: update node in a query tree
Parameters
nodein: update node
cursor_symin: pointer to a cursor entry in the symbol table or NULL
search_condin: search condition or NULL

Definition at line 1267 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

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.

Returns
own: update node in a query tree in: column assignment list, NULL if delete

Parses a delete or update statement start.

Returns
own: update node in a query tree
Parameters
is_deletein: TRUE if delete
table_symin: table name node
col_assign_listin: column assignment list, NULL if delete

Definition at line 1130 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

UNIV_INTERN sym_node_t* pars_variable_declaration ( sym_node_t node,
pars_res_word_t type 
)

Parses a variable declaration.

Returns
own: symbol table node of type SYM_VAR in: pointer to a type token

Parses a variable declaration.

Returns
own: symbol table node of type SYM_VAR
Parameters
nodein: symbol table node allocated for the id of the variable
typein: pointer to a type token

Definition at line 1464 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

UNIV_INTERN while_node_t* pars_while_statement ( que_node_t *  cond,
que_node_t *  stat_list 
)

Parses a while-statement.

Returns
while-statement node in: statement list

Parses a while-statement.

Returns
while-statement node
Parameters
condin: while-condition
stat_listin: statement list

Definition at line 1609 of file pars0pars.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

UNIV_INTERN void yyerror ( const char *  s)

Called by yyparse on error. in: error message string

Variable Documentation

ulint pars_star_denoter

Global variable used to denote the '*' in SELECT * FROM..

Definition at line 97 of file pars0pars.cc.

int yydebug
If the following is set TRUE, the parser will emit debugging

information