29#ifndef SQL_LEX_INCLUDED
30#define SQL_LEX_INCLUDED
62#include "mysqld_error.h"
259#define TYPE_ENUM_FUNCTION 1
260#define TYPE_ENUM_PROCEDURE 2
261#define TYPE_ENUM_TRIGGER 3
262#define TYPE_ENUM_PROXY 4
290#define TL_OPTION_UPDATING 0x01
291#define TL_OPTION_IGNORE_LEAVES 0x02
292#define TL_OPTION_ALIAS 0x04
482#define INDEX_HINT_MASK_JOIN (1)
483#define INDEX_HINT_MASK_GROUP (1 << 1)
484#define INDEX_HINT_MASK_ORDER (1 << 2)
486#define INDEX_HINT_MASK_ALL \
487 (INDEX_HINT_MASK_JOIN | INDEX_HINT_MASK_GROUP | INDEX_HINT_MASK_ORDER)
667 for (
auto qt : query_terms<>()) {
668 if (qt->query_block() == qb)
return qt;
708 auto const setop = down_cast<Query_term_set_op *>(
m_query_term);
709 if (setop->last_distinct() > 0)
710 return setop->child(setop->last_distinct())->query_block();
717 return down_cast<Query_term_set_op *>(
m_query_term)->last_distinct() > 0;
956 bool finalize_access_paths);
1187 bool calc_found_rows)
override;
1374 ulong table_options,
1682 const char *prefix);
1769 void cleanup(
bool full)
override;
1797 assert(
join ==
nullptr);
1877 bool optimize(
THD *thd,
bool finalize_access_paths);
2263 bool top,
bool in_sj,
Item **new_conds,
2264 uint *changelog =
nullptr);
2270 Item **sj_cond,
bool *simple_const);
2276 Item *join_cond,
bool left_outer,
2277 bool use_inner_join);
2281 bool reject_multiple_rows,
2283 Item *lifted_where_cond);
2291 Item *selected_field_or_ref,
2292 const uint first_non_hidden);
2297 bool *selected_expr_added_to_group_by,
2302 bool *added_card_check,
size_t *added_window_card_checks);
2305 bool added_card_check,
size_t added_window_card_checks);
2357 Item **lifted_where);
2507 qt = down_cast<Query_term_unary *>(qt)->child(0);
2514 qt = down_cast<Query_term_unary *>(qt)->child(0);
2648 std::unique_ptr<malloc_unordered_map<std::string, Sroutine_hash_entry *>>
2701 *
this = std::move(*state);
2976 constexpr uint32_t shift =
2988 constexpr uint32_t shift =
3042 switch (accessed_table) {
3044 return "STMT_READS_TRANS_TABLE";
3047 return "STMT_READS_NON_TRANS_TABLE";
3050 return "STMT_READS_TEMP_TRANS_TABLE";
3053 return "STMT_READS_TEMP_NON_TRANS_TABLE";
3056 return "STMT_WRITES_TRANS_TABLE";
3059 return "STMT_WRITES_NON_TRANS_TABLE";
3062 return "STMT_WRITES_TEMP_TRANS_TABLE";
3065 return "STMT_WRITES_TEMP_NON_TRANS_TABLE";
3077#define BINLOG_DIRECT_ON \
3082#define BINLOG_DIRECT_OFF \
3087#define TRX_CACHE_EMPTY 0x33
3089#define TRX_CACHE_NOT_EMPTY 0xCC
3091#define IL_LT_REPEATABLE 0xAA
3093#define IL_GTE_REPEATABLE 0x55
3146 bool trx_cache_is_not_empty,
3147 uint tx_isolation) {
3148 bool unsafe =
false;
3150 if (in_multi_stmt_transaction_mode) {
3151 const uint condition =
3161 (
"RESULT %02X %02X %02X\n", condition,
3366 unsigned char yyGet() {
3368 const char c = *
m_ptr++;
3382 unsigned char yyPeek()
const {
3391 unsigned char yyPeekn(
int n)
const {
3535 const char *end_ptr);
3600 const char *alias)
const {
4036 const bool execute_only_in_secondary_engine_param,
4039 execute_only_in_secondary_engine_param;
4056 return "TABLESAMPLE";
4065 bool execute_in_hypergraph_optimizer_param,
4068 execute_in_hypergraph_optimizer_param;
4467 if (
unit ==
nullptr)
return;
4559 tr->restore_properties();
4600 bool copy_db_to(
char const **p_db,
size_t *p_db_length)
const;
4603 return copy_db_to(
const_cast<const char **
>(p_db), p_db_length);
4863 void reset(
const char *found_semicolon,
size_t length) {
4938 static void *
operator new(
size_t size)
noexcept {
4939 return (*THR_MALLOC)->Alloc(
size);
4942 const std::nothrow_t &arg
4943 [[maybe_unused]] = std::nothrow)
noexcept {
4946 static void operator delete(
void *ptr [[maybe_unused]],
4947 size_t size [[maybe_unused]]) {
4950 static void operator delete(
4951 void *,
MEM_ROOT *,
const std::nothrow_t &)
noexcept {
4992 &valid_len, &len_error)) {
4995 hexbuf, string_val.
str + valid_len,
4996 static_cast<uint
>(std::min<size_t>(string_val.
length - valid_len, 3)));
5017 std::string &invalid_sub_str) {
5022 &valid_len, &len_error)) {
5023 char printable_buff[32];
5025 printable_buff,
sizeof(printable_buff), string_val.
str + valid_len,
5026 static_cast<uint
>(std::min<size_t>(string_val.
length - valid_len, 3)),
5028 invalid_sub_str = printable_buff;
5041 Item *item [[maybe_unused]],
5042 bool hidden [[maybe_unused]]) {
5044 if (
std::find(fields.begin(), fields.end(), item) != fields.end()) {
5047 assert(item->hidden == hidden);
5059 const char *legend);
static mysql_service_status_t init()
Component initialization.
Definition: audit_api_message_emit.cc:571
uint32_t Access_bitmask
Definition: auth_acls.h:34
Kerberos Client Authentication nullptr
Definition: auth_kerberos_client_plugin.cc:251
Data describing the table being created by CREATE TABLE or altered by ALTER TABLE.
Definition: sql_alter.h:205
RAII class to automate saving/restoring of current_query_block()
Definition: sql_lex.h:5058
void restore()
Definition: sql_lex.h:5062
Query_block * saved_query_block
Definition: sql_lex.h:5067
THD * thd
Definition: sql_lex.h:5066
Change_current_query_block(THD *thd_arg)
Definition: sql_lex.h:5060
~Change_current_query_block()
Definition: sql_lex.h:5063
Parser state for CTE subquery parser.
Definition: sql_lex.h:4915
Common_table_expr_parser_state()
Definition: sql_lex.cc:1215
PT_subquery * result
Definition: sql_lex.h:4919
Utility RAII class to save/modify/restore the condition_context information of a query block.
Definition: sql_lex.h:2521
enum_condition_context saved_value
Definition: sql_lex.h:2543
~Condition_context()
Definition: sql_lex.h:2537
Query_block * select
Definition: sql_lex.h:2542
Condition_context(Query_block *select_ptr, enum_condition_context new_type=enum_condition_context::NEITHER)
Definition: sql_lex.h:2523
Parser state for Derived table's condition parser.
Definition: sql_lex.h:4926
Item * result
Definition: sql_lex.h:4930
Derived_expr_parser_state()
Definition: sql_lex.cc:1218
Definition: event_parse_data.h:43
Parser state for single expression parser (.frm/DD stuff)
Definition: sql_lex.h:4905
Expression_parser_state()
Definition: sql_lex.cc:1212
Item * result
Definition: sql_lex.h:4909
Parser state for generated column expression parser (.frm/DD stuff)
Definition: sql_lex.h:4895
Value_generator * result
Definition: sql_lex.h:4899
Gcol_expr_parser_state()
Definition: sql_lex.cc:1209
Definition: sql_lex.h:490
LEX_CSTRING key_name
Definition: sql_lex.h:500
void print(const THD *thd, String *str)
Print an index hint.
Definition: sql_lex.cc:2759
index_clause_map clause
Definition: sql_lex.h:495
enum index_hint_type type
Definition: sql_lex.h:493
Index_hint(const char *str, uint length)
Definition: sql_lex.h:502
Definition: item_cmpfunc.h:2439
Definition: item_subselect.h:448
Definition: item_func.h:3488
Definition: item_func.h:3539
This class is used to implement operations like SET @variable or @variable:= expression.
Definition: item_func.h:3298
A wrapper Item that normally returns its parameter, but becomes NULL when processing rows for rollup.
Definition: item_func.h:1718
A wrapper Item that contains a number of aggregate items, one for each level of rollup (see Item_roll...
Definition: item_sum.h:2714
Base class that is common to all subqueries and subquery predicates.
Definition: item_subselect.h:80
Class Item_sum is the base class used for special expressions that SQL calls 'set functions'.
Definition: item_sum.h:399
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:930
cond_result
Definition: item.h:993
@ COND_UNDEF
Definition: item.h:993
Definition: sql_optimizer.h:133
Definition: key_spec.h:67
RAII class to set state m_splitting_window_expression for a scope.
Definition: sql_lex.h:3911
LEX * m_lex
Definition: sql_lex.h:3913
~Splitting_window_expression()
Definition: sql_lex.h:3920
Splitting_window_expression(LEX *lex, bool v)
Definition: sql_lex.h:3916
Definition: sql_lex.h:3748
LEX_COLUMN(const String &x, const Access_bitmask &y)
Definition: sql_lex.h:3752
String column
Definition: sql_lex.h:3750
Access_bitmask rights
Definition: sql_lex.h:3751
Definition: sql_lex.h:3760
List< LEX_USER > * role_list
Definition: sql_lex.h:3769
void cleanup()
Definition: sql_lex.cc:5253
bool grant_as_used
Definition: sql_lex.h:3766
role_enum role_type
Definition: sql_lex.h:3767
LEX_USER * user
Definition: sql_lex.h:3768
LEX_GRANT_AS()
Definition: sql_lex.cc:5260
Definition: sql_list.h:633
Definition: sql_list.h:494
A typesafe replacement for DYNAMIC_ARRAY.
Definition: mem_root_array.h:426
Storage for name strings.
Definition: item.h:298
Global level hints.
Definition: opt_hints.h:351
Query block level hints.
Definition: opt_hints.h:373
Definition: parse_tree_nodes.h:1773
Represents the WITH clause: WITH [...], [...] SELECT ..., ^^^^^^^^^^^^^^^^^.
Definition: parse_tree_nodes.h:365
Base class for all top-level nodes of SQL statements.
Definition: parse_tree_nodes.h:161
Internal state of the parser.
Definition: sql_lexer_parser_state.h:44
Lex_input_stream m_lip
Definition: sql_lexer_parser_state.h:79
void add_comment()
Signal that the current query has a comment.
Definition: sql_lexer_parser_state.h:73
void reset(const char *found_semicolon, size_t length)
Definition: sql_lexer_parser_state.h:67
Yacc_state m_yacc
Definition: sql_lexer_parser_state.h:80
Parser_state()
Definition: sql_lex.h:4847
Parser_input m_input
Definition: sql_lexer_parser_state.h:78
bool has_comment() const
Check whether the current query has a comment.
Definition: sql_lexer_parser_state.h:75
bool m_comment
True if current query contains comments.
Definition: sql_lexer_parser_state.h:88
bool init(THD *thd, const char *buff, size_t length)
Object initializer.
Definition: sql_lexer_parser_state.h:63
PSI_digest_locker * m_digest_psi
Current performance digest instrumentation.
Definition: sql_lex.h:4876
Parser state for partition expression parser (.frm/DD stuff)
Definition: sql_lex.h:4885
Partition_expr_parser_state()
Definition: sql_lex.cc:1206
partition_info * result
Definition: sql_lex.h:4889
A typesafe replacement for DYNAMIC_ARRAY.
Definition: prealloced_array.h:71
RAII class to ease the call of LEX::mark_broken() if error.
Definition: sql_lex.h:4709
~Prepare_error_tracker()
Definition: sql_lex.cc:139
THD *const thd
Definition: sql_lex.h:4715
Prepare_error_tracker(THD *thd_arg)
Definition: sql_lex.h:4711
Definition: protocol.h:33
This class represents a query block, aka a query specification, which is a query consisting of a SELE...
Definition: sql_lex.h:1159
void print_update_list(const THD *thd, String *str, enum_query_type query_type, const mem_root_deque< Item * > &fields, const mem_root_deque< Item * > &values)
Print assignments list.
Definition: sql_lex.cc:3341
void print_delete(const THD *thd, String *str, enum_query_type query_type)
Print detail of the DELETE statement.
Definition: sql_lex.cc:3121
void add_base_options(ulonglong options)
Add base options to a query block, also update active options.
Definition: sql_lex.h:1227
uint n_scalar_subqueries
Keep track for allocation of base_ref_items: scalar subqueries may be replaced by a field during scal...
Definition: sql_lex.h:2135
void label_children() override
Set the correct value of Query_term::m_sibling_idx recursively for set operations.
Definition: sql_lex.h:1195
void qbPrint(int level, std::ostringstream &buf) const
Minion of debugPrint.
Definition: query_term.cc:965
Query_block * next
Intrusive linked list of all query blocks within the same query expression.
Definition: sql_lex.h:2404
void cleanup_all_joins()
Definition: sql_union.cc:1456
uint select_number
Query block number (used for EXPLAIN)
Definition: sql_lex.h:2068
bool subquery_in_having
HAVING clause contains subquery => we can't close tables before query processing end even if we use t...
Definition: sql_lex.h:2230
Query_term_type term_type() const override
Get the node tree type.
Definition: sql_lex.h:1190
void print_where_cond(const THD *thd, String *str, enum_query_type query_type)
Print list of conditions in WHERE clause.
Definition: sql_lex.cc:3428
Item * where_cond() const
Definition: sql_lex.h:1202
bool is_grouped() const
Definition: sql_lex.h:1309
void print_insert_options(String *str)
Print INSERT options.
Definition: sql_lex.cc:3269
bool m_json_agg_func_used
Definition: sql_lex.h:2492
mem_root_deque< mem_root_deque< Item * > * > * row_value_list
The VALUES items of a table value constructor.
Definition: sql_lex.h:1940
bool is_dependent() const
Definition: sql_lex.h:1824
void print_qualify(const THD *thd, String *str, enum_query_type query_type) const
Print list of items in QUALIFY clause.
Definition: sql_lex.cc:3480
mem_root_deque< Item * > * get_fields_list()
Definition: sql_lex.h:1399
MaterializePathParameters::Operand setup_materialize_query_block(AccessPath *child_path, TABLE *dst_table) const
Make materialization parameters for a query block given its input path and destination table,...
Definition: sql_union.cc:695
bool with_sum_func
True if contains or aggregates set functions.
Definition: sql_lex.h:2224
Ref_item_array m_saved_base_items
A backup of the items in base_ref_items at the end of preparation, so that base_ref_items can be rest...
Definition: sql_lex.h:2477
bool is_explicitly_grouped() const
Definition: sql_lex.h:1285
Item * m_where_cond
Condition to be evaluated after all tables in a query block are joined.
Definition: sql_lex.h:2463
olap_type olap
Indicates whether this query block contains non-primitive grouping (such as ROLLUP).
Definition: sql_lex.h:2166
Item::cond_result having_value
Definition: sql_lex.h:2079
Item::cond_result cond_value
Saved values of the WHERE and HAVING clauses.
Definition: sql_lex.h:2078
bool setup_base_ref_items(THD *thd)
Setup the array containing references to base items.
Definition: sql_lex.cc:2583
uint get_in_sum_expr() const
Definition: sql_lex.h:1369
void print_values(const THD *thd, String *str, enum_query_type query_type, const mem_root_deque< mem_root_deque< Item * > * > &values, const char *prefix)
Print list of values, used in INSERT and for general VALUES clause.
Definition: sql_lex.cc:3382
bool group_fix_field
true when GROUP BY fix field called in processing of this query block
Definition: sql_lex.h:2217
void print_item_list(const THD *thd, String *str, enum_query_type query_type)
Print list of items in Query_block object.
Definition: sql_lex.cc:3317
Resolve_place resolve_place
Indicates part of query being resolved.
Definition: sql_lex.h:2100
bool m_right_joins
True if query block has right joins.
Definition: sql_lex.h:2486
Query_block(MEM_ROOT *mem_root, Item *where, Item *having)
Construct and initialize Query_block object.
Definition: sql_lex.cc:2256
bool is_implicitly_grouped() const
Definition: sql_lex.h:1292
void add_subquery_transform_candidate(Item_exists_subselect *predicate)
Definition: sql_lex.h:1481
size_t visible_column_count() const override
Return the number of visible columns of the query term.
Definition: sql_lex.h:1408
Item * m_having_cond
Condition to be evaluated on grouped rows after grouping.
Definition: sql_lex.h:2466
uint cond_count
Number of predicates after preparation.
Definition: sql_lex.h:2118
Query_result * m_query_result
Result of this query block.
Definition: sql_lex.h:2416
void cleanup(bool full) override
Cleanup this subtree (this Query_block and all nested Query_blockes and Query_expressions).
Definition: sql_union.cc:1427
bool absorb_limit_of(Query_block *block)
end of overridden methods from Query_term
Definition: query_term.cc:1024
Table_ref * end_lateral_table
Last table for LATERAL join, used by table functions.
Definition: sql_lex.h:2044
void print_hints(const THD *thd, String *str, enum_query_type query_type)
Print detail of Hints.
Definition: sql_lex.cc:3201
bool accept(Select_lex_visitor *visitor)
Accept function for SELECT and DELETE.
Definition: sql_lex.cc:3569
uint max_equal_elems
Maximal number of elements in multiple equalities.
Definition: sql_lex.h:2122
uint table_func_count
Number of table functions in this query block.
Definition: sql_lex.h:2154
Item ** qualify_cond_ref()
Definition: sql_lex.h:1209
Mem_root_array< Item_exists_subselect * > * sj_candidates
Pointer to collection of subqueries candidate for semi/antijoin conversion.
Definition: sql_lex.h:2395
bool having_fix_field
true when having fix field called in processing of this query block
Definition: sql_lex.h:2215
bool has_aj_nests
Definition: sql_lex.h:2485
uint hidden_items_from_optimization
Hidden items added during optimization.
Definition: sql_lex.h:2249
Query_block * link_next
Intrusive double-linked global list of query blocks.
Definition: sql_lex.h:2412
VisibleFieldsIterator types_iterator() override
Abstract over visible column types: if query block, we offer an iterator over visible fields,...
Definition: sql_lex.h:1407
void invalidate()
Invalidate by nulling out pointers to other Query_expressions and Query_blockes.
Definition: sql_lex.cc:2575
Opt_hints_qb * opt_hints_qb
Query-block-level hints, for this query block.
Definition: sql_lex.h:1991
Query_block * query_block() const override
The query_block which holds the ORDER BY and LIMIT information for this set operation.
Definition: sql_lex.h:1192
Query_block ** link_prev
Definition: sql_lex.h:2413
uint with_wild
Number of wildcards used in the SELECT list.
Definition: sql_lex.h:2147
Name_resolution_context context
Context for name resolution for all column references except columns from joined tables.
Definition: sql_lex.h:2016
Item ** where_cond_ref()
Definition: sql_lex.h:1203
void make_active_options(ulonglong added_options, ulonglong removed_options)
Make active options from base options, supplied options and environment:
Definition: sql_lex.cc:2438
void set_empty_query()
Set query block as returning no data.
Definition: sql_lex.h:1796
Query_expression * slave
The first query expression contained within this query block.
Definition: sql_lex.h:2409
bool is_item_list_lookup
Definition: sql_lex.h:2212
void mark_as_dependent(Query_block *last, bool aggregate)
Mark all query blocks from this to 'last' as dependent.
Definition: sql_lex.cc:2474
Table_ref * leaf_tables
Points to first leaf table of query block.
Definition: sql_lex.h:2042
bool save_order_properties(THD *thd, SQL_I_List< ORDER > *list, Group_list_ptrs **list_ptrs)
Helper for save_properties()
Definition: sql_lex.cc:4368
Item_sum * inner_sum_func_list
Circular linked list of aggregate functions in nested query blocks.
Definition: sql_lex.h:2059
Item ** having_cond_ref()
Definition: sql_lex.h:1206
bool first_execution
This variable is required to ensure proper work of subqueries and stored procedures.
Definition: sql_lex.h:2201
Item * having_cond() const
Definition: sql_lex.h:1205
void print_delete_options(String *str)
Print DELETE options.
Definition: sql_lex.cc:3261
bool add_ftfunc_to_list(Item_func_match *func)
Definition: sql_lex.cc:2567
void print_having(const THD *thd, String *str, enum_query_type query_type)
Print list of items in HAVING clause.
Definition: sql_lex.cc:3464
bool walk(Item_processor processor, enum_walk walk, uchar *arg)
Definition: sql_lex.cc:4816
bool m_agg_func_used
Definition: sql_lex.h:2491
Query_expression * first_inner_query_expression() const
Definition: sql_lex.h:1271
uint materialized_derived_table_count
Number of materialized derived tables and views in this query block.
Definition: sql_lex.h:2138
VisibleFieldsIterator visible_fields()
Wrappers over fields / get_fields_list() that hide items where item->hidden, meant for range-based fo...
Definition: sql_lex.h:1404
List< Item_func_match > * ftfunc_list
A pointer to ftfunc_list_alloc, list of full text search functions.
Definition: sql_lex.h:1936
uint in_sum_expr
Parse context: is inside a set function if this is positive.
Definition: sql_lex.h:2084
enum_condition_context condition_context
Definition: sql_lex.h:2169
void set_right_joins()
Definition: sql_lex.h:1813
uint n_sum_items
Number of Item_sum-derived objects in this SELECT.
Definition: sql_lex.h:2129
bool m_limit_1
Whether we have LIMIT 1 and no OFFSET.
Definition: sql_lex.h:2051
Query_block * outer_query_block() const
Definition: sql_lex.h:1272
void renumber(LEX *lex)
Renumber query blocks of contained query expressions.
Definition: sql_lex.cc:4542
mem_root_deque< Table_ref * > * m_current_table_nest
Pointer to the set of table references in the currently active join.
Definition: sql_lex.h:2033
List< Window > m_windows
All windows defined on the select, both named and inlined.
Definition: sql_lex.h:1931
Table_ref * find_table_by_name(const Table_ident *ident)
Finds a (possibly unresolved) table reference in the from clause by name.
Definition: sql_lex.cc:4887
uint leaf_table_count
Number of leaf tables in this query block.
Definition: sql_lex.h:2150
void set_having_cond(Item *cond)
Definition: sql_lex.h:1207
bool m_use_select_limit
If true, use select_limit to limit number of rows selected.
Definition: sql_lex.h:2237
bool has_limit() const
Definition: sql_lex.h:1343
void set_qualify_cond(Item *cond)
Definition: sql_lex.h:1210
bool validate_outermost_option(LEX *lex, const char *wrong_option) const
Check if an option that can be used only for an outer-most query block is applicable to this query bl...
Definition: sql_lex.cc:4721
void destroy()
Destroy contained objects, in particular temporary tables which may have their own mem_roots.
Definition: sql_union.cc:1467
uint derived_table_count
Number of derived tables and views in this query block.
Definition: sql_lex.h:2152
bool is_ordered() const
Definition: sql_lex.h:1320
void destroy_tree() override
Destroy the query term tree structure.
Definition: sql_lex.h:1196
uint partitioned_table_count
Number of partitioned tables.
Definition: sql_lex.h:2140
Prealloced_array< Item_rollup_group_item *, 4 > rollup_group_items
Definition: sql_lex.h:1985
void print_insert_fields(const THD *thd, String *str, enum_query_type query_type)
Print column list to be inserted into.
Definition: sql_lex.cc:3362
mem_root_deque< Item * > * types_array() override
Definition: query_term.cc:827
bool json_agg_func_used() const
Definition: sql_lex.h:1806
bool get_optimizable_conditions(THD *thd, Item **new_where, Item **new_having)
Returns disposable copies of WHERE/HAVING/ON conditions.
Definition: sql_lex.cc:4619
uint between_count
Number of between predicates in where/having/on.
Definition: sql_lex.h:2120
Query_result * query_result() const
Definition: sql_lex.h:1212
void include_in_global(Query_block **plink)
Include query block into global list.
Definition: sql_lex.cc:4558
bool agg_func_used() const
Definition: sql_lex.h:1805
Resolve_place
Three fields used by semi-join transformations to know when semi-join is possible,...
Definition: sql_lex.h:2092
@ RESOLVE_HAVING
Definition: sql_lex.h:2096
@ RESOLVE_NONE
Definition: sql_lex.h:2093
@ RESOLVE_SELECT_LIST
Definition: sql_lex.h:2098
@ RESOLVE_QUALIFY
Definition: sql_lex.h:2097
@ RESOLVE_JOIN_NEST
Definition: sql_lex.h:2094
@ RESOLVE_CONDITION
Definition: sql_lex.h:2095
void include_chain_in_global(Query_block **start)
Include chain of query blocks into global list.
Definition: sql_lex.cc:4569
SQL_I_List< ORDER > order_list
ORDER BY clause.
Definition: sql_lex.h:1955
char * db
Definition: sql_lex.h:1993
List< Item_func_match > ftfunc_list_alloc
Definition: sql_lex.h:1937
static const char * get_type_str(enum_explain_type type)
Definition: sql_lex.h:1820
void remove_base_options(ulonglong options)
Remove base options from a query block.
Definition: sql_lex.h:1238
enum_explain_type type() const
Lookup for Query_block type.
Definition: sql_lex.cc:4439
bool optimize_query_term(THD *, Query_expression *) override
Optimize the non-leaf query blocks.
Definition: sql_lex.h:1179
Item * offset_limit
LIMIT ... OFFSET clause, NULL if no offset is given.
Definition: sql_lex.h:2049
void set_sj_candidates(Mem_root_array< Item_exists_subselect * > *sj_cand)
Definition: sql_lex.h:1478
void print_order_by(const THD *thd, String *str, enum_query_type query_type) const
Print list of items in ORDER BY clause.
Definition: sql_lex.cc:3510
static const char * type_str[static_cast< int >(enum_explain_type::EXPLAIN_total)]
Definition: sql_lex.h:2501
Query_expression * master
The query expression containing this query block.
Definition: sql_lex.h:2407
bool has_subquery_transforms() const
Definition: sql_lex.h:1488
Ref_item_array base_ref_items
Array of pointers to "base" items; one each for every selected expression and referenced item in the ...
Definition: sql_lex.h:2066
int hidden_order_field_count
How many expressions are part of the order by but not select list.
Definition: sql_lex.h:2398
enum_parsing_context parsing_place
Parse context: indicates where the current expression is being parsed.
Definition: sql_lex.h:2082
void init_order()
Definition: sql_lex.h:1497
uint8 uncacheable
result of this query can't be cached, bit field, can be : UNCACHEABLE_DEPENDENT UNCACHEABLE_RAND UNCA...
Definition: sql_lex.h:2183
ulonglong m_base_options
Options assigned from parsing and throughout resolving, should not be modified after resolving is don...
Definition: sql_lex.h:2422
bool source_table_is_one_row() const
Definition: sql_lex.h:1828
uint in_window_expr
Parse context: is inside a window function if this is positive.
Definition: sql_lex.h:2086
void include_down(LEX *lex, Query_expression *outer)
Include query block inside a query expression.
Definition: sql_lex.cc:4493
void include_standalone(Query_expression *sel)
Include query block inside a query expression, but do not link.
Definition: sql_lex.cc:4530
Group_list_ptrs * group_list_ptrs
Definition: sql_lex.h:1968
uint saved_cond_count
Number of arguments of and/or/xor in where/having/on.
Definition: sql_lex.h:2116
Subquery_strategy subquery_strategy(const THD *thd) const
Returns which subquery execution strategies can be used for this query block.
Definition: sql_lex.cc:4642
Query_block * next_query_block() const
Definition: sql_lex.h:1273
Name_resolution_context * first_context
Pointer to first object in list of Name res context objects that have this query block as the base qu...
Definition: sql_lex.h:2023
void include_neighbour(LEX *lex, Query_block *before)
Include a query block next to another query block.
Definition: sql_lex.cc:4511
bool is_table_value_constructor
If set, the query block is of the form VALUES row_list.
Definition: sql_lex.h:2172
Item * get_derived_expr(uint expr_index)
Returns an expression from the select list of the query block using the field's index in a derived ta...
Definition: sql_derived.cc:1308
bool semijoin_enabled(const THD *thd) const
Returns whether semi-join is enabled for this query block.
Definition: sql_lex.cc:4668
Query_expression * master_query_expression() const
Definition: sql_lex.h:1270
void update_semijoin_strategies(THD *thd)
Update available semijoin strategies for semijoin nests.
Definition: sql_lex.cc:4673
uint select_n_having_items
Number of items in the select list, HAVING clause, QUALIFY clause and ORDER BY clause.
Definition: sql_lex.h:2114
Table_ref * get_table_list() const
Definition: sql_lex.h:1394
void print_update(const THD *thd, String *str, enum_query_type query_type)
Print detail of the UPDATE statement.
Definition: sql_lex.cc:3084
bool is_simple_query_block() const
Definition: sql_lex.h:1783
void print_table_references(const THD *thd, String *str, Table_ref *table_list, enum_query_type query_type)
Print list of tables.
Definition: sql_lex.cc:3283
bool has_tables() const
Definition: sql_lex.h:1282
void debugPrint(int level, std::ostringstream &buf) const override
Query_term methods overridden.
Definition: query_term.cc:1002
bool m_internal_limit
If true, limit object is added internally.
Definition: sql_lex.h:2240
int hidden_group_field_count
Number of GROUP BY expressions added to all_fields.
Definition: sql_lex.h:2472
bool is_recursive() const
Definition: sql_lex.h:1349
int get_number_of_grouping_sets() const
Definition: sql_lex.h:2452
void print_windows(const THD *thd, String *str, enum_query_type query_type)
Print details of Windowing functions.
Definition: sql_lex.cc:3488
bool no_table_names_allowed
used for global order by
Definition: sql_lex.h:2245
bool validate_base_options(LEX *lex, ulonglong options) const
Validate base options for a query block.
Definition: sql_lex.cc:4758
void set_where_cond(Item *cond)
Definition: sql_lex.h:1204
Item * select_limit
LIMIT clause, NULL if no limit is given.
Definition: sql_lex.h:2047
ulonglong active_options() const
Definition: sql_lex.h:1251
bool save_properties(THD *thd)
Save properties of a prepared statement needed for repeated optimization.
Definition: sql_lex.cc:4391
Table_ref * embedding
table embedding the above list
Definition: sql_lex.h:2035
bool open_result_tables(THD *, int) override
Open tmp tables for the tree of set operation query results, by recursing.
Definition: query_term.cc:1016
table_map select_list_tables
The set of those tables whose fields are referenced in the select list of this select level.
Definition: sql_lex.h:2009
bool m_was_implicitly_grouped
Used by nested scalar_to_derived transformations.
Definition: sql_lex.h:2207
bool has_sj_nests
True if query block has semi-join nests merged into it.
Definition: sql_lex.h:2484
Prealloced_array< Item_rollup_sum_switcher *, 4 > rollup_sums
Definition: sql_lex.h:1987
SQL_I_List< ORDER > group_list
GROUP BY clause.
Definition: sql_lex.h:1967
SQL_I_List< Table_ref > m_table_list
List of tables in FROM clause - use Table_ref::next_local to traverse.
Definition: sql_lex.h:1946
uint select_n_where_fields
Number of fields used in select list or where clause of current select and all inner subselects.
Definition: sql_lex.h:2107
bool skip_local_transforms
True: skip local transformations during prepare() call (used by INSERT)
Definition: sql_lex.h:2210
void print_limit(const THD *thd, String *str, enum_query_type query_type) const
Definition: sql_lex.cc:2728
const char * get_type_str()
Lookup for a type string.
Definition: sql_lex.h:1819
Table_ref * resolve_nest
Used when resolving outer join condition.
Definition: sql_lex.h:2438
bool is_empty_query() const
Definition: sql_lex.h:1792
void print_query_block(const THD *thd, String *str, enum_query_type query_type)
Print detail of the Query_block object.
Definition: sql_lex.cc:3060
mem_root_deque< Table_ref * > m_table_nest
Set of table references contained in outer-most join nest.
Definition: sql_lex.h:2031
bool set_context(Name_resolution_context *outer_context)
Assign a default name resolution object for this query block.
Definition: sql_lex.cc:2273
void set_json_agg_func_used(bool val)
Definition: sql_lex.h:1810
bool allow_merge_derived
Allow merge of immediate unnamed derived tables.
Definition: sql_lex.h:2489
bool add_tables(THD *thd, const Mem_root_array< Table_ident * > *tables, ulong table_options, thr_lock_type lock_type, enum_mdl_type mdl_type)
Add tables from an array to a list of used tables.
Definition: sql_lex.cc:2298
void print_select_options(String *str)
Print select options.
Definition: sql_lex.cc:3247
void set_query_result(Query_result *result)
Definition: sql_lex.h:1211
mem_root_deque< Table_ref * > sj_nests
List of semi-join nests generated for this query block.
Definition: sql_lex.h:1943
Table_ref * recursive_reference
If this query block is a recursive member of a recursive unit: the Table_ref, in this recursive membe...
Definition: sql_lex.h:2000
bool add_item_to_list(Item *item)
Definition: sql_lex.cc:2558
void print(const THD *thd, String *str, enum_query_type query_type)
Definition: sql_lex.cc:3021
bool is_non_primitive_grouped() const
Definition: sql_lex.h:1299
bool exclude_from_table_unique_test
exclude this query block from unique_table() check
Definition: sql_lex.h:2243
bool sj_pullout_done
True when semi-join pull-out processing is complete.
Definition: sql_lex.h:2204
AccessPath * make_set_op_access_path(THD *thd, Query_term_set_op *parent, Mem_root_array< AppendPathParameters > *union_all_subpaths, bool calc_found_rows) override
Recursively constructs the access path of the set operation, possibly materializing in a tmp table if...
Definition: query_term.cc:815
int nest_level
Nesting level of query block, outer-most query block has level 0, its subqueries have level 1,...
Definition: sql_lex.h:2160
const char * operator_string() const override
Get the node type description.
Definition: sql_lex.h:1191
Group_list_ptrs * order_list_ptrs
Definition: sql_lex.h:1956
uint n_child_sum_items
Number of Item_sum-derived objects in children and descendant SELECTs.
Definition: sql_lex.h:2131
bool save_cmd_properties(THD *thd)
Save prepared statement properties for a query block and underlying query expressions.
Definition: sql_lex.cc:4908
void set_agg_func_used(bool val)
Definition: sql_lex.h:1808
bool print_error(const THD *thd, String *str)
Print error.
Definition: sql_lex.cc:3226
bool prepare_query_term(THD *thd, Query_expression *qe, Change_current_query_block *save_query_block, mem_root_deque< Item * > *insert_field_list, Query_result *common_result, ulonglong added_options, ulonglong removed_options, ulonglong create_option) override
a) Prepare query blocks, both leaf blocks and blocks reresenting order by/limit in query primaries wi...
Definition: query_term.cc:760
Item * qualify_cond() const
Definition: sql_lex.h:1208
bool is_cacheable() const
Definition: sql_lex.h:1825
ha_rows get_offset(const THD *thd) const
Get offset for LIMIT.
Definition: sql_lex.cc:2537
void add_active_options(ulonglong options)
Adjust the active option set.
Definition: sql_lex.h:1248
ha_rows get_limit(const THD *thd) const
Get limit.
Definition: sql_lex.cc:2544
Item * clone_expression(THD *thd, Item *item, Table_ref *derived_table)
Creates a clone for the given expression by re-parsing the expression.
Definition: sql_derived.cc:831
void set_base_options(ulonglong options_arg)
Set base options for a query block (and active options too)
Definition: sql_lex.h:1217
void print_update_options(String *str)
Print UPDATE options.
Definition: sql_lex.cc:3254
void print_insert(const THD *thd, String *str, enum_query_type query_type)
Print detail of the INSERT statement.
Definition: sql_lex.cc:3153
table_map all_tables_map() const
Definition: sql_lex.h:1266
bool right_joins() const
Definition: sql_lex.h:1812
JOIN * join
After optimization it is pointer to corresponding JOIN.
Definition: sql_lex.h:2029
ulonglong m_active_options
Active options.
Definition: sql_lex.h:2428
decltype(SQL_I_List< ORDER >::elements) m_no_of_added_exprs
For an explicitly grouped, correlated, scalar subquery which is transformed to join with derived tabl...
Definition: sql_lex.h:1981
void restore_cmd_properties()
Restore prepared statement properties for this query block and all underlying query expressions so th...
Definition: sql_lex.cc:4929
Item * m_qualify_cond
Condition to be evaluated after window functions.
Definition: sql_lex.h:2469
void cut_subtree()
Definition: sql_lex.h:1509
bool has_sj_candidates() const
Definition: sql_lex.h:1484
void print_from_clause(const THD *thd, String *str, enum_query_type query_type)
Print list of tables in FROM clause.
Definition: sql_lex.cc:3410
bool m_empty_query
True if query block does not generate any rows before aggregation, determined during preparation (not...
Definition: sql_lex.h:2498
table_map outer_join
Bitmap of all inner tables from outer joins.
Definition: sql_lex.h:2010
size_t m_added_non_hidden_fields
Definition: sql_lex.h:1904
int m_num_grouping_sets
If the query block includes non-primitive grouping, then these modifiers are represented as grouping ...
Definition: sql_lex.h:2435
Query_block * next_select_in_list() const
Definition: sql_lex.h:1277
void print_group_by(const THD *thd, String *str, enum_query_type query_type)
Print list of items in GROUP BY clause.
Definition: sql_lex.cc:3443
auto visible_fields() const
Definition: sql_lex.h:1405
bool can_skip_distinct() const
Based on the structure of the query at resolution time, it is possible to conclude that DISTINCT is u...
Definition: sql_lex.h:1337
bool is_distinct() const
Definition: sql_lex.h:1312
void set_tables_readonly()
Set associated tables as read_only, ie.
Definition: sql_lex.h:1259
mem_root_deque< Item * > fields
All expressions needed after join and filtering, ie., select list, group by list, having clause,...
Definition: sql_lex.h:1926
LEX * parent_lex
Reference to LEX that this query block belongs to.
Definition: sql_lex.h:2003
bool test_limit()
Definition: sql_lex.cc:2510
bool has_windows() const
Definition: sql_lex.h:1365
bool has_ft_funcs() const
Definition: sql_lex.h:1346
This class represents a query expression (one query block or several query blocks combined with UNION...
Definition: sql_lex.h:627
bool is_executed() const
Check state of execution of the contained query expression.
Definition: sql_lex.h:1038
bool merge_heuristic(const LEX *lex) const
True if heuristics suggest to merge this query expression.
Definition: sql_lex.cc:3953
bool optimize(THD *thd, TABLE *materialize_destination, bool finalize_access_paths)
If and only if materialize_destination is non-nullptr, it means that the caller intends to materializ...
Definition: sql_union.cc:489
Query_block * non_simple_result_query_block() const
Return the query block iff !is_simple() holds.
Definition: sql_lex.h:659
void reset_executed()
Reset this query expression for repeated evaluation within same execution.
Definition: sql_lex.h:1017
void change_to_access_path_without_in2exists(THD *thd)
Definition: sql_union.cc:1354
unique_ptr_destroy_only< RowIterator > m_root_iterator
An iterator you can read from to get all records for this query.
Definition: sql_lex.h:745
bool m_contains_except_all
Definition: sql_lex.h:806
Query_expression(enum_parsing_context parsing_context)
Construct and initialize Query_expression object.
Definition: sql_lex.cc:2205
void set_explain_marker_from(THD *thd, const Query_expression *u)
Definition: sql_lex.cc:2530
void set_prepared()
Definition: sql_lex.h:1003
bool executed
Query expression has been executed.
Definition: sql_lex.h:732
bool walk(Item_processor processor, enum_walk walk, uchar *arg)
Definition: sql_union.cc:1346
void clear_root_access_path()
Definition: sql_lex.h:871
void set_explain_marker(THD *thd, enum_parsing_context m)
Definition: sql_lex.cc:2524
bool has_top_level_distinct() const
Definition: sql_lex.h:715
unique_ptr_destroy_only< RowIterator > release_root_iterator()
Definition: sql_lex.h:861
void exclude_tree()
Exclude subtree of current unit from tree of SELECTs.
Definition: sql_lex.cc:2383
Query_term_set_op * set_operation() const
Convenience method to avoid down casting, i.e.
Definition: sql_lex.h:655
void set_executed()
Definition: sql_lex.h:1011
Mem_root_array< MaterializePathParameters::Operand > m_operands
If there is an unfinished materialization (see optimize()), contains one element for each operand (qu...
Definition: sql_lex.h:753
enum_parsing_context explain_marker
Marker for subqueries in WHERE, HAVING, ORDER BY, GROUP BY and SELECT item lists.
Definition: sql_lex.h:728
Query_term * find_blocks_query_term(const Query_block *qb) const
Definition: sql_lex.h:666
enum_parsing_context get_explain_marker(const THD *thd) const
Definition: sql_lex.cc:2518
Query_expression * next_query_expression() const
Definition: sql_lex.h:855
Query_term * query_term() const
Getter for m_query_term, q.v.
Definition: sql_lex.h:648
Query_expression * next
Intrusive double-linked list of all query expressions immediately contained within the same query blo...
Definition: sql_lex.h:632
bool create_iterators(THD *thd)
Creates iterators for the access paths created by optimize().
Definition: sql_union.cc:645
Query_block * global_parameters() const
Return the query block holding the top level ORDER BY, LIMIT and OFFSET.
Definition: sql_lex.h:798
bool explain_query_term(THD *explain_thd, const THD *query_thd, Query_term *qt)
Definition: sql_union.cc:846
Query_block * slave
The first query block in this query expression.
Definition: sql_lex.h:641
bool change_query_result(THD *thd, Query_result_interceptor *result, Query_result_interceptor *old_result)
Change the query result object used to return the final result of the unit, replacing occurrences of ...
Definition: sql_union.cc:1286
size_t num_visible_fields() const
Definition: sql_union.cc:1320
bool is_simple() const
Definition: sql_lex.h:775
bool optimized
All query blocks in query expression are optimized.
Definition: sql_lex.h:731
Query_block * outer_query_block() const
Definition: sql_lex.h:849
void exclude_level()
Exclude this unit and immediately contained query_block objects.
Definition: sql_lex.cc:2321
Query_block * first_query_block() const
Definition: sql_lex.h:852
Query_block * master
The query block wherein this query expression is contained, NULL if the query block is the outer-most...
Definition: sql_lex.h:639
Query_block * last_distinct() const
Return the Query_block of the last query term in a n-ary set operation that is the right side of the ...
Definition: sql_lex.h:707
enum_clean_state cleaned
cleanliness state
Definition: sql_lex.h:785
bool prepare(THD *thd, Query_result *result, mem_root_deque< Item * > *insert_field_list, ulonglong added_options, ulonglong removed_options)
Prepares all query blocks of a query expression.
Definition: sql_union.cc:361
bool check_materialized_derived_query_blocks(THD *thd)
Sets up query blocks belonging to the query expression of a materialized derived table.
Definition: sql_derived.cc:960
Query_expression ** prev
Definition: sql_lex.h:633
void DebugPrintQueryPlan(THD *thd, const char *keyword) const
Definition: sql_union.cc:669
void set_query_term(Query_term *qt)
Setter for m_query_term, q.v.
Definition: sql_lex.h:650
ha_rows offset_limit_cnt
Definition: sql_lex.h:803
Query_term * m_query_term
Definition: sql_lex.h:644
AccessPath * m_root_access_path
Definition: sql_lex.h:746
Mem_root_array< MaterializePathParameters::Operand > release_query_blocks_to_materialize()
See optimize().
Definition: sql_lex.h:903
bool has_any_limit() const
Checks if this query expression has limit defined.
Definition: sql_lex.cc:3885
bool ExecuteIteratorQuery(THD *thd)
Definition: sql_union.cc:1021
void set_optimized()
Definition: sql_lex.h:1007
void cleanup(bool full)
Cleanup this query expression object after preparation or one round of execution.
Definition: sql_union.cc:1195
friend bool parse_view_definition(THD *thd, Table_ref *view_ref)
Parse a view definition.
Definition: sql_view.cc:1218
mem_root_deque< Item * > * get_unit_column_types()
Get column type information for this query expression.
Definition: sql_union.cc:1316
Query_block * create_post_processing_block(Query_term_set_op *term)
Create a block to be used for ORDERING and LIMIT/OFFSET processing of a query term,...
Definition: sql_lex.cc:739
bool replace_items(Item_transformer t, uchar *arg)
Replace all targeted items using transformer provided and info in arg.
Definition: item_subselect.cc:3099
RowIterator * root_iterator() const
Definition: sql_lex.h:860
bool is_leaf_block(Query_block *qb)
Definition: sql_lex.cc:761
bool force_create_iterators(THD *thd)
Ensures that there are iterators created for the access paths created by optimize(),...
Definition: sql_union.cc:637
Query_block * first_recursive
First query block (in this UNION) which references the CTE.
Definition: sql_lex.h:824
bool prepared
All query blocks in query expression are prepared.
Definition: sql_lex.h:730
void assert_not_fully_clean()
Asserts that none of {this unit and its children units} is fully cleaned up.
Definition: sql_union.cc:1251
void renumber_selects(LEX *lex)
Renumber query blocks of a query expression according to supplied LEX.
Definition: sql_lex.cc:3969
bool accept(Select_lex_visitor *visitor)
Definition: sql_lex.cc:3539
Query_result * query_result() const
Definition: sql_lex.h:858
ha_rows send_records
Definition: sql_lex.h:1073
enum_parsing_context place() const
If unit is a subquery, which forms an object of the upper level (an Item_subselect,...
Definition: sql_lex.cc:4810
void accumulate_used_tables(table_map map)
If unit is a subquery, which forms an object of the upper level (an Item_subselect,...
Definition: sql_lex.cc:4802
ha_rows select_limit_cnt
Definition: sql_lex.h:803
void create_access_paths(THD *thd)
Convert the executor structures to a set of access paths, storing the result in m_root_access_path.
Definition: sql_union.cc:762
void print(const THD *thd, String *str, enum_query_type query_type)
Definition: sql_lex.cc:2716
Table_ref * derived_table
If this query expression is underlying of a derived table, the derived table.
Definition: sql_lex.h:819
void restore_cmd_properties()
Loop over all query blocks and restore information needed for optimization, including binding data fo...
Definition: sql_lex.cc:3992
bool finalize(THD *thd)
For any non-finalized query block, finalize it so that we are allowed to create iterators.
Definition: sql_union.cc:625
Query_terms< order, visit_leaves > query_terms() const
Return iterator object over query terms rooted in m_query_term, using either post order visiting (def...
Definition: sql_lex.h:692
bool set_limit(THD *thd, Query_block *provider)
Set limit and offset for query expression object.
Definition: sql_lex.cc:3866
bool m_reject_multiple_rows
This query expression represents a scalar subquery and we need a run-time check that the cardinality ...
Definition: sql_lex.h:840
bool ClearForExecution()
Do everything that would be needed before running Init() on the root iterator.
Definition: sql_union.cc:986
Item_subselect * item
Points to subquery if this query expression is used in one, otherwise NULL.
Definition: sql_lex.h:809
enum_clean_state
Values for Query_expression::cleaned.
Definition: sql_lex.h:778
@ UC_PART_CLEAN
Unit were cleaned, except JOIN and JOIN_TABs were kept for possible EXPLAIN.
Definition: sql_lex.h:780
@ UC_CLEAN
Unit completely cleaned, all underlying JOINs were freed.
Definition: sql_lex.h:782
@ UC_DIRTY
Unit isn't cleaned.
Definition: sql_lex.h:779
void invalidate()
Invalidate by nulling out pointers to other Query expressions and Query blocks.
Definition: sql_lex.cc:2423
bool can_materialize_directly_into_result() const
Whether there is a chance that optimize() is capable of materializing directly into a result table if...
Definition: sql_union.cc:336
PT_with_clause * m_with_clause
The WITH clause which is the first part of this query expression.
Definition: sql_lex.h:814
bool explain(THD *explain_thd, const THD *query_thd)
Explain query starting from this unit.
Definition: sql_union.cc:918
bool is_mergeable() const
Return true if query expression can be merged into an outer query, based on technical constraints.
Definition: sql_lex.cc:3924
Query_result * m_query_result
Object to which the result for this query expression is sent.
Definition: sql_lex.h:737
bool is_prepared() const
Check state of preparation of the contained query expression.
Definition: sql_lex.h:1030
table_map m_lateral_deps
If 'this' is body of lateral derived table: map of tables in the same FROM clause as this derived tab...
Definition: sql_lex.h:834
bool is_optimized() const
Check state of optimization of the contained query expression.
Definition: sql_lex.h:1032
void set_query_result(Query_result *res)
Set new query result object for this query expression.
Definition: sql_lex.h:908
void include_down(LEX *lex, Query_block *outer)
Include a query expression below a query block.
Definition: sql_lex.cc:3898
void destroy()
Destroy contained objects, in particular temporary tables which may have their own mem_roots.
Definition: sql_union.cc:1226
mem_root_deque< Item * > * get_field_list()
Get field list for this query expression.
Definition: sql_union.cc:1334
bool execute(THD *thd)
Execute a query expression that may be a UNION and/or have an ordered result.
Definition: sql_union.cc:1164
bool clear_correlated_query_blocks()
Empties all correlated query blocks defined within the query expression; that is, correlated CTEs def...
Definition: sql_union.cc:972
bool save_cmd_properties(THD *thd)
Save prepared statement properties for a query expression and underlying query blocks.
Definition: sql_lex.cc:3981
AccessPath * root_access_path() const
Definition: sql_lex.h:864
uint8 uncacheable
result of this query can't be cached, bit field, can be : UNCACHEABLE_DEPENDENT UNCACHEABLE_RAND UNCA...
Definition: sql_lex.h:769
bool unfinished_materialization() const
See optimize().
Definition: sql_lex.h:899
void clear_execution()
Clear execution state, needed before new execution of prepared statement.
Definition: sql_lex.h:1022
bool is_recursive() const
Definition: sql_lex.h:1090
Definition: query_result.h:181
Definition: sql_union.h:40
Definition: query_result.h:58
Definition: sql_lex.h:2618
bool is_mixed_stmt_unsafe(bool in_multi_stmt_transaction_mode, bool binlog_direct, bool trx_cache_is_not_empty, uint tx_isolation)
Definition: sql_lex.h:3140
bool uses_stored_routines() const
true if the parsed tree contains references to stored procedures or functions, false otherwise
Definition: sql_lex.h:3187
void set_stmt_row_injection()
Flag the statement as a row injection.
Definition: sql_lex.h:2987
std::unique_ptr< malloc_unordered_map< std::string, Sroutine_hash_entry * > > sroutines
Definition: sql_lex.h:2649
@ START_SROUTINES_HASH_SIZE
Definition: sql_lex.h:2647
void set_stmt_unsafe(enum_binlog_stmt_unsafe unsafe_type)
Flag the current (top-level) statement as unsafe.
Definition: sql_lex.h:2936
static const char * stmt_accessed_table_string(enum_stmt_accessed_table accessed_table)
Definition: sql_lex.h:3040
enum_binlog_stmt_type
Enumeration listing special types of statements.
Definition: sql_lex.h:3203
@ BINLOG_STMT_TYPE_ROW_INJECTION
The statement is a row injection (i.e., either a BINLOG statement or a row event executed by the slav...
Definition: sql_lex.h:3208
@ BINLOG_STMT_TYPE_COUNT
The last element of this enumeration type.
Definition: sql_lex.h:3211
Table_ref ** query_tables_last
Definition: sql_lex.h:2632
bool is_stmt_unsafe_with_mixed_mode() const
Definition: sql_lex.h:3193
void reset_query_tables_list(bool init)
Definition: sql_lex.cc:3634
static const int BINLOG_STMT_UNSAFE_ALL_FLAGS
This has all flags from 0 (inclusive) to BINLOG_STMT_FLAG_COUNT (exclusive) set.
Definition: sql_lex.h:2909
~Query_tables_list()=default
enum_sql_command sql_command
SQL command for this statement.
Definition: sql_lex.h:2628
void set_stmt_unsafe_flags(uint32 flags)
Set the bits of binlog_stmt_flags determining the type of unsafeness of the current statement.
Definition: sql_lex.h:2951
uint32 get_stmt_unsafe_flags() const
Return a binary combination of all unsafe warnings for the statement.
Definition: sql_lex.h:2964
void set_stmt_unsafe_with_mixed_mode()
Definition: sql_lex.h:3192
Query_tables_list()=default
bool is_stmt_unsafe() const
Determine if this statement is marked as unsafe.
Definition: sql_lex.h:2923
bool is_stmt_unsafe(enum_binlog_stmt_unsafe unsafe)
Definition: sql_lex.h:2925
uint table_count
Number of tables which were open by open_tables() and to be locked by lock_tables().
Definition: sql_lex.h:2688
uint32 stmt_accessed_table_flag
Bit field that determines the type of tables that are about to be be accessed while executing a state...
Definition: sql_lex.h:3235
enum_stmt_accessed_table
Definition: sql_lex.h:2995
@ STMT_READS_TEMP_TRANS_TABLE
Definition: sql_lex.h:3010
@ STMT_WRITES_TEMP_TRANS_TABLE
Definition: sql_lex.h:3027
@ STMT_WRITES_TRANS_TABLE
Definition: sql_lex.h:3019
@ STMT_WRITES_TEMP_NON_TRANS_TABLE
Definition: sql_lex.h:3031
@ STMT_READS_TRANS_TABLE
Definition: sql_lex.h:3000
@ STMT_READS_TEMP_NON_TRANS_TABLE
Definition: sql_lex.h:3015
@ STMT_ACCESS_TABLE_COUNT
Definition: sql_lex.h:3036
@ STMT_READS_NON_TRANS_TABLE
Definition: sql_lex.h:3005
@ STMT_WRITES_NON_TRANS_TABLE
Definition: sql_lex.h:3023
bool stmt_unsafe_with_mixed_mode
This flag is set to true if statement is unsafe to be binlogged in STATEMENT format,...
Definition: sql_lex.h:3248
uint sroutines_list_own_elements
Definition: sql_lex.h:2661
void mark_as_requiring_prelocking(Table_ref **tables_own_last)
Definition: sql_lex.h:2714
bool is_stmt_row_injection() const
Determine if this statement is a row injection.
Definition: sql_lex.h:2975
enum_lock_tables_state lock_tables_state
Definition: sql_lex.h:2676
void set_query_tables_list(Query_tables_list *state)
Definition: sql_lex.h:2700
void set_using_match()
Definition: sql_lex.h:3189
bool stmt_accessed_table(enum_stmt_accessed_table accessed_table)
Checks if a type of table is about to be accessed while executing a statement.
Definition: sql_lex.h:3117
SQL_I_List< Sroutine_hash_entry > sroutines_list
Definition: sql_lex.h:2659
void destroy_query_tables_list()
Definition: sql_lex.cc:3678
Sroutine_hash_entry ** sroutines_list_own_last
Definition: sql_lex.h:2660
bool using_match
It will be set true if 'MATCH () AGAINST' is used in the statement.
Definition: sql_lex.h:3240
void set_stmt_accessed_table(enum_stmt_accessed_table accessed_table)
Sets the type of table that is about to be accessed while executing a statement.
Definition: sql_lex.h:3098
static const int binlog_stmt_unsafe_errcode[BINLOG_STMT_UNSAFE_COUNT]
Maps elements of enum_binlog_stmt_unsafe to error codes.
Definition: sql_lex.h:2915
enum_binlog_stmt_unsafe
All types of unsafe statements.
Definition: sql_lex.h:2744
@ BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION
Using some functions is unsafe (e.g., UUID).
Definition: sql_lex.h:2776
@ BINLOG_STMT_UNSAFE_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE
Mixing self-logging and non-self-logging engines in a statement is unsafe.
Definition: sql_lex.h:2789
@ BINLOG_STMT_UNSAFE_COUNT
Definition: sql_lex.h:2903
@ BINLOG_STMT_UNSAFE_XA
XA transactions and statements.
Definition: sql_lex.h:2876
@ BINLOG_STMT_UNSAFE_CREATE_SELECT_AUTOINC
CREATE TABLE...SELECT on a table with auto-increment column is unsafe because which rows are replaced...
Definition: sql_lex.h:2845
@ BINLOG_STMT_UNSAFE_DEFAULT_EXPRESSION_IN_SUBSTATEMENT
If a substatement inserts into or updates a table that has a column with an unsafe DEFAULT expression...
Definition: sql_lex.h:2883
@ BINLOG_STMT_UNSAFE_NOWAIT
Definition: sql_lex.h:2871
@ BINLOG_STMT_UNSAFE_FULLTEXT_PLUGIN
Using a plugin is unsafe.
Definition: sql_lex.h:2869
@ BINLOG_STMT_UNSAFE_INSERT_TWO_KEYS
INSERT... ON DUPLICATE KEY UPDATE on a table with more than one UNIQUE KEYS is unsafe.
Definition: sql_lex.h:2858
@ BINLOG_STMT_UNSAFE_AUTOINC_NOT_FIRST
INSERT into auto-inc field which is not the first part in composed primary key.
Definition: sql_lex.h:2864
@ BINLOG_STMT_UNSAFE_CREATE_SELECT_WITH_GIPK
Generating invisible primary key for a table created using CREATE TABLE... SELECT....
Definition: sql_lex.h:2900
@ BINLOG_STMT_UNSAFE_NONTRANS_AFTER_TRANS
Mixing transactional and non-transactional statements are unsafe if non-transactional reads or writes...
Definition: sql_lex.h:2783
@ BINLOG_STMT_UNSAFE_SYSTEM_VARIABLE
Using most system variables is unsafe, because slave may run with different options than master.
Definition: sql_lex.h:2772
@ BINLOG_STMT_UNSAFE_INSERT_IGNORE_SELECT
INSERT...IGNORE SELECT is unsafe because which rows are ignored depends on the order that rows are re...
Definition: sql_lex.h:2802
@ BINLOG_STMT_UNSAFE_MIXED_STATEMENT
Statements that read from both transactional and non-transactional tables and write to any of them ar...
Definition: sql_lex.h:2795
@ BINLOG_STMT_UNSAFE_AUTOINC_COLUMNS
Inserting into an autoincrement column in a stored routine is unsafe.
Definition: sql_lex.h:2763
@ BINLOG_STMT_UNSAFE_SKIP_LOCKED
Definition: sql_lex.h:2870
@ BINLOG_STMT_UNSAFE_CREATE_IGNORE_SELECT
CREATE TABLE... IGNORE... SELECT is unsafe because which rows are ignored depends on the order that r...
Definition: sql_lex.h:2830
@ BINLOG_STMT_UNSAFE_ACL_TABLE_READ_IN_DML_DDL
DML or DDL statement that reads a ACL table is unsafe, because the row are read without acquiring SE ...
Definition: sql_lex.h:2891
@ BINLOG_STMT_UNSAFE_INSERT_SELECT_UPDATE
INSERT...SELECT...UPDATE is unsafe because which rows are updated depends on the order that rows are ...
Definition: sql_lex.h:2809
@ BINLOG_STMT_UNSAFE_LIMIT
SELECT..LIMIT is unsafe because the set of rows returned cannot be predicted.
Definition: sql_lex.h:2749
@ BINLOG_STMT_UNSAFE_REPLACE_SELECT
INSERT...REPLACE SELECT is unsafe because which rows are replaced depends on the order that rows are ...
Definition: sql_lex.h:2823
@ BINLOG_STMT_UNSAFE_CREATE_REPLACE_SELECT
CREATE TABLE...REPLACE... SELECT is unsafe because which rows are replaced depends on the order that ...
Definition: sql_lex.h:2837
@ BINLOG_STMT_UNSAFE_UDF
Using a UDF (user-defined function) is unsafe.
Definition: sql_lex.h:2767
@ BINLOG_STMT_UNSAFE_UPDATE_IGNORE
UPDATE...IGNORE is unsafe because which rows are ignored depends on the order that rows are updated.
Definition: sql_lex.h:2852
@ BINLOG_STMT_UNSAFE_WRITE_AUTOINC_SELECT
Query that writes to a table with auto_inc column after selecting from other tables are unsafe as the...
Definition: sql_lex.h:2816
@ BINLOG_STMT_UNSAFE_SYSTEM_TABLE
Access to log tables is unsafe because slave and master probably log different things.
Definition: sql_lex.h:2754
Query_tables_list & operator=(Query_tables_list &&)=default
Table_ref * query_tables
Definition: sql_lex.h:2630
bool requires_prelocking()
Definition: sql_lex.h:2713
void chop_off_not_own_tables()
Definition: sql_lex.h:2721
Table_ref * first_not_own_table()
Definition: sql_lex.h:2718
Table_ref ** query_tables_own_last
Definition: sql_lex.h:2639
bool get_using_match()
Definition: sql_lex.h:3190
uint32 binlog_stmt_flags
Bit field indicating the type of statement.
Definition: sql_lex.h:3229
bool is_query_tables_locked() const
Definition: sql_lex.h:2677
enum_lock_tables_state
Locking state of tables in this particular statement.
Definition: sql_lex.h:2675
@ LTS_LOCKED
Definition: sql_lex.h:2675
@ LTS_NOT_LOCKED
Definition: sql_lex.h:2675
void add_to_query_tables(Table_ref *table)
Definition: sql_lex.h:2709
Common base class for n-ary set operations, including unary.
Definition: query_term.h:555
Query term tree structure.
Definition: query_term.h:216
virtual Query_block * query_block() const =0
The query_block which holds the ORDER BY and LIMIT information for this set operation.
Query_term_set_op * m_parent
Back pointer to the node whose child we are, or nullptr (root term).
Definition: query_term.h:527
virtual Query_term_type term_type() const =0
Get the node tree type.
Query_term_set_op * parent() const
Getter for m_parent, q.v.
Definition: query_term.h:423
Containing class for iterator over the query term tree.
Definition: query_term.h:807
A context for reading through a single table using a chosen access method: index read,...
Definition: row_iterator.h:82
Simple intrusive linked list.
Definition: sql_list.h:48
Base class for secondary engine execution context objects.
Definition: sql_lex.h:2556
virtual ~Secondary_engine_execution_context()=default
Destructs the secondary engine execution context object.
Abstract base class for traversing the Query_block tree.
Definition: select_lex_visitor.h:40
Context object used by semijoin equality decorrelation code.
Definition: sql_resolver.cc:2386
This class represent server options as set by the parser.
Definition: sql_servers.h:71
Representation of an SQL command.
Definition: sql_cmd.h:83
Structure that represents element in the set of stored routines used by statement or routine.
Definition: sp.h:225
Using this class is fraught with peril, and you need to be very careful when doing so.
Definition: sql_string.h:167
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:36
LEX * lex
Definition: sql_class.h:1001
Class representing a table function.
Definition: table_function.h:53
Definition: sql_lex.h:297
Table_ident(Query_expression *s)
This constructor is used only for the case when we create a derived table.
Definition: sql_lex.h:318
void change_db(const char *db_name)
Definition: sql_lex.h:337
Query_expression * sel
Definition: sql_lex.h:301
Table_ident(Protocol *protocol, const LEX_CSTRING &db_arg, const LEX_CSTRING &table_arg, bool force)
Definition: sql_lex.cc:156
Table_ident(const LEX_CSTRING &table_arg)
Definition: sql_lex.h:308
bool is_table_function() const
Definition: sql_lex.h:334
bool is_derived_table() const
Definition: sql_lex.h:336
Table_ident(LEX_CSTRING &table_arg, Table_function *table_func_arg)
Definition: sql_lex.h:328
LEX_CSTRING table
Definition: sql_lex.h:300
Table_function * table_function
Definition: sql_lex.h:302
LEX_CSTRING db
Definition: sql_lex.h:299
Table_ident(const LEX_CSTRING &db_arg, const LEX_CSTRING &table_arg)
Definition: sql_lex.h:306
Table_ref * first_leaf_table()
Return first leaf table of a base table or a view/derived table.
Definition: table.h:3328
Table_ref * next_leaf
Definition: table.h:3812
Used for storing information associated with generated column, default values generated from expressi...
Definition: field.h:485
Definition: visible_fields.h:98
Represents the (explicit) window of a SQL 2003 section 7.11 <window clause>, or the implicit (inlined...
Definition: window.h:110
The internal state of the syntax parser.
Definition: sql_lexer_yacc_state.h:246
Yacc_state()
Definition: sql_lexer_yacc_state.h:248
void reset()
Definition: sql_lexer_yacc_state.h:252
thr_lock_type m_lock_type
Type of lock to be used for tables being added to the statement's table list in table_factor,...
Definition: sql_lexer_yacc_state.h:321
uchar * yacc_yyvs
Bison internal semantic value stack, yyvs, when dynamically allocated using my_yyoverflow().
Definition: sql_lexer_yacc_state.h:296
enum_mdl_type m_mdl_type
The type of requested metadata lock for tables added to the statement table list.
Definition: sql_lexer_yacc_state.h:327
~Yacc_state()
Definition: sql_lexer_yacc_state.h:269
uchar * yacc_yyss
Bison internal state stack, yyss, when dynamically allocated using my_yyoverflow().
Definition: sql_lexer_yacc_state.h:290
void reset_before_substatement()
Reset part of the state which needs resetting before parsing substatement.
Definition: sql_lexer_yacc_state.h:281
uchar * yacc_yyls
Bison internal location value stack, yyls, when dynamically allocated using my_yyoverflow().
Definition: sql_lexer_yacc_state.h:302
The class hold dynamic table statistics for a table.
Definition: table_stats.h:103
void invalidate_cache(void)
Definition: table_stats.h:216
The class hold dynamic table statistics for a table.
Definition: tablespace_stats.h:64
void invalidate_cache(void)
Definition: tablespace_stats.h:111
A (partial) implementation of std::deque allocating its blocks on a MEM_ROOT.
Definition: mem_root_deque.h:111
Definition: partition_info.h:209
sp_head represents one instance of a stored program.
Definition: sp_head.h:383
Definition: sp_head.h:123
The class represents parse-time context, which keeps track of declared variables/parameters,...
Definition: sp_pcontext.h:252
static MEM_ROOT mem_root
Definition: client_plugin.cc:114
enum_query_type
Query type constants (usable as bitmap flags).
Definition: enum_query_type.h:31
Acl_type
Definition: sql_lex.h:264
uint to_uint(enum_sp_type val)
Definition: sql_lex.h:249
const char * index_hint_type_name[]
Definition: sql_lex.cc:136
enum_sp_data_access
Definition: sql_lex.h:208
void print_derived_column_names(const THD *thd, String *str, const Create_col_name_list *column_names)
Prints into 'str' a comma-separated list of column names, enclosed in parenthesis.
Definition: sql_lex.cc:2190
bool db_is_default_db(const char *db, size_t db_len, const THD *thd)
Definition: sql_lex.cc:2920
bool check_select_for_locking_clause(THD *)
sub_select_type
Definition: sql_lex.h:465
#define TYPE_ENUM_PROCEDURE
Definition: sql_lex.h:260
execute_only_in_secondary_reasons
Definition: sql_lex.h:3777
enum_alter_user_attribute
Definition: sql_lex.h:283
void binlog_unsafe_map_init()
Definition: sql_lex.cc:5139
Bounds_checked_array< Item * > Ref_item_array
Definition: sql_lex.h:1128
longlong to_longlong(enum_sp_type val)
Definition: sql_lex.h:245
enum_view_create_mode
Definition: sql_lex.h:277
bool walk_join_list(mem_root_deque< Table_ref * > &list, std::function< bool(Table_ref *)> action)
Definition: sql_resolver.cc:2681
execute_only_in_hypergraph_reasons
Definition: sql_lex.h:3787
bool is_union() const
Definition: sql_lex.h:2504
uint binlog_unsafe_map[256]
Definition: sql_lex.cc:5044
void lex_end(LEX *lex)
Call this function after preparation and execution of a query.
Definition: sql_lex.cc:532
enum_sp_type to_sp_type(longlong val)
Definition: sql_lex.h:237
enum_explain_type
Query_block type enum.
Definition: sql_lex.h:1134
#define TYPE_ENUM_FUNCTION
Definition: sql_lex.h:259
const LEX_STRING null_lex_str
LEX_STRING constant for null-string to be used in parser and other places.
Definition: sql_lex.cc:92
enum_sp_type
enum_sp_type defines type codes of stored programs.
Definition: sql_lex.h:225
void lex_free(void)
Definition: sql_lex.cc:165
bool is_set_operation() const
Definition: sql_lex.h:2511
constexpr const int MAX_SELECT_NESTING
Definition: sql_lex.h:140
void trim_whitespace(const CHARSET_INFO *cs, LEX_STRING *str)
Definition: sql_lex.cc:2159
bool is_lex_native_function(const LEX_STRING *name)
Check if name is a sql function.
Definition: sql_lex.cc:962
uchar index_clause_map
Definition: sql_lex.h:476
int my_sql_parser_lex(MY_SQL_PARSER_STYPE *, POS *, class THD *)
yylex() function implementation for the main parser
Definition: sql_lex.cc:1363
enum_sp_suid_behaviour
Definition: sql_lex.h:202
const size_t INITIAL_LEX_PLUGIN_LIST_SIZE
Definition: sql_lex.h:139
bool is_keyword(const char *name, size_t len)
Definition: sql_lex.cc:947
const LEX_CSTRING sp_data_access_name[]
Definition: sql_lex.h:270
enum_keep_diagnostics
Definition: sql_lex.h:194
bool lex_start(THD *thd)
Call lex_start() before every query that is to be prepared and executed.
Definition: sql_lex.cc:508
struct struct_replica_connection LEX_REPLICA_CONNECTION
@ SP_READS_SQL_DATA
Definition: sql_lex.h:212
@ SP_MODIFIES_SQL_DATA
Definition: sql_lex.h:213
@ SP_NO_SQL
Definition: sql_lex.h:211
@ SP_DEFAULT_ACCESS
Definition: sql_lex.h:209
@ SP_CONTAINS_SQL
Definition: sql_lex.h:210
@ UNSPECIFIED_TYPE
Definition: sql_lex.h:466
@ DERIVED_TABLE_TYPE
Definition: sql_lex.h:468
@ GLOBAL_OPTIONS_TYPE
Definition: sql_lex.h:467
@ TABLESAMPLE
Definition: sql_lex.h:3780
@ SUPPORTED_IN_PRIMARY
Definition: sql_lex.h:3778
@ CUBE
Definition: sql_lex.h:3779
@ ALTER_USER_COMMENT_NOT_USED
@ QUALIFY_CLAUSE
Definition: sql_lex.h:3789
@ SUPPORTED_IN_BOTH_OPTIMIZERS
Definition: sql_lex.h:3788
@ EXPLAIN_INTERSECT_RESULT
@ EXPLAIN_total
fake type, total number of all valid types
@ NO_COMMENT
Not parsing comments.
Definition: sql_lex.h:3271
@ DISCARD_COMMENT
Parsing comments that need to be discarded.
Definition: sql_lex.h:3287
@ PRESERVE_COMMENT
Parsing comments that need to be preserved.
Definition: sql_lex.h:3278
@ SP_IS_SUID
Definition: sql_lex.h:205
@ SP_IS_DEFAULT_SUID
Definition: sql_lex.h:203
@ SP_IS_NOT_SUID
Definition: sql_lex.h:204
@ DA_KEEP_UNSPECIFIED
keep semantics is unspecified
Definition: sql_lex.h:199
@ DA_KEEP_DIAGNOSTICS
keep the diagnostics area
Definition: sql_lex.h:196
@ DA_KEEP_PARSE_ERROR
keep diagnostics area after parse error
Definition: sql_lex.h:198
@ DA_KEEP_COUNTS
keep @warning_count / @error_count
Definition: sql_lex.h:197
@ DA_KEEP_NOTHING
keep nothing
Definition: sql_lex.h:195
void my_error(int nr, myf MyFlags,...)
Fill in and print a previously registered error message.
Definition: my_error.cc:216
bool change_query_result(THD *thd, Query_result_interceptor *new_result, Query_result_interceptor *old_result)
Change the Query_result object of the query block.
Definition: sql_select.cc:4253
bool optimize(THD *thd, bool finalize_access_paths)
Optimize a query block and all inner query expressions.
Definition: sql_select.cc:2094
bool check_column_privileges(THD *thd)
Check privileges for all columns referenced from query block.
Definition: sql_select.cc:2136
bool check_privileges_for_subqueries(THD *thd)
Check privileges for column references in subqueries of a query block.
Definition: sql_select.cc:2241
bool transform_scalar_subqueries_to_join_with_derived(THD *thd)
Transform eligible scalar subqueries in the SELECT list, WHERE condition, HAVING condition or JOIN co...
Definition: sql_resolver.cc:8176
Item * single_visible_field() const
Definition: sql_resolver.cc:4868
bool remove_redundant_subquery_clauses(THD *thd)
For a table subquery predicate (IN/ANY/ALL/EXISTS/etc): since it does not support LIMIT the following...
Definition: sql_resolver.cc:4003
void delete_unused_merged_columns(mem_root_deque< Table_ref * > *tables)
Delete unused columns from merged tables.
Definition: sql_resolver.cc:5237
bool check_only_full_group_by(THD *thd)
Runs checks mandated by ONLY_FULL_GROUP_BY.
Definition: sql_resolver.cc:4517
void clear_sj_expressions(NESTED_JOIN *nested_join)
Remove semijoin condition for this query block.
Definition: sql_resolver.cc:2243
bool apply_local_transforms(THD *thd, bool prune)
Does permanent transformations which are local to a query block (which do not merge it to another blo...
Definition: sql_resolver.cc:818
void replace_referenced_item(Item *const old_item, Item *const new_item)
Replace item in select list and preserve its reference count.
Definition: sql_resolver.cc:7623
bool record_join_nest_info(mem_root_deque< Table_ref * > *tables)
Record join nest info in the select block.
Definition: sql_resolver.cc:2020
bool replace_first_item_with_min_max(THD *thd, int item_no, bool use_min)
Replace the first visible item in the select list with a wrapping MIN or MAX aggregate function.
Definition: sql_resolver.cc:7132
void fix_after_pullout(Query_block *parent_query_block, Query_block *removed_query_block)
Definition: sql_resolver.cc:2202
bool transform_grouped_to_derived(THD *thd, bool *break_off)
Minion of transform_scalar_subqueries_to_join_with_derived.
Definition: sql_resolver.cc:6065
bool decorrelate_condition(Semijoin_decorrelation &sj_decor, Table_ref *join_nest)
Decorrelate the WHERE clause or a join condition of a subquery used in an IN or EXISTS predicate.
Definition: sql_resolver.cc:2567
bool setup_conds(THD *thd)
Resolve WHERE condition and join conditions.
Definition: sql_resolver.cc:1487
bool add_ftfunc_list(List< Item_func_match > *ftfuncs)
Add full-text function elements from a list into this query block.
Definition: sql_resolver.cc:3940
bool setup_join_cond(THD *thd, mem_root_deque< Table_ref * > *tables, bool in_update)
Resolve join conditions for a join nest.
Definition: sql_resolver.cc:1548
void remove_hidden_items()
Remove hidden items from select list.
Definition: sql_resolver.cc:5281
void remap_tables(THD *thd)
Re-map table numbers for all tables in a query block.
Definition: sql_resolver.cc:1323
void repoint_contexts_of_join_nests(mem_root_deque< Table_ref * > join_list)
Go through a list of tables and join nests, recursively, and repoint its query_block pointer.
Definition: sql_resolver.cc:3955
void propagate_unique_test_exclusion()
Propagate exclusion from table uniqueness test into subqueries.
Definition: sql_resolver.cc:3922
void mark_item_as_maybe_null_if_non_primitive_grouped(Item *item) const
Marks occurrences of group by fields in a function's arguments as nullable, so that we do not optimiz...
Definition: sql_resolver.cc:4854
bool convert_subquery_to_semijoin(THD *thd, Item_exists_subselect *subq_pred)
Convert a subquery predicate of this query block into a Table_ref semi-join nest.
Definition: sql_resolver.cc:2861
void fix_after_pullout(Query_block *parent_query_block, Query_block *removed_query_block)
Fix used tables information for a subquery after query transformations.
Definition: sql_resolver.cc:2188
bool lift_fulltext_from_having_to_select_list(THD *thd)
Copies all non-aggregated calls to the full-text search MATCH function from the HAVING clause to the ...
Definition: sql_resolver.cc:8450
bool setup_wild(THD *thd)
Expand all '*' in list of expressions with the matching column references.
Definition: sql_resolver.cc:1430
bool add_inner_func_calls_to_select_list(THD *thd, Lifted_expressions_map *lifted_exprs)
Definition: sql_resolver.cc:7042
bool remove_aggregates(THD *thd, Query_block *select)
A minion of transform_grouped_to_derived.
Definition: sql_resolver.cc:5870
bool prepare_values(THD *thd)
Prepare a table value constructor query block for optimization.
Definition: sql_resolver.cc:736
bool resolve_placeholder_tables(THD *thd, bool apply_semijoin)
Resolve derived table, view, table function information for a query block.
Definition: sql_resolver.cc:1356
bool simplify_joins(THD *thd, mem_root_deque< Table_ref * > *join_list, bool top, bool in_sj, Item **new_conds, uint *changelog=nullptr)
Simplify joins replacing outer joins by inner joins whenever it's possible.
Definition: sql_resolver.cc:1737
void update_used_tables()
Update used tables information for all local expressions.
Definition: sql_resolver.cc:923
bool resolve_limits(THD *thd)
Resolve OFFSET and LIMIT clauses.
Definition: sql_resolver.cc:961
int group_list_size() const
Definition: sql_resolver.cc:4667
bool empty_order_list(Query_block *sl)
Empty the ORDER list.
Definition: sql_resolver.cc:4100
bool prepare(THD *thd, mem_root_deque< Item * > *insert_field_list)
Prepare query block for optimization.
Definition: sql_resolver.cc:181
void reset_nj_counters(mem_root_deque< Table_ref * > *join_list=nullptr)
Set NESTED_JOIN::counter=0 in all nested joins in passed list.
Definition: sql_resolver.cc:1604
bool check_view_privileges(THD *thd, Access_bitmask want_privilege_first, Access_bitmask want_privilege_next)
Check privileges for views that are merged into query block.
Definition: sql_resolver.cc:1200
bool add_inner_fields_to_select_list(THD *thd, Lifted_expressions_map *lifted_exprs, Item *selected_field_or_ref, const uint first_non_hidden)
Minion of decorrelate_derived_scalar_subquery_pre.
Definition: sql_resolver.cc:6982
bool resolve_rollup_wfs(THD *thd)
Replace group by field references inside window functions with references in the presence of ROLLUP.
Definition: sql_resolver.cc:5117
bool field_list_is_empty() const
Definition: sql_resolver.cc:4884
Item ** add_hidden_item(Item *item)
Add item to the hidden part of select list.
Definition: sql_resolver.cc:5272
void merge_contexts(Query_block *inner)
Merge name resolution context objects of a subquery into its parent.
Definition: sql_resolver.cc:3972
bool add_inner_exprs_to_group_by(THD *thd, List_iterator< Item > &inner_exprs, Item *selected_item, bool *selected_expr_added_to_group_by, mem_root_deque< Item * > *exprs_added_to_group_by)
Run through the inner expressions and add them to the block's GROUP BY if not already present.
Definition: sql_resolver.cc:6927
bool transform_table_subquery_to_join_with_derived(THD *thd, Item_exists_subselect *subq_pred)
Replace a table subquery ([NOT] {IN, EXISTS}) with a join to a derived table.
Definition: sql_resolver.cc:5422
bool flatten_subqueries(THD *thd)
Convert semi-join subquery predicates into semi-join join nests.
Definition: sql_resolver.cc:3687
bool replace_subquery_in_expr(THD *thd, Item::Css_info *subquery, Table_ref *tr, Item **expr)
A minion of transform_scalar_subqueries_to_join_with_derived.
Definition: sql_resolver.cc:6563
size_t num_visible_fields() const
Definition: sql_resolver.cc:4880
ORDER * find_in_group_list(Item *item, int *rollup_level) const
Finds a group expression matching the given item, or nullptr if none.
Definition: sql_resolver.cc:4631
bool resolve_table_value_constructor_values(THD *thd)
Resolve the rows of a table value constructor and aggregate the type of each column across rows.
Definition: sql_resolver.cc:5297
bool merge_derived(THD *thd, Table_ref *derived_table)
Merge derived table into query block.
Definition: sql_resolver.cc:3324
bool setup_tables(THD *thd, Table_ref *tables, bool select_insert)
Resolve and prepare information about tables for one query block.
Definition: sql_resolver.cc:1237
bool supported_correlated_scalar_subquery(THD *thd, Item::Css_info *subquery, Item **lifted_where)
Called when the scalar subquery is correlated.
Definition: sql_resolver.cc:7910
bool replace_item_in_expression(Item **expr, bool was_hidden, Item::Item_replacement *info, Item_transformer transformer)
Minion of transform_grouped_to_derived.
Definition: sql_resolver.cc:5987
bool setup_order_final(THD *thd)
Do final setup of ORDER BY clause, after the query block is fully resolved.
Definition: sql_resolver.cc:4551
bool setup_counts_over_partitions(THD *thd, Table_ref *derived, Lifted_expressions_map *lifted_expressions, mem_root_deque< Item * > &exprs_added_to_group_by, uint hidden_fields)
Add all COUNT(0) to SELECT list of the derived table to be used for cardinality checking of the trans...
Definition: sql_resolver.cc:6830
bool nest_derived(THD *thd, Item *join_cond, mem_root_deque< Table_ref * > *join_list, Table_ref *new_derived_table)
Push the generated derived table to the correct location inside a join nest.
Definition: sql_resolver.cc:6716
bool decorrelate_derived_scalar_subquery_post(THD *thd, Table_ref *derived, Lifted_expressions_map *lifted_exprs, bool added_card_check, size_t added_window_card_checks)
See explanation in companion method decorrelate_derived_scalar_subquery_pre.
Definition: sql_resolver.cc:7548
bool allocate_grouping_sets(THD *thd)
Initializes the grouping set if the query block includes GROUP BY modifiers.
Definition: sql_resolver.cc:2612
bool setup_group(THD *thd)
Resolve and set up the GROUP BY list.
Definition: sql_resolver.cc:4598
Table_ref * synthesize_derived(THD *thd, Query_expression *unit, Item *join_cond, bool left_outer, bool use_inner_join)
Create a new Table_ref object for this query block, for either: 1) a derived table which will replace...
Definition: sql_resolver.cc:5774
bool decorrelate_derived_scalar_subquery_pre(THD *thd, Table_ref *derived, Item::Css_info *subquery, Item *lifted_where, Lifted_expressions_map *lifted_where_expressions, bool *added_card_check, size_t *added_window_card_checks)
We have a correlated scalar subquery, so we must do several things:
Definition: sql_resolver.cc:7222
bool push_conditions_to_derived_tables(THD *thd)
Pushes parts of the WHERE condition of this query block to materialized derived tables.
Definition: sql_resolver.cc:687
bool resolve_rollup(THD *thd)
Resolve items in SELECT list and ORDER BY list for rollup processing.
Definition: sql_resolver.cc:5022
bool transform_subquery_to_derived(THD *thd, Table_ref **out_tl, Query_expression *subs_query_expression, Item_subselect *subq, bool use_inner_join, bool reject_multiple_rows, Item::Css_info *subquery, Item *lifted_where_cond)
Converts a subquery to a derived table and inserts it into the FROM clause of the owning query block.
Definition: sql_resolver.cc:7655
bool build_sj_cond(THD *thd, NESTED_JOIN *nested_join, Query_block *subq_query_block, table_map outer_tables_map, Item **sj_cond, bool *simple_const)
Build semijoin condition for th query block.
Definition: sql_resolver.cc:2270
Item * resolve_rollup_item(THD *thd, Item *item)
Resolve an item (and its tree) for rollup processing by replacing items matching grouped expressions ...
Definition: sql_resolver.cc:4930
bool populate_grouping_sets(THD *thd)
Populates the grouping sets if the query block includes non-primitive grouping.
Definition: sql_resolver.cc:2660
bool is_row_count_valid_for_semi_join()
Check if the offset and limit are valid for a semijoin.
Definition: sql_resolver.cc:1408
bool add_joined_table(Table_ref *table)
Add a table to the current join list.
Definition: sql_parse.cc:6283
void set_lock_for_tables(thr_lock_type lock_type)
Set lock for all tables in current query block.
Definition: sql_parse.cc:6314
bool find_common_table_expr(THD *thd, Table_ident *table_id, Table_ref *tl, Parse_context *pc, bool *found)
Tries to match an identifier to the CTEs in scope; if matched, it modifies *table_name,...
Definition: sql_parse.cc:5697
Table_ref * end_nested_join()
End a nested join table list.
Definition: sql_parse.cc:6198
bool init_nested_join(THD *thd)
Initialize a new table list for a nested join.
Definition: sql_parse.cc:6171
Table_ref * nest_join(THD *thd, Query_block *select, Table_ref *embedding, mem_root_deque< Table_ref * > *jlist, size_t table_cnt, const char *legend)
Plumbing for nest_last_join, q.v.
Definition: sql_parse.cc:6225
Table_ref * add_table_to_list(THD *thd, Table_ident *table, const char *alias, ulong table_options, thr_lock_type flags=TL_UNLOCK, enum_mdl_type mdl_type=MDL_SHARED_READ, List< Index_hint > *hints=nullptr, List< String > *partition_names=nullptr, LEX_STRING *option=nullptr, Parse_context *pc=nullptr)
Add a table to list of used tables.
Definition: sql_parse.cc:5908
void set_lock_for_table(const Lock_descriptor &descriptor, Table_ref *table)
Definition: sql_parse.cc:6291
Table_ref * nest_last_join(THD *thd, size_t table_cnt=2)
Nest last join operations.
Definition: sql_parse.cc:6265
struct PSI_digest_locker PSI_digest_locker
Definition: psi_statement_bits.h:112
static int flags[50]
Definition: hp_test1.cc:40
static void start(mysql_harness::PluginFuncEnv *env)
Definition: http_auth_backend_plugin.cc:180
Item *(Item::* Item_transformer)(uchar *arg)
Type for transformers used by Item::transform and Item::compile.
Definition: item.h:721
Subquery_strategy
Classes that represent predicates over table subqueries: [NOT] EXISTS, [NOT] IN, ANY/SOME and ALL.
Definition: item_subselect.h:426
constexpr const LEX_CSTRING EMPTY_CSTR
Definition: lex_string.h:48
constexpr const LEX_CSTRING NULL_CSTR
Definition: lex_string.h:47
A better implementation of the UNIX ctype(3) library.
Various macros useful for communicating with memory debuggers, such as Valgrind.
void TRASH(void *ptr, size_t length)
Put bad content in memory to be sure it will segfault if dereferenced.
Definition: memory_debugging.h:71
This file follows Google coding style, except for the name MEM_ROOT (which is kept for historical rea...
std::unique_ptr< T, Destroy_only< T > > unique_ptr_destroy_only
std::unique_ptr, but only destroying.
Definition: my_alloc.h:480
This file includes constants used by all storage engines.
my_off_t ha_rows
Definition: my_base.h:1141
Header for compiler-dependent features.
#define MY_ASSERT_UNREACHABLE()
Definition: my_compiler.h:78
#define DBUG_EXECUTE_IF(keyword, a1)
Definition: my_dbug.h:171
#define DBUG_PRINT(keyword, arglist)
Definition: my_dbug.h:181
#define DBUG_TRACE
Definition: my_dbug.h:146
Some integer typedefs for easier portability.
unsigned long long int ulonglong
Definition: my_inttypes.h:56
uint8_t uint8
Definition: my_inttypes.h:63
unsigned char uchar
Definition: my_inttypes.h:52
long long int longlong
Definition: my_inttypes.h:55
#define MYF(v)
Definition: my_inttypes.h:97
uint32_t uint32
Definition: my_inttypes.h:67
void my_free(void *ptr)
Frees the memory pointed by the ptr.
Definition: my_memory.cc:81
enum_sql_command
Definition: my_sqlcommand.h:46
@ SQLCOM_UPDATE
Definition: my_sqlcommand.h:51
@ SQLCOM_LOAD
Definition: my_sqlcommand.h:77
@ SQLCOM_INSERT
Definition: my_sqlcommand.h:52
@ SQLCOM_INSERT_SELECT
Definition: my_sqlcommand.h:53
@ SQLCOM_REPLACE
Definition: my_sqlcommand.h:87
@ SQLCOM_UPDATE_MULTI
Definition: my_sqlcommand.h:122
@ SQLCOM_REPLACE_SELECT
Definition: my_sqlcommand.h:88
Common header for many mysys elements.
uint64_t nesting_map
Definition: my_table_map.h:31
uint64_t table_map
Definition: my_table_map.h:30
uint32 my_thread_id
Definition: my_thread_local.h:34
static bool backup
Definition: myisampack.cc:198
static bool column_names
Definition: mysql.cc:171
static const CHARSET_INFO * charset_info
Definition: mysql.cc:245
Common definition between mysql server & client.
char * octet2hex(char *to, const char *str, unsigned int len)
static char * where
Definition: mysqldump.cc:152
const char * collation
Definition: audit_api_message_emit.cc:184
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1105
static PFS_engine_table_share_proxy table
Definition: pfs.cc:61
Definition: buf0block_hint.cc:30
Definition: commit_order_queue.h:34
bool length(const dd::Spatial_reference_system *srs, const Geometry *g1, double *length, bool *null) noexcept
Computes the length of linestrings and multilinestrings.
Definition: length.cc:76
Container::const_iterator find(const Container &c, Value &&value)
Definition: generic.h:39
size_t size(const char *const c)
Definition: base64.h:46
Definition: options.cc:57
const char * db_name
Definition: rules_table_service.cc:55
std::basic_ostringstream< char, std::char_traits< char >, ut::allocator< char > > ostringstream
Specialization of basic_ostringstream which uses ut::allocator.
Definition: ut0new.h:2872
std::map< Key, Value, Compare, ut::allocator< std::pair< const Key, Value > > > map
Specialization of map which uses ut_allocator.
Definition: ut0new.h:2894
std::list< T, ut::allocator< T > > list
Specialization of list which uses ut_allocator.
Definition: ut0new.h:2880
olap_type
Definition: olap.h:31
@ UNSPECIFIED_OLAP_TYPE
Definition: olap.h:31
enum_parsing_context
Names for different query parse tree parts.
Definition: parse_tree_node_base.h:61
@ CTX_NONE
Empty value.
Definition: parse_tree_node_base.h:62
#define UNCACHEABLE_DEPENDENT
Definition: parse_tree_node_base.h:50
enum_yes_no_unknown
Definition: parser_yystype.h:166
struct result result
Definition: result.h:34
Performance schema instrumentation interface.
#define SELECT_DISTINCT
Definition: query_options.h:52
#define OPTION_NO_CONST_TABLES
Definition: query_options.h:78
Query_term_type
This class hierarchy is used to represent SQL structures between <query expression> and <query specif...
Definition: query_term.h:96
@ QT_UNARY
Represents a query primary with parentesized query expression body with order by clause and/or limit/...
Definition: query_term.h:103
@ QT_EXCEPT
Definition: query_term.h:107
@ QT_UNION
Definition: query_term.h:108
@ QT_INTERSECT
Represents the three set operations.
Definition: query_term.h:106
@ QT_QUERY_BLOCK
Represents Query specification, table value constructor and explicit table.
Definition: query_term.h:99
Visit_leaves
Query term iterator template argument type: whether to visit leaf nodes.
Definition: query_term.h:114
@ VL_VISIT_LEAVES
Definition: query_term.h:114
Visit_order
Query term iterator template argument type: how to visit nodes in tree.
Definition: query_term.h:112
@ QTC_POST_ORDER
Definition: query_term.h:112
required string type
Definition: replication_group_member_actions.proto:34
repeated Action action
Definition: replication_group_member_actions.proto:43
"public" interface to sys_var - server configuration variables.
enum_var_type
Definition: set_var.h:92
enum_tx_isolation
Definition: handler.h:3194
@ ISO_REPEATABLE_READ
Definition: handler.h:3197
index_hint_type
Definition: table.h:1412
role_enum
Definition: sql_admin.h:255
my_lex_states
Definition: sql_chars.h:37
File containing constants that can be used throughout the server.
constexpr const uint8_t CONTEXT_ANALYSIS_ONLY_PREPARE
Don't evaluate this subquery during statement prepare even if it's a constant one.
Definition: sql_const.h:174
enum_walk
Enumeration for {Item,Query_block[_UNIT],Table_function}walk.
Definition: sql_const.h:289
bool(Item::*)(unsigned char *) Item_processor
Processor type for {Item,Query_block[_UNIT],Table_function}walk.
Definition: sql_const.h:307
constexpr const uint8_t CONTEXT_ANALYSIS_ONLY_VIEW
Special Query_block::prepare mode: changing of query is prohibited.
Definition: sql_const.h:182
enum_condition_context
Enumeration for Query_block::condition_context.
Definition: sql_const.h:313
Contains classes representing SQL-data change statements.
enum_duplicates
Definition: sql_data_change.h:48
bool walk_item(Item *item, Select_lex_visitor *visitor)
Definition: sql_lex.cc:3525
#define IL_GTE_REPEATABLE
Definition: sql_lex.h:3089
void get_select_options_str(ulonglong options, std::string *str)
Definition: sql_lex.cc:5262
#define TRX_CACHE_EMPTY
Definition: sql_lex.h:3083
#define IL_LT_REPEATABLE
Definition: sql_lex.h:3087
void assert_consistent_hidden_flags(const mem_root_deque< Item * > &fields, Item *item, bool hidden)
In debug mode, verify that we're not adding an item twice to the fields list with inconsistent hidden...
Definition: sql_lex.h:5035
#define BINLOG_DIRECT_OFF
Definition: sql_lex.h:3080
#define BINLOG_DIRECT_ON
Definition: sql_lex.h:3077
bool is_invalid_string(const LEX_CSTRING &string_val, const CHARSET_INFO *charset_info)
(End of group GROUP_PARSER)
Definition: sql_lex.h:4982
bool accept_for_order(SQL_I_List< ORDER > orders, Select_lex_visitor *visitor)
Definition: sql_lex.cc:3531
#define TRX_CACHE_NOT_EMPTY
Definition: sql_lex.h:3085
bool accept_for_join(mem_root_deque< Table_ref * > *tables, Select_lex_visitor *visitor)
Definition: sql_lex.cc:3553
bool accept_table(Table_ref *t, Select_lex_visitor *visitor)
Definition: sql_lex.cc:3561
enum_mdl_type
Type of metadata lock request.
Definition: sql_lexer_yacc_state.h:106
@ MDL_SHARED_READ
Definition: sql_lexer_yacc_state.h:169
static const Query_options options
Definition: sql_show_processlist.cc:69
Our own string classes, used pervasively throughout the executor.
size_t convert_to_printable(char *to, size_t to_len, const char *from, size_t from_len, const CHARSET_INFO *from_cs, size_t nbytes=0)
Convert string to printable ASCII string.
Definition: sql_string.cc:1025
bool validate_string(const CHARSET_INFO *cs, const char *str, size_t length, size_t *valid_length, bool *length_error)
Check if an input byte sequence is a valid character string of a given charset.
Definition: sql_string.cc:1132
case opt name
Definition: sslopt-case.h:29
#define STRING_WITH_LEN(X)
Definition: string_with_len.h:29
Access paths are a query planning structure that correspond 1:1 to iterators, in that an access path ...
Definition: access_path.h:227
Definition: m_ctype.h:421
const char * csname
Definition: m_ctype.h:426
Definition: handler.h:3803
Struct to hold information about the table that should be created.
Definition: handler.h:3210
Minion class under Collect_scalar_subquery_info ("Css").
Definition: item.h:2942
Definition: sql_lex.h:461
bool all
Definition: sql_lex.h:462
Structure to hold parameters for CHANGE REPLICATION SOURCE, START REPLICA, and STOP REPLICA.
Definition: sql_lex.h:354
void initialize()
Initializes everything to zero/NULL/empty.
Definition: sql_lex.cc:5002
uint port
Definition: sql_lex.h:363
const char * channel
Definition: sql_lex.h:370
bool replica_until
Definition: sql_lex.h:376
char * bind_addr
Definition: sql_lex.h:362
char * network_namespace
Definition: sql_lex.h:362
char * ssl_crl
Definition: sql_lex.h:392
enum LEX_SOURCE_INFO::@181 m_source_connection_auto_failover
char * public_key_path
Definition: sql_lex.h:403
char * view_id
Definition: sql_lex.h:369
ulong relay_log_pos
Definition: sql_lex.h:405
char * tls_version
Definition: sql_lex.h:392
char * relay_log_name
Definition: sql_lex.h:404
@ LEX_MI_UNCHANGED
Definition: sql_lex.h:384
@ LEX_MI_DISABLE
Definition: sql_lex.h:385
@ LEX_MI_ENABLE
Definition: sql_lex.h:386
int sql_delay
Definition: sql_lex.h:365
float heartbeat_period
Definition: sql_lex.h:364
char * tls_ciphersuites_string
Definition: sql_lex.h:402
ulong server_id
Definition: sql_lex.h:367
ulong retry_count
Definition: sql_lex.h:367
char * ssl_ca
Definition: sql_lex.h:391
ulonglong pos
Definition: sql_lex.h:366
uint connect_retry
Definition: sql_lex.h:363
enum LEX_SOURCE_INFO::@181 port_opt
LEX_SOURCE_INFO & operator=(const LEX_SOURCE_INFO &)
enum LEX_SOURCE_INFO::@181 ssl
char * ssl_cert
Definition: sql_lex.h:391
enum LEX_SOURCE_INFO::@180 gtid_until_condition
Prealloced_array< ulong, 2 > repl_ignore_server_ids
Definition: sql_lex.h:408
char * ssl_key
Definition: sql_lex.h:391
void set_unspecified()
Sets all fields to their "unspecified" value.
Definition: sql_lex.cc:5039
enum LEX_SOURCE_INFO::@181 get_public_key
enum LEX_SOURCE_INFO::@183 assign_gtids_to_anonymous_transactions_type
char * user
Definition: sql_lex.h:362
int require_row_format
Flag indicating if row format should be enforced for this channel event stream.
Definition: sql_lex.h:423
enum LEX_SOURCE_INFO::@181 ssl_verify_server_cert
uint zstd_compression_level
Definition: sql_lex.h:407
char * log_file_name
Definition: sql_lex.h:362
enum_tls_ciphersuites
Definition: sql_lex.h:396
@ SPECIFIED_NULL
Definition: sql_lex.h:398
@ SPECIFIED_STRING
Definition: sql_lex.h:399
@ UNSPECIFIED
Definition: sql_lex.h:397
@ LEX_MI_PK_CHECK_OFF
Definition: sql_lex.h:437
@ LEX_MI_PK_CHECK_STREAM
Definition: sql_lex.h:435
@ LEX_MI_PK_CHECK_UNCHANGED
Definition: sql_lex.h:434
@ LEX_MI_PK_CHECK_ON
Definition: sql_lex.h:436
@ LEX_MI_PK_CHECK_GENERATE
Definition: sql_lex.h:438
@ LEX_MI_ANONYMOUS_TO_GTID_UUID
Definition: sql_lex.h:445
@ LEX_MI_ANONYMOUS_TO_GTID_LOCAL
Definition: sql_lex.h:444
@ LEX_MI_ANONYMOUS_TO_GTID_UNCHANGED
Definition: sql_lex.h:442
@ LEX_MI_ANONYMOUS_TO_GTID_OFF
Definition: sql_lex.h:443
char * password
Definition: sql_lex.h:362
const char * privilege_checks_hostname
Definition: sql_lex.h:418
char * host
Definition: sql_lex.h:362
enum LEX_SOURCE_INFO::@181 heartbeat_opt
char * compression_algorithm
Definition: sql_lex.h:406
bool privilege_checks_none
Flag that is set to true whenever PRIVILEGE_CHECKS_USER is set to NULL as a part of a CHANGE REPLICAT...
Definition: sql_lex.h:413
char * ssl_cipher
Definition: sql_lex.h:391
enum enum_tls_ciphersuites tls_ciphersuites
Definition: sql_lex.h:401
enum LEX_SOURCE_INFO::@181 repl_ignore_server_ids_opt
char * gtid
Definition: sql_lex.h:368
enum LEX_SOURCE_INFO::@182 require_table_primary_key_check
Identifies what is the slave policy on primary keys in tables.
enum LEX_SOURCE_INFO::@181 m_gtid_only
LEX_SOURCE_INFO()
Definition: sql_lex.h:359
enum LEX_SOURCE_INFO::@181 auto_position
bool until_after_gaps
Definition: sql_lex.h:375
enum LEX_SOURCE_INFO::@181 retry_count_opt
LEX_SOURCE_INFO(const LEX_SOURCE_INFO &)
const char * assign_gtids_to_anonymous_transactions_manual_uuid
Definition: sql_lex.h:448
char * ssl_crlpath
Definition: sql_lex.h:392
bool for_channel
Definition: sql_lex.h:377
@ UNTIL_SQL_AFTER_GTIDS
Definition: sql_lex.h:373
@ UNTIL_SQL_BEFORE_GTIDS
Definition: sql_lex.h:372
char * ssl_capath
Definition: sql_lex.h:391
const char * privilege_checks_username
Username and hostname parts of the PRIVILEGE_CHECKS_USER, when it's set to a user.
Definition: sql_lex.h:418
The LEX object currently serves three different purposes:
Definition: sql_lex.h:3844
execute_only_in_secondary_reasons get_not_supported_in_primary_reason() const
Definition: sql_lex.h:4041
void set_uncacheable(Query_block *curr_query_block, uint8 cause)
Set the current query as uncacheable.
Definition: sql_lex.h:4532
LEX_USER * grant_user
Definition: sql_lex.h:3943
bool binlog_need_explicit_defaults_ts
Definition: sql_lex.h:4449
uint grant_tot_col
Definition: sql_lex.h:4181
LEX_STRING prepared_stmt_code
Definition: sql_lex.h:4250
const char * x509_issuer
Definition: sql_lex.h:3936
bool all_privileges
Definition: sql_lex.h:4258
bool is_exec_started() const
Definition: sql_lex.h:4346
bool use_only_table_context
During name resolution search only in the table list given by Name_resolution_context::first_name_res...
Definition: sql_lex.h:4434
bool ignore_unknown_user
refers to optional IGNORE UNKNOWN USER clause in REVOKE sql.
Definition: sql_lex.h:4211
std::vector< uint > reparse_derived_table_params_at
If currently re-parsing a condition that is being pushed down to a derived table, this has the positi...
Definition: sql_lex.h:4170
void restore_backup_query_tables_list(Query_tables_list *backup)
Definition: sql_lex.cc:4316
execute_only_in_secondary_reasons m_execute_only_in_secondary_engine_reason
Definition: sql_lex.h:3861
uint8 create_view_check
Definition: sql_lex.h:4192
Prealloced_array< plugin_ref, INITIAL_LEX_PLUGIN_LIST_SIZE > Plugins_array
Definition: sql_lex.h:3955
bool new_top_level_query()
Create top-level query expression and query block.
Definition: sql_lex.cc:776
bool need_correct_ident()
Definition: sql_lex.cc:3808
execute_only_in_hypergraph_reasons m_execute_only_in_hypergraph_reason
Definition: sql_lex.h:3869
bool can_execute_only_in_hypergraph_optimizer() const
Definition: sql_lex.h:4057
LEX_ALTER alter_password
Definition: sql_lex.h:3944
bool m_broken
see mark_broken()
Definition: sql_lex.h:4264
const char * ssl_cipher
Definition: sql_lex.h:3936
bool table_or_sp_used()
Definition: sql_lex.cc:4332
Query_block * new_set_operation_query(Query_block *curr_query_block)
Create query block and attach it to the current query expression.
Definition: sql_lex.cc:700
void first_lists_tables_same()
Definition: sql_lex.cc:4206
bool validate_use_in_old_optimizer()
Validates if a query can run with the old optimizer.
Definition: sql_lex.cc:5240
Secondary_engine_execution_context * m_secondary_engine_context
Context object used by secondary storage engines to store query state during optimization and executi...
Definition: sql_lex.h:4652
bool was_replication_command_executed() const
Definition: sql_lex.h:4686
LEX_CSTRING prepared_stmt_name
Definition: sql_lex.h:4245
List< Name_resolution_context > context_stack
Definition: sql_lex.h:4103
bool autocommit
Definition: sql_lex.h:4213
Table_ref * insert_table
Table being inserted into (may be a view)
Definition: sql_lex.h:3959
void destroy()
Destroy contained objects, but not the LEX object itself.
Definition: sql_lex.h:4462
Query_result * result
Definition: sql_lex.h:3939
void destroy_values_map()
Definition: sql_lex.h:4009
void set_was_replication_command_executed()
Definition: sql_lex.h:4690
void set_current_query_block(Query_block *select)
Definition: sql_lex.h:3884
uint start_transaction_opt
Definition: sql_lex.h:4189
void new_static_query(Query_expression *sel_query_expression, Query_block *select)
Create query expression and query block in existing memory objects.
Definition: sql_lex.cc:808
bool deny_window_function(Query_block *qb) const
We have detected the presence of an alias of a window function with a window on query block qb.
Definition: sql_lex.h:4397
HA_CHECK_OPT check_opt
Definition: sql_lex.h:4107
bool drop_if_exists
Definition: sql_lex.h:4198
Table_ref * unlink_first_table(bool *link_to_local)
Definition: sql_lex.cc:4156
bool is_metadata_used() const
Check if the current statement uses meta-data (uses a table or a stored routine).
Definition: sql_lex.h:4385
bool is_lex_started
Definition: sql_lex.h:4436
bool is_explain() const
Definition: sql_lex.h:3891
char * to_log
Definition: sql_lex.h:3935
bool no_write_to_binlog
Definition: sql_lex.h:4214
bool drop_temporary
Definition: sql_lex.h:4212
void insert_values_map(Item_field *f1, Field *f2)
Definition: sql_lex.h:4004
Plugins_array plugins
Definition: sql_lex.h:3956
List< LEX_USER > * default_roles
Definition: sql_lex.h:3978
bool m_has_udf
True if statement references UDF functions.
Definition: sql_lex.h:4229
void mark_broken(bool broken=true)
Certain permanent transformations (like in2exists), if they fail, may leave the LEX in an inconsisten...
Definition: sql_lex.h:4322
bool has_external_tables() const
Definition: sql_lex.h:4241
bool is_ignore() const
Definition: sql_lex.h:4235
void set_has_external_tables()
Definition: sql_lex.h:4240
Alter_info * alter_info
Definition: sql_lex.h:4243
const char * stmt_definition_end
Definition: sql_lex.h:4426
void set_exec_completed()
Definition: sql_lex.h:4359
List< LEX_CSTRING > dynamic_privileges
Definition: sql_lex.h:3977
ulonglong m_statement_options
Statement context for Query_block::make_active_options.
Definition: sql_lex.h:4292
List< LEX_COLUMN > columns
Definition: sql_lex.h:3976
void cleanup_after_one_table_open()
Definition: sql_lex.cc:4275
void reset_has_external_tables()
Definition: sql_lex.h:4239
Query_expression * unit
Outer-most query expression.
Definition: sql_lex.h:3847
bool verbose
Definition: sql_lex.h:4214
enum_view_create_mode create_view_mode
Definition: sql_lex.h:4176
bool has_values_map() const
Definition: sql_lex.h:4021
Opt_hints_global * opt_hints_global
Definition: sql_lex.h:3951
bool make_sql_cmd(Parse_tree_root *parse_tree)
Uses parse_tree to instantiate an Sql_cmd object and assigns it to the Lex.
Definition: sql_lex.cc:5086
List< LEX_USER > users_list
Definition: sql_lex.h:3975
bool can_execute_only_in_secondary_engine() const
Definition: sql_lex.h:4028
bool is_crossed_connection_memory_status_limit() const
Definition: sql_lex.h:4364
List< Item_param > param_list
List of placeholders ('?') for parameters of a prepared statement.
Definition: sql_lex.h:4000
bool grant_if_exists
refers to optional IF EXISTS clause in REVOKE sql.
Definition: sql_lex.h:4204
bool splitting_window_expression() const
Definition: sql_lex.h:3925
dd::info_schema::Table_statistics m_IS_table_stats
IS schema queries read some dynamic table statistics from SE.
Definition: sql_lex.h:4637
LEX_RESET_REPLICA reset_replica_info
Definition: sql_lex.h:4114
enum enum_duplicates duplicates
Definition: sql_lex.h:4173
bool is_single_level_stmt()
check if the statement is a single-level join
Definition: sql_lex.h:4616
bool m_extended_show
Definition: sql_lex.h:4216
USER_RESOURCES mqh
Definition: sql_lex.h:4113
bool using_hypergraph_optimizer() const
Whether the currently-running statement should be prepared and executed with the hypergraph optimizer...
Definition: sql_lex.h:3902
bool only_view
Definition: sql_lex.h:4407
bool save_cmd_properties(THD *thd)
Definition: sql_lex.h:4558
sp_pcontext * sp_current_parsing_ctx
Current SP parsing context.
Definition: sql_lex.h:4287
bool will_contextualize
Used to inform the parser whether it should contextualize the parse tree.
Definition: sql_lex.h:4455
st_sp_chistics sp_chistics
Definition: sql_lex.h:4405
KEY_CREATE_INFO key_create_info
Definition: sql_lex.h:4109
enum enum_tx_isolation tx_isolation
Definition: sql_lex.h:4174
void set_sp_current_parsing_ctx(sp_pcontext *ctx)
Definition: sql_lex.h:4379
uint32 next_binlog_file_nr
Definition: sql_lex.h:4261
bool check_preparation_invalid(THD *thd)
Check whether preparation state for prepared statement is invalid.
Definition: sql_lex.cc:842
void set_execute_only_in_hypergraph_optimizer(bool execute_in_hypergraph_optimizer_param, execute_only_in_hypergraph_reasons reason)
Definition: sql_lex.h:4060
dd::info_schema::Tablespace_statistics m_IS_tablespace_stats
Definition: sql_lex.h:4638
const char * get_only_supported_in_hypergraph_reason_str() const
Definition: sql_lex.h:4068
sp_pcontext * get_sp_current_parsing_ctx()
Definition: sql_lex.h:4377
LEX_STRING binlog_stmt_arg
Argument of the BINLOG event statement.
Definition: sql_lex.h:3940
Query_block * new_query(Query_block *curr_query_block)
Create query expression object that contains one query block.
Definition: sql_lex.cc:641
THD * thd
Definition: sql_lex.h:3948
bool rewrite_required
Definition: sql_lex.h:4697
bool m_splitting_window_expression
Definition: sql_lex.h:3872
bool contains_plaintext_password
Definition: sql_lex.h:4259
LEX_STRING name
Definition: sql_lex.h:3933
uint8 create_view_algorithm
Definition: sql_lex.h:4191
LEX_SOURCE_INFO mi
Definition: sql_lex.h:4110
ulong max_execution_time
Definition: sql_lex.h:4443
void restore_cmd_properties()
Definition: sql_lex.h:4550
bool grant_privilege
Set to true when GRANT ... GRANT OPTION ... TO ... is used (vs.
Definition: sql_lex.h:4188
bool m_exec_completed
Set to true when execution is completed, ie optimization has been done and execution is successful or...
Definition: sql_lex.h:4274
LEX_STRING ident
Definition: sql_lex.h:3942
bool m_can_execute_only_in_secondary_engine
Definition: sql_lex.h:3859
ulonglong bulk_insert_row_cnt
Definition: sql_lex.h:3980
void set_has_udf()
Definition: sql_lex.h:4237
bool has_udf() const
Definition: sql_lex.h:4238
List< Item_func_set_user_var > set_var_list
Definition: sql_lex.h:3990
uint8 create_view_suid
Definition: sql_lex.h:4411
bool push_context(Name_resolution_context *context)
Definition: sql_lex.h:4590
void pop_context()
Definition: sql_lex.h:4594
bool m_was_replication_command_executed
Definition: sql_lex.h:4683
enum enum_yes_no_unknown tx_chain tx_release
Definition: sql_lex.h:4218
void clear_privileges()
Definition: sql_lex.cc:3603
LEX()
Definition: sql_lex.cc:3694
partition_info * part_info
Definition: sql_lex.h:3967
bool m_using_hypergraph_optimizer
Definition: sql_lex.h:3930
char * help_arg
Definition: sql_lex.h:3934
Server_options server_options
Definition: sql_lex.h:4112
bool copy_db_to(char const **p_db, size_t *p_db_length) const
This method should be called only during parsing.
Definition: sql_lex.cc:3839
enum_alter_user_attribute alter_user_attribute
Definition: sql_lex.h:3945
bool m_can_execute_only_in_hypergraph_optimizer
Definition: sql_lex.h:3868
std::map< Item_field *, Field * >::iterator end_values_map()
Definition: sql_lex.h:4025
List< Item > purge_value_list
Definition: sql_lex.h:3983
Query_block * current_query_block() const
Definition: sql_lex.h:3875
std::map< Item_field *, Field * > * insert_update_values_map
Definition: sql_lex.h:4087
bool ignore
Definition: sql_lex.h:4230
Name_resolution_context * current_context()
Definition: sql_lex.h:4602
enum SSL_type ssl_type
Definition: sql_lex.h:4172
bool is_explain_analyze
Definition: sql_lex.h:3892
HA_CREATE_INFO * create_info
Definition: sql_lex.h:4108
void set_using_hypergraph_optimizer(bool use_hypergraph)
Definition: sql_lex.h:3906
void assert_ok_set_current_query_block()
Definition: sql_lex.cc:386
Query_block * new_empty_query_block()
Create an empty query block within this LEX object.
Definition: sql_lex.cc:584
bool in_update_value_clause
Set to true while resolving values in ON DUPLICATE KEY UPDATE clause.
Definition: sql_lex.h:4438
Query_block * all_query_blocks_list
List of all query blocks.
Definition: sql_lex.h:3850
void release_plugins()
Definition: sql_lex.cc:543
uint reparse_common_table_expr_at
If currently re-parsing a CTE's definition, this is the offset in bytes of that definition in the ori...
Definition: sql_lex.h:4159
bool safe_to_cache_query
Whether this query will return the same answer every time, given unchanged data.
Definition: sql_lex.h:4225
sp_name * spname
Definition: sql_lex.h:4256
bool prepared_stmt_code_is_varref
Definition: sql_lex.h:4252
void set_ignore(bool ignore_param)
Definition: sql_lex.h:4236
my_thread_id show_profile_query_id
QUERY ID for SHOW PROFILE.
Definition: sql_lex.h:4179
List< set_var_base > var_list
Definition: sql_lex.h:3989
bool reparse_derived_table_condition
If currently re-parsing a condition which is pushed down to a derived table, this will be set to true...
Definition: sql_lex.h:4164
LEX_STRING alter_user_comment_text
Definition: sql_lex.h:3946
bool is_ps_or_view_context_analysis()
Definition: sql_lex.h:4510
bool m_crossed_connection_memory_status_limit
Set to true when execution crosses connection_memory_status_limit.
Definition: sql_lex.h:4282
Query_block * query_block
First query block.
Definition: sql_lex.h:3849
ulonglong statement_options()
Gets the options that have been set for this statement.
Definition: sql_lex.h:4302
bool which_check_option_applicable()
Definition: sql_lex.h:4573
void set_execute_only_in_secondary_engine(const bool execute_only_in_secondary_engine_param, execute_only_in_secondary_reasons reason)
Definition: sql_lex.h:4031
bool set_wild(LEX_STRING)
Definition: sql_lex.cc:4993
uint grant
Definition: sql_lex.h:4181
bool is_crossed_global_connection_memory_status_limit() const
Definition: sql_lex.h:4361
enum_keep_diagnostics keep_diagnostics
Definition: sql_lex.h:4260
bool is_rewrite_required()
Definition: sql_lex.h:4702
Table_ref * insert_table_leaf
Leaf table being inserted into (always a base table)
Definition: sql_lex.h:3961
LEX_USER * definer
Definition: sql_lex.h:3973
void set_rewrite_required()
Definition: sql_lex.h:4700
List< Item > kill_value_list
Definition: sql_lex.h:3986
const char * get_not_supported_in_primary_reason_str()
Definition: sql_lex.h:4046
uint replica_thd_opt
Definition: sql_lex.h:4189
bool m_has_external_tables
True if query has at least one external table.
Definition: sql_lex.h:4232
void restore_properties_for_insert()
Definition: sql_lex.h:4552
void clear_values_map()
Definition: sql_lex.h:4016
void set_secondary_engine_execution_context(Secondary_engine_execution_context *context)
Sets the secondary engine execution context for this statement.
Definition: sql_lex.cc:5232
bool is_broken() const
Definition: sql_lex.h:4313
bool sp_lex_in_use
Definition: sql_lex.h:4257
List< LEX_STRING > prepared_stmt_params
Definition: sql_lex.h:4254
LEX_REPLICA_CONNECTION replica_connection
Definition: sql_lex.h:4111
Secondary_engine_execution_context * secondary_engine_execution_context() const
Gets the secondary engine execution context for this statement.
Definition: sql_lex.h:4658
st_parsing_options parsing_options
Definition: sql_lex.h:4242
int select_number
Number of query block (by EXPLAIN)
Definition: sql_lex.h:4190
void add_statement_options(ulonglong options)
Add options to values of m_statement_options.
Definition: sql_lex.h:4310
uint profile_options
Definition: sql_lex.h:4180
Query_expression * create_query_expr_and_block(THD *thd, Query_block *current_query_block, Item *where_clause, Item *having_clause, enum_parsing_context ctx)
Create query expression under current_query_block and a query block under the new query expression.
Definition: sql_lex.cc:594
nesting_map m_deny_window_func
Windowing functions are not allowed in HAVING - in contrast to grouped aggregate functions,...
Definition: sql_lex.h:4138
LEX_GRANT_AS grant_as
Definition: sql_lex.h:3947
String * wild
Definition: sql_lex.h:3938
bool expr_allows_subquery
Definition: sql_lex.h:4153
void reset()
Reset query context to initial state.
Definition: sql_lex.cc:409
bool m_exec_started
Set to true when execution has started (after parsing, tables opened and query preparation is complet...
Definition: sql_lex.h:4269
void clear_execution()
Clear execution state for a statement after it has been prepared or executed, and before it is (re-)e...
Definition: sql_lex.cc:555
bool locate_var_assignment(const Name_string &name)
Locate an assignment to a user variable with a given name, within statement.
Definition: sql_lex.cc:4349
Sql_cmd * m_sql_cmd
Definition: sql_lex.h:4145
execute_only_in_hypergraph_reasons get_only_supported_in_hypergraph_reason() const
Definition: sql_lex.h:4075
void reset_rewrite_required()
Definition: sql_lex.h:4701
LEX_STRING create_view_query_block
SELECT of CREATE VIEW statement.
Definition: sql_lex.h:3964
bool m_crossed_global_connection_memory_status_limit
Set to true when execution crosses global_connection_memory_status_limit.
Definition: sql_lex.h:4278
bool set_channel_name(LEX_CSTRING name={})
Set replication channel name.
Definition: sql_lex.cc:5105
bool accept(Select_lex_visitor *visitor)
Definition: sql_lex.cc:4989
void reset_exec_started()
Definition: sql_lex.h:4348
sp_head * sphead
Definition: sql_lex.h:4255
void reset_n_backup_query_tables_list(Query_tables_list *backup)
Definition: sql_lex.cc:4299
udf_func udf
Definition: sql_lex.h:4106
void set_trg_event_type_for_tables()
Set the initial purpose of this Table_ref object in the list of used tables.
Definition: sql_lex.cc:4021
void set_crossed_global_connection_memory_status_limit()
Definition: sql_lex.h:4367
void link_first_table_back(Table_ref *first, bool link_to_local)
Definition: sql_lex.cc:4242
const char * stmt_definition_begin
Intended to point to the next word after DEFINER-clause in the following statements:
Definition: sql_lex.h:4425
bool is_exec_completed() const
Check whether the statement has been executed (regardless of completion - successful or in error).
Definition: sql_lex.h:4358
enum enum_var_type option_type
Definition: sql_lex.h:4175
uint8 context_analysis_only
Definition: sql_lex.h:4197
bool can_use_merged()
check if command can use VIEW with MERGE algorithm (for top VIEWs)
Definition: sql_lex.cc:3732
bool can_not_use_merged()
Check if command can't use merged views in any part of command.
Definition: sql_lex.cc:3785
std::map< Item_field *, Field * >::iterator begin_values_map()
Definition: sql_lex.h:4022
bool m_subquery_to_derived_is_impossible
If true: during prepare, we did a subquery transformation (IN-to-EXISTS, SOME/ANY) that doesn't curre...
Definition: sql_lex.h:4143
void set_exec_started()
Definition: sql_lex.h:4347
Query_block * m_current_query_block
Definition: sql_lex.h:3853
Item_sum * in_sum_func
Definition: sql_lex.h:4105
virtual ~LEX()
Definition: sql_lex.cc:393
class Explain_format * explain_format
Definition: sql_lex.h:4440
void cleanup(bool full)
Definition: sql_lex.h:4338
void reset_crossed_memory_status_limit()
Definition: sql_lex.h:4373
nesting_map allow_sum_func
This field is used as a work field during resolving to validate the use of aggregate functions.
Definition: sql_lex.h:4127
const char * x509_subject
Definition: sql_lex.h:3936
friend bool lex_start(THD *thd)
Call lex_start() before every query that is to be prepared and executed.
Definition: sql_lex.cc:508
bool is_view_context_analysis()
Definition: sql_lex.h:4515
void set_crossed_connection_memory_status_limit()
Definition: sql_lex.h:4370
ulong type
Definition: sql_lex.h:4115
Helper singleton class used to track information needed to perform the transform of a correlated scal...
Definition: sql_resolver.cc:6777
Definition: thr_lock.h:99
The MEM_ROOT is a simple arena, where allocations are carved out of larger blocks.
Definition: my_alloc.h:83
void * Alloc(size_t length)
Allocate memory.
Definition: my_alloc.h:145
Definition: mysql_lex_string.h:40
const char * str
Definition: mysql_lex_string.h:41
size_t length
Definition: mysql_lex_string.h:42
Definition: mysql_lex_string.h:35
Bison "location" class.
Definition: parse_location.h:43
Definition: materialize_path_parameters.h:42
Struct NESTED_JOIN is used to represent how tables are connected through outer join operations and se...
Definition: nested_join.h:78
Instances of Name_resolution_context store the information necessary for name resolution of Items and...
Definition: item.h:415
Environment data for the contextualization phase.
Definition: parse_tree_node_base.h:420
State data storage for digest_start, digest_add_token.
Definition: sql_digest_stream.h:36
Definition: sql_lex.h:4933
Definition: sql_lex.h:3256
void reset()
Definition: sql_lex.cc:169
bool allows_select_into
Definition: sql_lex.h:3258
bool allows_variable
Definition: sql_lex.h:3257
st_parsing_options()
Definition: sql_lex.h:3260
Definition: sql_lex.h:2576
LEX_CSTRING comment
Definition: sql_lex.h:2577
enum enum_sp_data_access daccess
Definition: sql_lex.h:2580
bool detistic
Definition: sql_lex.h:2579
enum enum_sp_suid_behaviour suid
Definition: sql_lex.h:2578
LEX_CSTRING language
CREATE|ALTER ... LANGUAGE <language>
Definition: sql_lex.h:2581
Definition: sql_lex.h:2586
enum enum_trigger_event_type event
Definition: sql_lex.h:2588
LEX_CSTRING anchor_trigger_name
Trigger name referenced in the FOLLOWS/PRECEDES clause of the CREATE TRIGGER statement.
Definition: sql_lex.h:2599
enum enum_trigger_order_type ordering_clause
FOLLOWS or PRECEDES as specified in the CREATE TRIGGER statement.
Definition: sql_lex.h:2593
enum enum_trigger_action_time_type action_time
Definition: sql_lex.h:2587
Definition: sql_lex.h:2567
void reset()
Cleans slave connection info.
Definition: sql_lex.cc:177
char * user
Definition: sql_lex.h:2568
char * plugin_dir
Definition: sql_lex.h:2571
char * plugin_auth
Definition: sql_lex.h:2570
char * password
Definition: sql_lex.h:2569
Definition: sql_connect.h:41
thr_lock_type
Definition: thr_lock.h:51
@ TL_UNLOCK
Definition: thr_lock.h:53
@ TL_READ_DEFAULT
Definition: thr_lock.h:61
This file defines all base public constants related to triggers in MySQL.
enum_trigger_event_type
Constants to enumerate possible event types on which triggers can be fired.
Definition: trigger_def.h:42
enum_trigger_order_type
Possible trigger ordering clause values:
Definition: trigger_def.h:64
enum_trigger_action_time_type
Constants to enumerate possible timings when triggers can be fired.
Definition: trigger_def.h:52
Definition: lexer_yystype.h:33
Definition: parser_yystype.h:341
#define PSI_NOT_INSTRUMENTED
Definition: validate_password_imp.cc:44
SSL_type
Definition: violite.h:307
An adapter class to support iteration over an iterator of Item * (typically mem_root_deque<Item *>),...
VisibleFieldsIterator VisibleFields(mem_root_deque< Item * > &fields)
Definition: visible_fields.h:119
int n
Definition: xcom_base.cc:509