MySQL 8.0.40
Source Code Documentation
|
SQL parser symbol table. More...
#include "dict0types.h"
#include "pars0types.h"
#include "que0types.h"
#include "row0types.h"
#include "univ.i"
#include "usr0types.h"
Go to the source code of this file.
Classes | |
struct | sym_node_t |
Symbol table node. More... | |
struct | sym_tab_t |
Symbol table. More... | |
Macros | |
#define | SYM_CLUST_FIELD_NO 0 |
Index of sym_node_t::field_nos corresponding to the clustered index. More... | |
#define | SYM_SEC_FIELD_NO 1 |
Index of sym_node_t::field_nos corresponding to a secondary index. More... | |
Enumerations | |
enum | sym_tab_entry { SYM_UNSET , SYM_VAR = 91 , SYM_IMPLICIT_VAR , SYM_LIT , SYM_TABLE_REF_COUNTED , SYM_TABLE , SYM_COLUMN , SYM_CURSOR , SYM_PROCEDURE_NAME , SYM_INDEX , SYM_FUNCTION } |
Types of a symbol table node. More... | |
Functions | |
sym_tab_t * | sym_tab_create (mem_heap_t *heap) |
Creates a symbol table for a single stored procedure or query. More... | |
void | sym_tab_free_private (sym_tab_t *sym_tab) |
Frees the memory allocated dynamically AFTER parsing phase for variables etc. More... | |
sym_node_t * | sym_tab_add_int_lit (sym_tab_t *sym_tab, ulint val) |
Adds an integer literal to a symbol table. More... | |
sym_node_t * | sym_tab_add_str_lit (sym_tab_t *sym_tab, const byte *str, ulint len) |
Adds an string literal to a symbol table. More... | |
sym_node_t * | sym_tab_add_bound_lit (sym_tab_t *sym_tab, const char *name, ulint *lit_type) |
Add a bound literal to a symbol table. More... | |
sym_node_t * | sym_tab_rebind_lit (sym_node_t *node, const void *address, ulint length) |
sym_node_t * | sym_tab_add_null_lit (sym_tab_t *sym_tab) |
Adds an SQL null literal to a symbol table. More... | |
sym_node_t * | sym_tab_add_id (sym_tab_t *sym_tab, byte *name, ulint len) |
Adds an identifier to a symbol table. More... | |
sym_node_t * | sym_tab_add_bound_id (sym_tab_t *sym_tab, const char *name) |
Add a bound identifier to a symbol table. More... | |
SQL parser symbol table.
Created 12/15/1997 Heikki Tuuri
#define SYM_CLUST_FIELD_NO 0 |
Index of sym_node_t::field_nos corresponding to the clustered index.
#define SYM_SEC_FIELD_NO 1 |
Index of sym_node_t::field_nos corresponding to a secondary index.
enum sym_tab_entry |
Types of a symbol table node.
sym_node_t * sym_tab_add_bound_id | ( | sym_tab_t * | sym_tab, |
const char * | name | ||
) |
Add a bound identifier to a symbol table.
sym_tab | in: symbol table |
name | in: name of bound id |
sym_node_t * sym_tab_add_bound_lit | ( | sym_tab_t * | sym_tab, |
const char * | name, | ||
ulint * | lit_type | ||
) |
Add a bound literal to a symbol table.
sym_tab | in: symbol table |
name | in: name of bound literal |
lit_type | out: type of literal (PARS_*_LIT) |
sym_node_t * sym_tab_add_id | ( | sym_tab_t * | sym_tab, |
byte * | name, | ||
ulint | len | ||
) |
Adds an identifier to a symbol table.
sym_tab | in: symbol table |
name | in: identifier name |
len | in: identifier length |
sym_node_t * sym_tab_add_int_lit | ( | sym_tab_t * | sym_tab, |
ulint | val | ||
) |
Adds an integer literal to a symbol table.
sym_tab | in: symbol table |
val | in: integer value |
sym_node_t * sym_tab_add_null_lit | ( | sym_tab_t * | sym_tab | ) |
Adds an SQL null literal to a symbol table.
sym_tab | in: symbol table |
sym_node_t * sym_tab_add_str_lit | ( | sym_tab_t * | sym_tab, |
const byte * | str, | ||
ulint | len | ||
) |
Adds an string literal to a symbol table.
Adds an string literal to a symbol table.
sym_tab | in: symbol table |
str | in: string with no quotes around it |
len | in: string length |
sym_tab_t * sym_tab_create | ( | mem_heap_t * | heap | ) |
Creates a symbol table for a single stored procedure or query.
heap | in: memory heap where to create |
void sym_tab_free_private | ( | sym_tab_t * | sym_tab | ) |
Frees the memory allocated dynamically AFTER parsing phase for variables etc.
in the symbol table. Does not free the mem heap where the table was originally created. Frees also SQL explicit cursor definitions. in, own: symbol table
in the symbol table. Does not free the mem heap where the table was originally created. Frees also SQL explicit cursor definitions.
sym_tab | in, own: symbol table |
sym_node_t * sym_tab_rebind_lit | ( | sym_node_t * | node, |
const void * | address, | ||
ulint | length | ||
) |