MySQL 8.0.39
Source Code Documentation
|
#include "sql/parse_tree_nodes.h"
#include <algorithm>
#include <cstring>
#include <limits>
#include <utility>
#include <vector>
#include "field_types.h"
#include "m_ctype.h"
#include "m_string.h"
#include "mem_root_deque.h"
#include "my_alloc.h"
#include "my_dbug.h"
#include "mysql/mysql_lex_string.h"
#include "mysql/udf_registration_types.h"
#include "mysql_com.h"
#include "scope_guard.h"
#include "sql/auth/auth_acls.h"
#include "sql/auth/sql_security_ctx.h"
#include "sql/create_field.h"
#include "sql/dd/info_schema/show.h"
#include "sql/dd/types/abstract_table.h"
#include "sql/dd/types/column.h"
#include "sql/derror.h"
#include "sql/field.h"
#include "sql/gis/srid.h"
#include "sql/intrusive_list_iterator.h"
#include "sql/item.h"
#include "sql/item_cmpfunc.h"
#include "sql/item_func.h"
#include "sql/item_timefunc.h"
#include "sql/key_spec.h"
#include "sql/mdl.h"
#include "sql/mysqld.h"
#include "sql/opt_explain_json.h"
#include "sql/opt_explain_traditional.h"
#include "sql/parse_location.h"
#include "sql/parse_tree_column_attrs.h"
#include "sql/parse_tree_hints.h"
#include "sql/parse_tree_partitions.h"
#include "sql/parse_tree_window.h"
#include "sql/parser_yystype.h"
#include "sql/query_options.h"
#include "sql/query_result.h"
#include "sql/query_term.h"
#include "sql/sp.h"
#include "sql/sp_head.h"
#include "sql/sp_instr.h"
#include "sql/sp_pcontext.h"
#include "sql/sql_base.h"
#include "sql/sql_call.h"
#include "sql/sql_class.h"
#include "sql/sql_cmd.h"
#include "sql/sql_cmd_ddl_table.h"
#include "sql/sql_component.h"
#include "sql/sql_const.h"
#include "sql/sql_data_change.h"
#include "sql/sql_delete.h"
#include "sql/sql_do.h"
#include "sql/sql_error.h"
#include "sql/sql_insert.h"
#include "sql/sql_parse.h"
#include "sql/sql_select.h"
#include "sql/sql_show.h"
#include "sql/sql_show_processlist.h"
#include "sql/sql_show_status.h"
#include "sql/sql_update.h"
#include "sql/system_variables.h"
#include "sql/table_function.h"
#include "sql/thr_malloc.h"
#include "sql/trigger_def.h"
#include "sql/window.h"
#include "sql_string.h"
#include "template_utils.h"
Classes | |
class | PT_attribute< ATTRIBUTE, BASE > |
Generic attribute node that can be used with different base types and corresponding parse contexts. More... | |
Namespaces | |
namespace | anonymous_namespace{parse_tree_nodes.cc} |
Typedefs | |
using | Local_tables_iterator = IntrusiveListIterator< Table_ref, &Table_ref::next_local > |
using | Local_tables_list = IteratorContainer< Local_tables_iterator > |
A list interface over the Table_ref::next_local pointer. More... | |
Functions | |
template<typename Context , typename Node > | |
bool | anonymous_namespace{parse_tree_nodes.cc}::contextualize_safe (Context *pc, Node node) |
template<typename Context > | |
bool | anonymous_namespace{parse_tree_nodes.cc}::contextualize_safe (Context *pc, mem_root_deque< Item * > *list) |
template<typename Context , typename Node , typename... Nodes> | |
bool | anonymous_namespace{parse_tree_nodes.cc}::contextualize_safe (Context *pc, Node node, Nodes... nodes) |
Convenience function that calls Parse_tree_node::contextualize() on each of the nodes that are non-NULL, stopping when a call returns true. More... | |
bool | anonymous_namespace{parse_tree_nodes.cc}::itemize_safe (Parse_context *pc, Item **item) |
Convenience function that calls Item::itemize() on the item if it's non-NULL. More... | |
static bool | is_transition_variable_prefix (const Parse_context &pc, const LEX_CSTRING &opt_prefix, const char *prefix) |
Recognize the transition variable syntax: { OLD | NEW } "." ... More... | |
static bool | is_old_transition_variable_prefix (const Parse_context &pc, const LEX_CSTRING &opt_prefix) |
static bool | is_new_transition_variable_prefix (const Parse_context &pc, const LEX_CSTRING &opt_prefix) |
static bool | is_any_transition_variable_prefix (const Parse_context &pc, const LEX_CSTRING &opt_prefix) |
Recognize any of transition variable syntax: { NEW | OLD } "." ... More... | |
static sp_variable * | find_sp_variable (const Parse_context &pc, const LEX_CSTRING &name) |
Try to resolve a name as SP formal parameter or local variable. More... | |
static bool | set_trigger_new_row (Parse_context *pc, LEX_CSTRING trigger_field_name, Item *expr_item, const POS &expr_pos) |
Helper action for a SET statement. More... | |
static bool | add_system_variable_assignment (THD *thd, LEX_CSTRING prefix, LEX_CSTRING suffix, enum enum_var_type var_type, Item *val) |
Helper action for a SET statement. More... | |
static Table_ref * | multi_delete_table_match (Table_ref *tbl, Table_ref *tables) |
static bool | multi_delete_link_tables (Parse_context *pc, SQL_I_List< Table_ref > *delete_tables) |
Link tables in auxiliary table list of multi-delete with corresponding elements in main table list, and set proper locks for them. More... | |
static Surrounding_context | qt2sc (Query_term_type qtt) |
static bool | setup_index (keytype key_type, const LEX_STRING name, PT_base_index_option *type, List< PT_key_part_specification > *columns, Index_options options, Table_ddl_parse_context *pc) |
bool | set_default_charset (HA_CREATE_INFO *create_info, const CHARSET_INFO *value) |
bool | set_default_collation (HA_CREATE_INFO *create_info, const CHARSET_INFO *collation) |
static void | setup_lex_show_cmd_type (THD *thd, Show_cmd_type show_cmd_type) |
static bool | init_alter_table_stmt (Table_ddl_parse_context *pc, Table_ident *table_name, Alter_info::enum_alter_table_algorithm algo, Alter_info::enum_alter_table_lock lock, Alter_info::enum_with_validation validation) |
A common initialization part of ALTER TABLE statement variants. More... | |
static bool | check_unsupported_json_table_default (const Item *item) |
PT_alter_tablespace_option_base * | make_tablespace_engine_attribute (MEM_ROOT *mem_root, LEX_CSTRING attr) |
Factory function which instantiates PT_attribute with suitable parameters, allocates on the provided mem_root, and returns the appropriate base pointer. More... | |
PT_create_table_option * | make_table_engine_attribute (MEM_ROOT *mem_root, LEX_CSTRING attr) |
Factory function which instantiates PT_attribute with suitable parameters, allocates on the provided mem_root, and returns the appropriate base pointer. More... | |
PT_create_table_option * | make_table_secondary_engine_attribute (MEM_ROOT *mem_root, LEX_CSTRING attr) |
Factory function which instantiates PT_attribute with suitable parameters, allocates on the provided mem_root, and returns the appropriate base pointer. More... | |
PT_column_attr_base * | make_column_engine_attribute (MEM_ROOT *mem_root, LEX_CSTRING attr) |
Factory function which instantiates PT_attribute with suitable parameters, allocates on the provided mem_root, and returns the appropriate base pointer. More... | |
PT_column_attr_base * | make_column_secondary_engine_attribute (MEM_ROOT *mem_root, LEX_CSTRING attr) |
Factory function which instantiates PT_attribute with suitable parameters, allocates on the provided mem_root, and returns the appropriate base pointer. More... | |
PT_base_index_option * | make_index_engine_attribute (MEM_ROOT *mem_root, LEX_CSTRING attr) |
Factory function which instantiates PT_attribute with suitable parameters, allocates on the provided mem_root, and returns the appropriate base pointer. More... | |
PT_base_index_option * | make_index_secondary_engine_attribute (MEM_ROOT *mem_root, LEX_CSTRING attr) |
Factory function which instantiates PT_attribute with suitable parameters, allocates on the provided mem_root, and returns the appropriate base pointer. More... | |
Variables | |
static constexpr const size_t | MAX_SYS_VAR_LENGTH {32} |
A list interface over the Table_ref::next_local pointer.
|
static |
Helper action for a SET statement.
Used to push a system variable into the assignment list. In stored routines detects "SET AUTOCOMMIT" and reject "SET GTID..." stuff.
thd | the current thread |
prefix | left hand side of a qualified name (if any) or nullptr string |
suffix | the right hand side of a qualified name (if any) or a whole unqualified name |
var_type | the scope of the variable |
val | the value being assigned to the variable |
|
static |
|
static |
Try to resolve a name as SP formal parameter or local variable.
pc | Parse context |
name | Name of probable SP variable |
|
static |
A common initialization part of ALTER TABLE statement variants.
pc | The parse context. |
table_name | The name of a table to alter. |
algo | The ALGORITHM clause: inplace, copy etc. |
lock | The LOCK clause: none, shared, exclusive etc. |
validation | The WITH or WITHOUT VALIDATION clause. |
|
static |
Recognize any of transition variable syntax: { NEW | OLD } "." ...
pc | Parse context |
opt_prefix | Optional prefix or empty LEX_CSTRING |
|
static |
|
static |
|
static |
Recognize the transition variable syntax: { OLD | NEW } "." ...
pc | Parse context |
opt_prefix | Optional prefix to examine or empty LEX_CSTRING |
prefix | "OLD" or "NEW" to compare with |
PT_column_attr_base * make_column_engine_attribute | ( | MEM_ROOT * | mem_root, |
LEX_CSTRING | attr | ||
) |
Factory function which instantiates PT_attribute with suitable parameters, allocates on the provided mem_root, and returns the appropriate base pointer.
mem_root | Memory arena. |
attr | Attribute value from parser. |
PT_column_attr_base * make_column_secondary_engine_attribute | ( | MEM_ROOT * | mem_root, |
LEX_CSTRING | attr | ||
) |
Factory function which instantiates PT_attribute with suitable parameters, allocates on the provided mem_root, and returns the appropriate base pointer.
mem_root | Memory arena. |
attr | Attribute value from parser. |
PT_base_index_option * make_index_engine_attribute | ( | MEM_ROOT * | mem_root, |
LEX_CSTRING | attr | ||
) |
Factory function which instantiates PT_attribute with suitable parameters, allocates on the provided mem_root, and returns the appropriate base pointer.
mem_root | Memory arena. |
attr | Attribute value from parser. |
PT_base_index_option * make_index_secondary_engine_attribute | ( | MEM_ROOT * | mem_root, |
LEX_CSTRING | attr | ||
) |
Factory function which instantiates PT_attribute with suitable parameters, allocates on the provided mem_root, and returns the appropriate base pointer.
mem_root | Memory arena. |
attr | Attribute value from parser. |
PT_create_table_option * make_table_engine_attribute | ( | MEM_ROOT * | mem_root, |
LEX_CSTRING | attr | ||
) |
Factory function which instantiates PT_attribute with suitable parameters, allocates on the provided mem_root, and returns the appropriate base pointer.
mem_root | Memory arena. |
attr | Attribute value from parser. |
PT_create_table_option * make_table_secondary_engine_attribute | ( | MEM_ROOT * | mem_root, |
LEX_CSTRING | attr | ||
) |
Factory function which instantiates PT_attribute with suitable parameters, allocates on the provided mem_root, and returns the appropriate base pointer.
mem_root | Memory arena. |
attr | Attribute value from parser. |
PT_alter_tablespace_option_base * make_tablespace_engine_attribute | ( | MEM_ROOT * | mem_root, |
LEX_CSTRING | attr | ||
) |
Factory function which instantiates PT_attribute with suitable parameters, allocates on the provided mem_root, and returns the appropriate base pointer.
mem_root | Memory arena. |
attr | Attribute value from parser. |
|
static |
Link tables in auxiliary table list of multi-delete with corresponding elements in main table list, and set proper locks for them.
pc | Parse context |
delete_tables | List of tables to delete from |
|
static |
|
static |
Helper action for a SET statement.
Used to SET a field of NEW row.
pc | the parse context |
trigger_field_name | the NEW-row field name |
expr_item | the value expression to be assigned |
expr_pos | the value expression query |
|
static |
|
static |
|
staticconstexpr |