29#ifndef SQL_LEX_INCLUDED
30#define SQL_LEX_INCLUDED
62#include "mysqld_error.h"
261#define TYPE_ENUM_FUNCTION 1
262#define TYPE_ENUM_PROCEDURE 2
263#define TYPE_ENUM_TRIGGER 3
264#define TYPE_ENUM_PROXY 4
265#define TYPE_ENUM_LIBRARY 5
266#define TYPE_ENUM_INVALID 6
290#define TABLE_TYPE_TEMPORARY 1
291#define TABLE_TYPE_EXTERNAL 2
306#define TL_OPTION_UPDATING 0x01
307#define TL_OPTION_IGNORE_LEAVES 0x02
308#define TL_OPTION_ALIAS 0x04
498#define INDEX_HINT_MASK_JOIN (1)
499#define INDEX_HINT_MASK_GROUP (1 << 1)
500#define INDEX_HINT_MASK_ORDER (1 << 2)
502#define INDEX_HINT_MASK_ALL \
503 (INDEX_HINT_MASK_JOIN | INDEX_HINT_MASK_GROUP | INDEX_HINT_MASK_ORDER)
683 for (
auto qt : query_terms<>()) {
684 if (qt->query_block() == qb)
return qt;
724 auto const setop = down_cast<Query_term_set_op *>(
m_query_term);
725 if (setop->last_distinct() > 0)
726 return setop->child(setop->last_distinct())->query_block();
733 return down_cast<Query_term_set_op *>(
m_query_term)->last_distinct() > 0;
976 bool finalize_access_paths);
1207 bool calc_found_rows)
override;
1398 ulong table_options,
1705 const char *prefix);
1794 void cleanup(
bool full)
override;
1822 assert(
join ==
nullptr);
1902 bool optimize(
THD *thd,
bool finalize_access_paths);
2309 bool top,
bool in_sj,
Item **new_conds,
2310 uint *changelog =
nullptr);
2316 Item **sj_cond,
bool *simple_const);
2322 Item *join_cond,
bool left_outer,
2323 bool use_inner_join);
2327 bool reject_multiple_rows,
2329 Item *lifted_where_cond);
2337 Item *selected_field_or_ref,
2338 const uint first_non_hidden);
2343 bool *selected_expr_added_to_group_by,
2348 bool *added_card_check,
size_t *added_window_card_checks);
2351 bool added_card_check,
size_t added_window_card_checks);
2403 Item **lifted_where);
2553 qt = down_cast<Query_term_unary *>(qt)->child(0);
2560 qt = down_cast<Query_term_unary *>(qt)->child(0);
2657 assert(!libs.
empty());
2661 if (libs.
empty())
return false;
2664 while (!libs.
empty()) {
2790 std::unique_ptr<malloc_unordered_map<std::string, Sroutine_hash_entry *>>
2848 *
this = std::move(*state);
3123 constexpr uint32_t shift =
3135 constexpr uint32_t shift =
3189 switch (accessed_table) {
3191 return "STMT_READS_TRANS_TABLE";
3194 return "STMT_READS_NON_TRANS_TABLE";
3197 return "STMT_READS_TEMP_TRANS_TABLE";
3200 return "STMT_READS_TEMP_NON_TRANS_TABLE";
3203 return "STMT_WRITES_TRANS_TABLE";
3206 return "STMT_WRITES_NON_TRANS_TABLE";
3209 return "STMT_WRITES_TEMP_TRANS_TABLE";
3212 return "STMT_WRITES_TEMP_NON_TRANS_TABLE";
3224#define BINLOG_DIRECT_ON \
3229#define BINLOG_DIRECT_OFF \
3234#define TRX_CACHE_EMPTY 0x33
3236#define TRX_CACHE_NOT_EMPTY 0xCC
3238#define IL_LT_REPEATABLE 0xAA
3240#define IL_GTE_REPEATABLE 0x55
3293 bool trx_cache_is_not_empty,
3294 uint tx_isolation) {
3295 bool unsafe =
false;
3297 if (in_multi_stmt_transaction_mode) {
3298 const uint condition =
3308 (
"RESULT %02X %02X %02X\n", condition,
3513 unsigned char yyGet() {
3515 const char c = *
m_ptr++;
3529 unsigned char yyPeek()
const {
3538 unsigned char yyPeekn(
int n)
const {
3682 const char *end_ptr);
3747 const char *alias)
const {
4209 const bool execute_only_in_secondary_engine_param,
4212 execute_only_in_secondary_engine_param;
4229 return "TABLESAMPLE";
4231 return "OUTFILE to object store";
4233 return "Secondary engine temporary table creation";
4235 return "Secondary engine temporary table within this statement";
4244 bool execute_in_hypergraph_optimizer_param,
4247 execute_in_hypergraph_optimizer_param;
4526 if (tr->jdv_content_tree !=
nullptr) {
4528 tr->jdv_content_tree =
nullptr;
4655 if (
unit ==
nullptr)
return;
4747 tr->restore_properties();
4788 bool copy_db_to(
char const **p_db,
size_t *p_db_length)
const;
4791 return copy_db_to(
const_cast<const char **
>(p_db), p_db_length);
5051 void reset(
const char *found_semicolon,
size_t length) {
5126 static void *
operator new(
size_t size)
noexcept {
5127 return (*THR_MALLOC)->Alloc(
size);
5130 const std::nothrow_t &arg
5131 [[maybe_unused]] = std::nothrow)
noexcept {
5134 static void operator delete(
void *ptr [[maybe_unused]],
5135 size_t size [[maybe_unused]]) {
5138 static void operator delete(
5139 void *,
MEM_ROOT *,
const std::nothrow_t &)
noexcept {
5180 &valid_len, &len_error)) {
5183 hexbuf, string_val.
str + valid_len,
5184 static_cast<uint
>(std::min<size_t>(string_val.
length - valid_len, 3)));
5205 std::string &invalid_sub_str) {
5210 &valid_len, &len_error)) {
5211 char printable_buff[32];
5213 printable_buff,
sizeof(printable_buff), string_val.
str + valid_len,
5214 static_cast<uint
>(std::min<size_t>(string_val.
length - valid_len, 3)),
5216 invalid_sub_str = printable_buff;
5229 Item *item [[maybe_unused]],
5230 bool hidden [[maybe_unused]]) {
5232 if (
std::find(fields.begin(), fields.end(), item) != fields.end()) {
5235 assert(item->hidden == hidden);
5247 const char *legend);
5264template <
typename T>
5267 return query_expr->
walk(&Item::walk_helper_thunk<T>, walk,
5268 reinterpret_cast<uchar *
>(&functor));
static mysql_service_status_t init()
Component initialization.
Definition: audit_api_message_emit.cc:566
uint32_t Access_bitmask
Definition: auth_acls.h:34
Kerberos Client Authentication nullptr
Definition: auth_kerberos_client_plugin.cc:247
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:5246
void restore()
Definition: sql_lex.h:5250
Query_block * saved_query_block
Definition: sql_lex.h:5255
THD * thd
Definition: sql_lex.h:5254
Change_current_query_block(THD *thd_arg)
Definition: sql_lex.h:5248
~Change_current_query_block()
Definition: sql_lex.h:5251
Parser state for CTE subquery parser.
Definition: sql_lex.h:5103
Common_table_expr_parser_state()
Definition: sql_lex.cc:1219
PT_subquery * result
Definition: sql_lex.h:5107
Utility RAII class to save/modify/restore the condition_context information of a query block.
Definition: sql_lex.h:2567
enum_condition_context saved_value
Definition: sql_lex.h:2589
~Condition_context()
Definition: sql_lex.h:2583
Query_block * select
Definition: sql_lex.h:2588
Condition_context(Query_block *select_ptr, enum_condition_context new_type=enum_condition_context::NEITHER)
Definition: sql_lex.h:2569
Parser state for Derived table's condition parser.
Definition: sql_lex.h:5114
Item * result
Definition: sql_lex.h:5118
Derived_expr_parser_state()
Definition: sql_lex.cc:1222
Definition: event_parse_data.h:43
Parser state for single expression parser (.frm/DD stuff)
Definition: sql_lex.h:5093
Expression_parser_state()
Definition: sql_lex.cc:1216
Item * result
Definition: sql_lex.h:5097
Parser state for generated column expression parser (.frm/DD stuff)
Definition: sql_lex.h:5083
Value_generator * result
Definition: sql_lex.h:5087
Gcol_expr_parser_state()
Definition: sql_lex.cc:1213
Definition: sql_lex.h:506
LEX_CSTRING key_name
Definition: sql_lex.h:516
void print(const THD *thd, String *str)
Print an index hint.
Definition: sql_lex.cc:2758
index_clause_map clause
Definition: sql_lex.h:511
enum index_hint_type type
Definition: sql_lex.h:509
Index_hint(const char *str, uint length)
Definition: sql_lex.h:518
Definition: item_cmpfunc.h:2528
Definition: item_subselect.h:459
Implements the comparison operator equals (=)
Definition: item_cmpfunc.h:1101
Definition: item_func.h:3485
Definition: item_func.h:3536
This class is used to implement operations like SET @variable or @variable:= expression.
Definition: item_func.h:3295
A wrapper Item that normally returns its parameter, but becomes NULL when processing rows for rollup.
Definition: item_func.h:1715
A wrapper Item that contains a number of aggregate items, one for each level of rollup (see Item_roll...
Definition: item_sum.h:2742
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:927
cond_result
Definition: item.h:990
@ COND_UNDEF
Definition: item.h:990
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:4072
LEX * m_lex
Definition: sql_lex.h:4074
~Splitting_window_expression()
Definition: sql_lex.h:4081
Splitting_window_expression(LEX *lex, bool v)
Definition: sql_lex.h:4077
Definition: sql_lex.h:3895
LEX_COLUMN(const String &x, const Access_bitmask &y)
Definition: sql_lex.h:3899
String column
Definition: sql_lex.h:3897
Access_bitmask rights
Definition: sql_lex.h:3898
Definition: sql_lex.h:3907
List< LEX_USER > * role_list
Definition: sql_lex.h:3916
void cleanup()
Definition: sql_lex.cc:5254
bool grant_as_used
Definition: sql_lex.h:3913
role_enum role_type
Definition: sql_lex.h:3914
LEX_USER * user
Definition: sql_lex.h:3915
LEX_GRANT_AS()
Definition: sql_lex.cc:5261
Definition: sql_list.h:633
Definition: sql_list.h:494
A typesafe replacement for DYNAMIC_ARRAY.
Definition: mem_root_array.h:432
Storage for name strings.
Definition: item.h:295
Global level hints.
Definition: opt_hints.h:352
Query block level hints.
Definition: opt_hints.h:378
Definition: parse_tree_nodes.h:1808
Represents the WITH clause: WITH [...], [...] SELECT ..., ^^^^^^^^^^^^^^^^^.
Definition: parse_tree_nodes.h:366
Base class for all top-level nodes of SQL statements.
Definition: parse_tree_nodes.h:162
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:5035
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:5064
Parser state for partition expression parser (.frm/DD stuff)
Definition: sql_lex.h:5073
Partition_expr_parser_state()
Definition: sql_lex.cc:1210
partition_info * result
Definition: sql_lex.h:5077
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:4897
~Prepare_error_tracker()
Definition: sql_lex.cc:139
THD *const thd
Definition: sql_lex.h:4903
Prepare_error_tracker(THD *thd_arg)
Definition: sql_lex.h:4899
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:1179
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:3340
void print_delete(const THD *thd, String *str, enum_query_type query_type)
Print detail of the DELETE statement.
Definition: sql_lex.cc:3120
void add_base_options(ulonglong options)
Add base options to a query block, also update active options.
Definition: sql_lex.h:1247
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:2172
void label_children() override
Set the correct value of Query_term::m_sibling_idx recursively for set operations.
Definition: sql_lex.h:1215
void qbPrint(int level, std::ostringstream &buf) const
Minion of debugPrint.
Definition: query_term.cc:1020
Query_block * next
Intrusive linked list of all query blocks within the same query expression.
Definition: sql_lex.h:2450
void cleanup_all_joins()
Definition: sql_union.cc:1469
uint select_number
Query block number (used for EXPLAIN)
Definition: sql_lex.h:2105
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:2272
Query_term_type term_type() const override
Get the node tree type.
Definition: sql_lex.h:1210
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:3427
Item * where_cond() const
Definition: sql_lex.h:1222
bool is_grouped() const
Definition: sql_lex.h:1329
void print_insert_options(String *str)
Print INSERT options.
Definition: sql_lex.cc:3268
bool m_json_agg_func_used
Definition: sql_lex.h:2538
mem_root_deque< mem_root_deque< Item * > * > * row_value_list
The VALUES items of a table value constructor.
Definition: sql_lex.h:1965
bool is_dependent() const
Definition: sql_lex.h:1849
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:3479
mem_root_deque< Item * > * get_fields_list()
Definition: sql_lex.h:1422
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:706
bool with_sum_func
True if contains or aggregates set functions.
Definition: sql_lex.h:2266
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:2523
bool is_explicitly_grouped() const
Definition: sql_lex.h:1305
Item * m_where_cond
Condition to be evaluated after all tables in a query block are joined.
Definition: sql_lex.h:2509
olap_type olap
Indicates whether this query block contains non-primitive grouping (such as ROLLUP).
Definition: sql_lex.h:2205
Item::cond_result having_value
Definition: sql_lex.h:2116
Item::cond_result cond_value
Saved values of the WHERE and HAVING clauses.
Definition: sql_lex.h:2115
bool setup_base_ref_items(THD *thd)
Setup the array containing references to base items.
Definition: sql_lex.cc:2604
uint get_in_sum_expr() const
Definition: sql_lex.h:1392
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:3381
bool group_fix_field
true when GROUP BY fix field called in processing of this query block
Definition: sql_lex.h:2256
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:3316
Resolve_place resolve_place
Indicates part of query being resolved.
Definition: sql_lex.h:2137
bool m_right_joins
True if query block has right joins.
Definition: sql_lex.h:2532
Query_block(MEM_ROOT *mem_root, Item *where, Item *having)
Construct and initialize Query_block object.
Definition: sql_lex.cc:2262
bool is_implicitly_grouped() const
Definition: sql_lex.h:1312
void add_subquery_transform_candidate(Item_exists_subselect *predicate)
Definition: sql_lex.h:1504
size_t visible_column_count() const override
Return the number of visible columns of the query term.
Definition: sql_lex.h:1431
Item * m_having_cond
Condition to be evaluated on grouped rows after grouping.
Definition: sql_lex.h:2512
uint cond_count
Number of predicates after preparation.
Definition: sql_lex.h:2155
Query_result * m_query_result
Result of this query block.
Definition: sql_lex.h:2462
void cleanup(bool full) override
Cleanup this subtree (this Query_block and all nested Query_blockes and Query_expressions).
Definition: sql_union.cc:1440
bool absorb_limit_of(Query_block *block)
end of overridden methods from Query_term
Definition: query_term.cc:1079
Table_ref * end_lateral_table
Last table for LATERAL join, used by table functions.
Definition: sql_lex.h:2069
void print_hints(const THD *thd, String *str, enum_query_type query_type)
Print detail of Hints.
Definition: sql_lex.cc:3200
bool accept(Select_lex_visitor *visitor)
Accept function for SELECT and DELETE.
Definition: sql_lex.cc:3568
uint max_equal_elems
Maximal number of elements in multiple equalities.
Definition: sql_lex.h:2159
uint table_func_count
Number of table functions in this query block.
Definition: sql_lex.h:2193
Item ** qualify_cond_ref()
Definition: sql_lex.h:1229
Mem_root_array< Item_exists_subselect * > * sj_candidates
Pointer to collection of subqueries candidate for semi/antijoin conversion.
Definition: sql_lex.h:2441
bool having_fix_field
true when having fix field called in processing of this query block
Definition: sql_lex.h:2254
bool has_aj_nests
Definition: sql_lex.h:2531
uint hidden_items_from_optimization
Hidden items added during optimization.
Definition: sql_lex.h:2295
Query_block * link_next
Intrusive double-linked global list of query blocks.
Definition: sql_lex.h:2458
VisibleFieldsIterator types_iterator() override
Abstract over visible column types: if query block, we offer an iterator over visible fields,...
Definition: sql_lex.h:1430
void invalidate()
Invalidate by nulling out pointers to other Query_expressions and Query_blockes.
Definition: sql_lex.cc:2596
Opt_hints_qb * opt_hints_qb
Query-block-level hints, for this query block.
Definition: sql_lex.h:2016
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:1212
Query_block ** link_prev
Definition: sql_lex.h:2459
uint with_wild
Number of wildcards used in the SELECT list.
Definition: sql_lex.h:2184
Name_resolution_context context
Context for name resolution for all column references except columns from joined tables.
Definition: sql_lex.h:2041
Item ** where_cond_ref()
Definition: sql_lex.h:1223
void make_active_options(ulonglong added_options, ulonglong removed_options)
Make active options from base options, supplied options and environment:
Definition: sql_lex.cc:2444
void set_empty_query()
Set query block as returning no data.
Definition: sql_lex.h:1821
Query_expression * slave
The first query expression contained within this query block.
Definition: sql_lex.h:2455
bool is_item_list_lookup
Definition: sql_lex.h:2251
void mark_as_dependent(Query_block *last, bool aggregate)
Mark all query blocks from this to 'last' as dependent.
Definition: sql_lex.cc:2480
Table_ref * leaf_tables
Points to first leaf table of query block.
Definition: sql_lex.h:2067
bool save_order_properties(THD *thd, SQL_I_List< ORDER > *list, Group_list_ptrs **list_ptrs)
Helper for save_properties()
Definition: sql_lex.cc:4369
Item_sum * inner_sum_func_list
Circular linked list of aggregate functions in nested query blocks.
Definition: sql_lex.h:2084
Item ** having_cond_ref()
Definition: sql_lex.h:1226
bool first_execution
This variable is required to ensure proper work of subqueries and stored procedures.
Definition: sql_lex.h:2240
Item * having_cond() const
Definition: sql_lex.h:1225
void print_delete_options(String *str)
Print DELETE options.
Definition: sql_lex.cc:3260
bool add_ftfunc_to_list(Item_func_match *func)
Definition: sql_lex.cc:2588
void print_having(const THD *thd, String *str, enum_query_type query_type)
Print list of items in HAVING clause.
Definition: sql_lex.cc:3463
bool walk(Item_processor processor, enum_walk walk, uchar *arg)
Definition: sql_lex.cc:4817
bool m_agg_func_used
Definition: sql_lex.h:2537
Query_expression * first_inner_query_expression() const
Definition: sql_lex.h:1291
uint materialized_derived_table_count
Number of materialized derived tables and views in this query block.
Definition: sql_lex.h:2175
VisibleFieldsIterator visible_fields()
Wrappers over fields / get_fields_list() that hide items where item->hidden, meant for range-based fo...
Definition: sql_lex.h:1427
List< Item_func_match > * ftfunc_list
A pointer to ftfunc_list_alloc, list of full text search functions.
Definition: sql_lex.h:1961
uint in_sum_expr
Parse context: is inside a set function if this is positive.
Definition: sql_lex.h:2121
enum_condition_context condition_context
Definition: sql_lex.h:2208
void set_right_joins()
Definition: sql_lex.h:1838
uint n_sum_items
Number of Item_sum-derived objects in this SELECT.
Definition: sql_lex.h:2166
bool m_limit_1
Whether we have LIMIT 1 and no OFFSET.
Definition: sql_lex.h:2076
Query_block * outer_query_block() const
Definition: sql_lex.h:1292
void renumber(LEX *lex)
Renumber query blocks of contained query expressions.
Definition: sql_lex.cc:4543
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:2058
List< Window > m_windows
All windows defined on the select, both named and inlined.
Definition: sql_lex.h:1956
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:4888
uint leaf_table_count
Number of leaf tables in this query block.
Definition: sql_lex.h:2189
void set_having_cond(Item *cond)
Definition: sql_lex.h:1227
bool m_use_select_limit
If true, use select_limit to limit number of rows selected.
Definition: sql_lex.h:2279
bool has_limit() const
Definition: sql_lex.h:1363
void set_qualify_cond(Item *cond)
Definition: sql_lex.h:1230
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:4722
table_map original_tables_map
Original query table map before aj/sj processing.
Definition: sql_lex.h:2187
void destroy()
Destroy contained objects, in particular temporary tables which may have their own mem_roots.
Definition: sql_union.cc:1480
uint derived_table_count
Number of derived tables and views in this query block.
Definition: sql_lex.h:2191
bool is_ordered() const
Definition: sql_lex.h:1340
void destroy_tree() override
Destroy the query term tree structure.
Definition: sql_lex.h:1216
uint partitioned_table_count
Number of partitioned tables.
Definition: sql_lex.h:2177
Prealloced_array< Item_rollup_group_item *, 4 > rollup_group_items
Definition: sql_lex.h:2010
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:3361
mem_root_deque< Item * > * types_array() override
Definition: query_term.cc:882
bool json_agg_func_used() const
Definition: sql_lex.h:1831
bool get_optimizable_conditions(THD *thd, Item **new_where, Item **new_having)
Returns disposable copies of WHERE/HAVING/ON conditions.
Definition: sql_lex.cc:4620
uint between_count
Number of between predicates in where/having/on.
Definition: sql_lex.h:2157
Query_result * query_result() const
Definition: sql_lex.h:1232
void include_in_global(Query_block **plink)
Include query block into global list.
Definition: sql_lex.cc:4559
bool agg_func_used() const
Definition: sql_lex.h:1830
Resolve_place
Three fields used by semi-join transformations to know when semi-join is possible,...
Definition: sql_lex.h:2129
@ RESOLVE_HAVING
Definition: sql_lex.h:2133
@ RESOLVE_NONE
Definition: sql_lex.h:2130
@ RESOLVE_SELECT_LIST
Definition: sql_lex.h:2135
@ RESOLVE_QUALIFY
Definition: sql_lex.h:2134
@ RESOLVE_JOIN_NEST
Definition: sql_lex.h:2131
@ RESOLVE_CONDITION
Definition: sql_lex.h:2132
void include_chain_in_global(Query_block **start)
Include chain of query blocks into global list.
Definition: sql_lex.cc:4570
SQL_I_List< ORDER > order_list
ORDER BY clause.
Definition: sql_lex.h:1980
char * db
Definition: sql_lex.h:2018
List< Item_func_match > ftfunc_list_alloc
Definition: sql_lex.h:1962
static const char * get_type_str(enum_explain_type type)
Definition: sql_lex.h:1845
void remove_base_options(ulonglong options)
Remove base options from a query block.
Definition: sql_lex.h:1258
enum_explain_type type() const
Lookup for Query_block type.
Definition: sql_lex.cc:4440
bool optimize_query_term(THD *, Query_expression *) override
Optimize the non-leaf query blocks.
Definition: sql_lex.h:1199
Item * offset_limit
LIMIT ... OFFSET clause, NULL if no offset is given.
Definition: sql_lex.h:2074
void set_sj_candidates(Mem_root_array< Item_exists_subselect * > *sj_cand)
Definition: sql_lex.h:1501
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:3509
static const char * type_str[static_cast< int >(enum_explain_type::EXPLAIN_total)]
Definition: sql_lex.h:2547
bool add_grouping_expr(THD *thd, Item *item)
Add a grouping expression to the query block.
Definition: sql_lex.cc:2581
Query_expression * master
The query expression containing this query block.
Definition: sql_lex.h:2453
bool has_subquery_transforms() const
Definition: sql_lex.h:1511
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:2103
int hidden_order_field_count
How many expressions are part of the order by but not select list.
Definition: sql_lex.h:2444
enum_parsing_context parsing_place
Parse context: indicates where the current expression is being parsed.
Definition: sql_lex.h:2119
void init_order()
Definition: sql_lex.h:1520
uint8 uncacheable
result of this query can't be cached, bit field, can be : UNCACHEABLE_DEPENDENT UNCACHEABLE_RAND UNCA...
Definition: sql_lex.h:2222
ulonglong m_base_options
Options assigned from parsing and throughout resolving, should not be modified after resolving is don...
Definition: sql_lex.h:2468
bool source_table_is_one_row() const
Definition: sql_lex.h:1853
uint in_window_expr
Parse context: is inside a window function if this is positive.
Definition: sql_lex.h:2123
void include_down(LEX *lex, Query_expression *outer)
Include query block inside a query expression.
Definition: sql_lex.cc:4494
void include_standalone(Query_expression *sel)
Include query block inside a query expression, but do not link.
Definition: sql_lex.cc:4531
Group_list_ptrs * group_list_ptrs
Definition: sql_lex.h:1993
uint saved_cond_count
Number of arguments of and/or/xor in where/having/on.
Definition: sql_lex.h:2153
Subquery_strategy subquery_strategy(const THD *thd) const
Returns which subquery execution strategies can be used for this query block.
Definition: sql_lex.cc:4643
Query_block * next_query_block() const
Definition: sql_lex.h:1293
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:2048
void include_neighbour(LEX *lex, Query_block *before)
Include a query block next to another query block.
Definition: sql_lex.cc:4512
bool is_table_value_constructor
If set, the query block is of the form VALUES row_list.
Definition: sql_lex.h:2211
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:1317
bool semijoin_enabled(const THD *thd) const
Returns whether semi-join is enabled for this query block.
Definition: sql_lex.cc:4669
Query_expression * master_query_expression() const
Definition: sql_lex.h:1290
void update_semijoin_strategies(THD *thd)
Update available semijoin strategies for semijoin nests.
Definition: sql_lex.cc:4674
uint select_n_having_items
Number of items in the select list, HAVING clause, QUALIFY clause and ORDER BY clause.
Definition: sql_lex.h:2151
Table_ref * get_table_list() const
Definition: sql_lex.h:1417
void print_update(const THD *thd, String *str, enum_query_type query_type)
Print detail of the UPDATE statement.
Definition: sql_lex.cc:3083
bool is_simple_query_block() const
Definition: sql_lex.h:1808
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:3282
int m_current_order_by_number
Keeps track of the current ORDER BY expression we are resolving for ORDER BY, if any.
Definition: sql_lex.h:2291
bool has_tables() const
Definition: sql_lex.h:1302
void debugPrint(int level, std::ostringstream &buf) const override
Query_term methods overridden.
Definition: query_term.cc:1057
bool m_internal_limit
If true, limit object is added internally.
Definition: sql_lex.h:2282
int hidden_group_field_count
Number of GROUP BY expressions added to all_fields.
Definition: sql_lex.h:2518
bool is_recursive() const
Definition: sql_lex.h:1369
int get_number_of_grouping_sets() const
Definition: sql_lex.h:2498
void print_windows(const THD *thd, String *str, enum_query_type query_type)
Print details of Windowing functions.
Definition: sql_lex.cc:3487
bool no_table_names_allowed
used for global order by
Definition: sql_lex.h:2287
bool validate_base_options(LEX *lex, ulonglong options) const
Validate base options for a query block.
Definition: sql_lex.cc:4759
void set_where_cond(Item *cond)
Definition: sql_lex.h:1224
Item * select_limit
LIMIT clause, NULL if no limit is given.
Definition: sql_lex.h:2072
ulonglong active_options() const
Definition: sql_lex.h:1271
bool save_properties(THD *thd)
Save properties of a prepared statement needed for repeated optimization.
Definition: sql_lex.cc:4392
Table_ref * embedding
table embedding the above list
Definition: sql_lex.h:2060
bool open_result_tables(THD *, int) override
Open tmp tables for the tree of set operation query results, by recursing.
Definition: query_term.cc:1071
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:2034
bool m_was_implicitly_grouped
Used by nested scalar_to_derived transformations.
Definition: sql_lex.h:2246
bool has_sj_nests
True if query block has semi-join nests merged into it.
Definition: sql_lex.h:2530
Prealloced_array< Item_rollup_sum_switcher *, 4 > rollup_sums
Definition: sql_lex.h:2012
SQL_I_List< ORDER > group_list
GROUP BY clause.
Definition: sql_lex.h:1992
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:1971
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:2144
bool skip_local_transforms
True: skip local transformations during prepare() call (used by INSERT)
Definition: sql_lex.h:2249
void print_limit(const THD *thd, String *str, enum_query_type query_type) const
Definition: sql_lex.cc:2727
const char * get_type_str()
Lookup for a type string.
Definition: sql_lex.h:1844
Table_ref * resolve_nest
Used when resolving outer join condition.
Definition: sql_lex.h:2484
bool is_empty_query() const
Definition: sql_lex.h:1817
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:3059
mem_root_deque< Table_ref * > m_table_nest
Set of table references contained in outer-most join nest.
Definition: sql_lex.h:2056
bool set_context(Name_resolution_context *outer_context)
Assign a default name resolution object for this query block.
Definition: sql_lex.cc:2279
bool m_window_order_fix_field
true when resolving a window's ORDER BY or PARTITION BY, the window belonging to this query block.
Definition: sql_lex.h:2259
void set_json_agg_func_used(bool val)
Definition: sql_lex.h:1835
bool allow_merge_derived
Allow merge of immediate unnamed derived tables.
Definition: sql_lex.h:2535
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:2304
void print_select_options(String *str)
Print select options.
Definition: sql_lex.cc:3246
void set_query_result(Query_result *result)
Definition: sql_lex.h:1231
mem_root_deque< Table_ref * > sj_nests
List of semi-join nests generated for this query block.
Definition: sql_lex.h:1968
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:2025
bool add_item_to_list(Item *item)
Definition: sql_lex.cc:2564
void print(const THD *thd, String *str, enum_query_type query_type)
Definition: sql_lex.cc:3020
bool is_non_primitive_grouped() const
Definition: sql_lex.h:1319
bool exclude_from_table_unique_test
exclude this query block from unique_table() check
Definition: sql_lex.h:2285
bool sj_pullout_done
True when semi-join pull-out processing is complete.
Definition: sql_lex.h:2243
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:870
int nest_level
Nesting level of query block, outer-most query block has level 0, its subqueries have level 1,...
Definition: sql_lex.h:2199
const char * operator_string() const override
Get the node type description.
Definition: sql_lex.h:1211
Group_list_ptrs * order_list_ptrs
Definition: sql_lex.h:1981
uint n_child_sum_items
Number of Item_sum-derived objects in children and descendant SELECTs.
Definition: sql_lex.h:2168
bool save_cmd_properties(THD *thd)
Save prepared statement properties for a query block and underlying query expressions.
Definition: sql_lex.cc:4909
void set_agg_func_used(bool val)
Definition: sql_lex.h:1833
bool print_error(const THD *thd, String *str)
Print error.
Definition: sql_lex.cc:3225
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:815
Item * qualify_cond() const
Definition: sql_lex.h:1228
bool is_cacheable() const
Definition: sql_lex.h:1850
ha_rows get_offset(const THD *thd) const
Get offset for LIMIT.
Definition: sql_lex.cc:2543
void add_active_options(ulonglong options)
Adjust the active option set.
Definition: sql_lex.h:1268
ha_rows get_limit(const THD *thd) const
Get limit.
Definition: sql_lex.cc:2550
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:838
void set_base_options(ulonglong options_arg)
Set base options for a query block (and active options too)
Definition: sql_lex.h:1237
void print_update_options(String *str)
Print UPDATE options.
Definition: sql_lex.cc:3253
void print_insert(const THD *thd, String *str, enum_query_type query_type)
Print detail of the INSERT statement.
Definition: sql_lex.cc:3152
table_map all_tables_map() const
Definition: sql_lex.h:1286
bool right_joins() const
Definition: sql_lex.h:1837
JOIN * join
After optimization it is pointer to corresponding JOIN.
Definition: sql_lex.h:2054
ulonglong m_active_options
Active options.
Definition: sql_lex.h:2474
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:2006
void restore_cmd_properties()
Restore prepared statement properties for this query block and all underlying query expressions so th...
Definition: sql_lex.cc:4930
Item * m_qualify_cond
Condition to be evaluated after window functions.
Definition: sql_lex.h:2515
void cut_subtree()
Definition: sql_lex.h:1532
bool has_sj_candidates() const
Definition: sql_lex.h:1507
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:3409
bool m_empty_query
True if query block does not generate any rows before aggregation, determined during preparation (not...
Definition: sql_lex.h:2544
table_map outer_join
Bitmap of all inner tables from outer joins.
Definition: sql_lex.h:2035
size_t m_added_non_hidden_fields
Definition: sql_lex.h:1929
int m_num_grouping_sets
If the query block includes non-primitive grouping, then these modifiers are represented as grouping ...
Definition: sql_lex.h:2481
Query_block * next_select_in_list() const
Definition: sql_lex.h:1297
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:3442
auto visible_fields() const
Definition: sql_lex.h:1428
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:1357
bool is_distinct() const
Definition: sql_lex.h:1332
void set_tables_readonly()
Set associated tables as read_only, ie.
Definition: sql_lex.h:1279
mem_root_deque< Item * > fields
All expressions needed after join and filtering, ie., select list, group by list, having clause,...
Definition: sql_lex.h:1951
LEX * parent_lex
Reference to LEX that this query block belongs to.
Definition: sql_lex.h:2028
bool test_limit()
Definition: sql_lex.cc:2516
bool has_windows() const
Definition: sql_lex.h:1385
bool has_ft_funcs() const
Definition: sql_lex.h:1366
This class represents a query expression (one query block or several query blocks combined with UNION...
Definition: sql_lex.h:643
bool is_executed() const
Check state of execution of the contained query expression.
Definition: sql_lex.h:1058
bool merge_heuristic(const LEX *lex) const
True if heuristics suggest to merge this query expression.
Definition: sql_lex.cc:3954
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:500
Query_block * non_simple_result_query_block() const
Return the query block iff !is_simple() holds.
Definition: sql_lex.h:675
void reset_executed()
Reset this query expression for repeated evaluation within same execution.
Definition: sql_lex.h:1037
void change_to_access_path_without_in2exists(THD *thd)
Definition: sql_union.cc:1365
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:763
bool m_contains_except_all
Definition: sql_lex.h:826
Query_expression(enum_parsing_context parsing_context)
Construct and initialize Query_expression object.
Definition: sql_lex.cc:2211
void set_explain_marker_from(THD *thd, const Query_expression *u)
Definition: sql_lex.cc:2536
void set_prepared()
Definition: sql_lex.h:1023
bool executed
Query expression has been executed.
Definition: sql_lex.h:748
bool walk(Item_processor processor, enum_walk walk, uchar *arg)
Definition: sql_union.cc:1357
void clear_root_access_path()
Definition: sql_lex.h:891
void set_explain_marker(THD *thd, enum_parsing_context m)
Definition: sql_lex.cc:2530
bool has_top_level_distinct() const
Definition: sql_lex.h:731
unique_ptr_destroy_only< RowIterator > release_root_iterator()
Definition: sql_lex.h:881
void exclude_tree()
Exclude subtree of current unit from tree of SELECTs.
Definition: sql_lex.cc:2389
Query_term_set_op * set_operation() const
Convenience method to avoid down casting, i.e.
Definition: sql_lex.h:671
void set_executed()
Definition: sql_lex.h:1031
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:771
enum_parsing_context explain_marker
Marker for subqueries in WHERE, HAVING, ORDER BY, GROUP BY and SELECT item lists.
Definition: sql_lex.h:744
Query_term * find_blocks_query_term(const Query_block *qb) const
Definition: sql_lex.h:682
enum_parsing_context get_explain_marker(const THD *thd) const
Definition: sql_lex.cc:2524
Query_expression * next_query_expression() const
Definition: sql_lex.h:875
Query_term * query_term() const
Getter for m_query_term, q.v.
Definition: sql_lex.h:664
Query_expression * next
Intrusive double-linked list of all query expressions immediately contained within the same query blo...
Definition: sql_lex.h:648
bool create_iterators(THD *thd)
Creates iterators for the access paths created by optimize().
Definition: sql_union.cc:656
Query_block * global_parameters() const
Return the query block holding the top level ORDER BY, LIMIT and OFFSET.
Definition: sql_lex.h:818
bool explain_query_term(THD *explain_thd, const THD *query_thd, Query_term *qt)
Definition: sql_union.cc:857
Query_block * slave
The first query block in this query expression.
Definition: sql_lex.h:657
bool has_stored_program() const
Definition: sql_lex.h:795
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:1297
size_t num_visible_fields() const
Definition: sql_union.cc:1331
bool is_simple() const
Definition: sql_lex.h:793
bool optimized
All query blocks in query expression are optimized.
Definition: sql_lex.h:747
Query_block * outer_query_block() const
Definition: sql_lex.h:869
void exclude_level()
Exclude this unit and immediately contained query_block objects.
Definition: sql_lex.cc:2327
Query_block * first_query_block() const
Definition: sql_lex.h:872
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:655
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:723
enum_clean_state cleaned
cleanliness state
Definition: sql_lex.h:805
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:359
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:967
Query_expression ** prev
Definition: sql_lex.h:649
void DebugPrintQueryPlan(THD *thd, const char *keyword) const
Definition: sql_union.cc:680
void set_query_term(Query_term *qt)
Setter for m_query_term, q.v.
Definition: sql_lex.h:666
ha_rows offset_limit_cnt
Definition: sql_lex.h:823
Query_term * m_query_term
Definition: sql_lex.h:660
AccessPath * m_root_access_path
Definition: sql_lex.h:764
Mem_root_array< MaterializePathParameters::Operand > release_query_blocks_to_materialize()
See optimize().
Definition: sql_lex.h:923
bool has_any_limit() const
Checks if this query expression has limit defined.
Definition: sql_lex.cc:3886
bool ExecuteIteratorQuery(THD *thd)
Definition: sql_union.cc:1032
void set_optimized()
Definition: sql_lex.h:1027
void cleanup(bool full)
Cleanup this query expression object after preparation or one round of execution.
Definition: sql_union.cc:1206
friend bool parse_view_definition(THD *thd, Table_ref *view_ref)
Parse a view definition.
Definition: sql_view.cc:1272
mem_root_deque< Item * > * get_unit_column_types()
Get column type information for this query expression.
Definition: sql_union.cc:1327
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:743
bool replace_items(Item_transformer t, uchar *arg)
Replace all targeted items using transformer provided and info in arg.
Definition: item_subselect.cc:3318
RowIterator * root_iterator() const
Definition: sql_lex.h:880
bool is_leaf_block(Query_block *qb)
Definition: sql_lex.cc:765
bool force_create_iterators(THD *thd)
Ensures that there are iterators created for the access paths created by optimize(),...
Definition: sql_union.cc:648
Query_block * first_recursive
First query block (in this UNION) which references the CTE.
Definition: sql_lex.h:844
bool prepared
All query blocks in query expression are prepared.
Definition: sql_lex.h:746
void assert_not_fully_clean()
Asserts that none of {this unit and its children units} is fully cleaned up.
Definition: sql_union.cc:1262
void renumber_selects(LEX *lex)
Renumber query blocks of a query expression according to supplied LEX.
Definition: sql_lex.cc:3970
bool accept(Select_lex_visitor *visitor)
Definition: sql_lex.cc:3538
Query_result * query_result() const
Definition: sql_lex.h:878
ha_rows send_records
Definition: sql_lex.h:1093
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:4811
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:4803
ha_rows select_limit_cnt
Definition: sql_lex.h:823
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:773
void print(const THD *thd, String *str, enum_query_type query_type)
Definition: sql_lex.cc:2715
Table_ref * derived_table
If this query expression is underlying of a derived table, the derived table.
Definition: sql_lex.h:839
void restore_cmd_properties()
Loop over all query blocks and restore information needed for optimization, including binding data fo...
Definition: sql_lex.cc:3993
bool finalize(THD *thd)
For any non-finalized query block, finalize it so that we are allowed to create iterators.
Definition: sql_union.cc:636
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:708
bool set_limit(THD *thd, Query_block *provider)
Set limit and offset for query expression object.
Definition: sql_lex.cc:3867
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:860
bool ClearForExecution()
Do everything that would be needed before running Init() on the root iterator.
Definition: sql_union.cc:997
Item_subselect * item
Points to subquery if this query expression is used in one, otherwise NULL.
Definition: sql_lex.h:829
enum_clean_state
Values for Query_expression::cleaned.
Definition: sql_lex.h:798
@ UC_PART_CLEAN
Unit were cleaned, except JOIN and JOIN_TABs were kept for possible EXPLAIN.
Definition: sql_lex.h:800
@ UC_CLEAN
Unit completely cleaned, all underlying JOINs were freed.
Definition: sql_lex.h:802
@ UC_DIRTY
Unit isn't cleaned.
Definition: sql_lex.h:799
void invalidate()
Invalidate by nulling out pointers to other Query expressions and Query blocks.
Definition: sql_lex.cc:2429
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:334
PT_with_clause * m_with_clause
The WITH clause which is the first part of this query expression.
Definition: sql_lex.h:834
bool explain(THD *explain_thd, const THD *query_thd)
Explain query starting from this unit.
Definition: sql_union.cc:929
bool is_mergeable() const
Return true if query expression can be merged into an outer query, based on technical constraints.
Definition: sql_lex.cc:3925
Query_result * m_query_result
Object to which the result for this query expression is sent.
Definition: sql_lex.h:755
bool is_prepared() const
Check state of preparation of the contained query expression.
Definition: sql_lex.h:1050
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:854
bool is_optimized() const
Check state of optimization of the contained query expression.
Definition: sql_lex.h:1052
void set_query_result(Query_result *res)
Set new query result object for this query expression.
Definition: sql_lex.h:928
void include_down(LEX *lex, Query_block *outer)
Include a query expression below a query block.
Definition: sql_lex.cc:3899
void destroy()
Destroy contained objects, in particular temporary tables which may have their own mem_roots.
Definition: sql_union.cc:1237
mem_root_deque< Item * > * get_field_list()
Get field list for this query expression.
Definition: sql_union.cc:1345
bool execute(THD *thd)
Execute a query expression that may be a UNION and/or have an ordered result.
Definition: sql_union.cc:1175
bool clear_correlated_query_blocks()
Empties all correlated query blocks defined within the query expression; that is, correlated CTEs def...
Definition: sql_union.cc:983
bool save_cmd_properties(THD *thd)
Save prepared statement properties for a query expression and underlying query blocks.
Definition: sql_lex.cc:3982
bool m_has_stored_program
Definition: sql_lex.h:750
AccessPath * root_access_path() const
Definition: sql_lex.h:884
uint8 uncacheable
result of this query can't be cached, bit field, can be : UNCACHEABLE_DEPENDENT UNCACHEABLE_RAND UNCA...
Definition: sql_lex.h:787
bool unfinished_materialization() const
See optimize().
Definition: sql_lex.h:919
void clear_execution()
Clear execution state, needed before new execution of prepared statement.
Definition: sql_lex.h:1042
bool is_recursive() const
Definition: sql_lex.h:1110
Definition: query_result.h:191
Definition: sql_union.h:40
Definition: query_result.h:60
Definition: sql_lex.h:2760
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:3287
bool uses_stored_routines() const
true if the parsed tree contains references to stored procedures, triggers or functions,...
Definition: sql_lex.h:3334
void set_stmt_row_injection()
Flag the statement as a row injection.
Definition: sql_lex.h:3134
std::unique_ptr< malloc_unordered_map< std::string, Sroutine_hash_entry * > > sroutines
Definition: sql_lex.h:2791
void set_stmt_unsafe(enum_binlog_stmt_unsafe unsafe_type)
Flag the current (top-level) statement as unsafe.
Definition: sql_lex.h:3083
static const char * stmt_accessed_table_string(enum_stmt_accessed_table accessed_table)
Definition: sql_lex.h:3187
enum_binlog_stmt_type
Enumeration listing special types of statements.
Definition: sql_lex.h:3350
@ 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:3355
@ BINLOG_STMT_TYPE_COUNT
The last element of this enumeration type.
Definition: sql_lex.h:3358
Table_ref ** query_tables_last
Definition: sql_lex.h:2774
bool is_stmt_unsafe_with_mixed_mode() const
Definition: sql_lex.h:3340
void reset_query_tables_list(bool init)
Definition: sql_lex.cc:3633
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:3056
~Query_tables_list()=default
enum_sql_command sql_command
SQL command for this statement.
Definition: sql_lex.h:2770
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:3098
uint32 get_stmt_unsafe_flags() const
Return a binary combination of all unsafe warnings for the statement.
Definition: sql_lex.h:3111
void set_stmt_unsafe_with_mixed_mode()
Definition: sql_lex.h:3339
Query_tables_list()=default
bool is_stmt_unsafe() const
Determine if this statement is marked as unsafe.
Definition: sql_lex.h:3070
bool is_stmt_unsafe(enum_binlog_stmt_unsafe unsafe)
Definition: sql_lex.h:3072
uint table_count
Number of tables which were open by open_tables() and to be locked by lock_tables().
Definition: sql_lex.h:2835
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:3382
enum_stmt_accessed_table
Definition: sql_lex.h:3142
@ STMT_READS_TEMP_TRANS_TABLE
Definition: sql_lex.h:3157
@ STMT_WRITES_TEMP_TRANS_TABLE
Definition: sql_lex.h:3174
@ STMT_WRITES_TRANS_TABLE
Definition: sql_lex.h:3166
@ STMT_WRITES_TEMP_NON_TRANS_TABLE
Definition: sql_lex.h:3178
@ STMT_READS_TRANS_TABLE
Definition: sql_lex.h:3147
@ STMT_READS_TEMP_NON_TRANS_TABLE
Definition: sql_lex.h:3162
@ STMT_ACCESS_TABLE_COUNT
Definition: sql_lex.h:3183
@ STMT_READS_NON_TRANS_TABLE
Definition: sql_lex.h:3152
@ STMT_WRITES_NON_TRANS_TABLE
Definition: sql_lex.h:3170
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:3395
uint sroutines_list_own_elements
Definition: sql_lex.h:2803
void mark_as_requiring_prelocking(Table_ref **tables_own_last)
Definition: sql_lex.h:2861
bool is_stmt_row_injection() const
Determine if this statement is a row injection.
Definition: sql_lex.h:3122
@ START_SROUTINES_HASH_SIZE
Definition: sql_lex.h:2789
enum_lock_tables_state lock_tables_state
Definition: sql_lex.h:2823
void set_query_tables_list(Query_tables_list *state)
Definition: sql_lex.h:2847
void set_using_match()
Definition: sql_lex.h:3336
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:3264
SQL_I_List< Sroutine_hash_entry > sroutines_list
Definition: sql_lex.h:2801
void destroy_query_tables_list()
Definition: sql_lex.cc:3678
Sroutine_hash_entry ** sroutines_list_own_last
Definition: sql_lex.h:2802
bool using_match
It will be set true if 'MATCH () AGAINST' is used in the statement.
Definition: sql_lex.h:3387
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:3245
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:3062
enum_binlog_stmt_unsafe
All types of unsafe statements.
Definition: sql_lex.h:2891
@ BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION
Using some functions is unsafe (e.g., UUID).
Definition: sql_lex.h:2923
@ 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:2936
@ BINLOG_STMT_UNSAFE_COUNT
Definition: sql_lex.h:3050
@ BINLOG_STMT_UNSAFE_XA
XA transactions and statements.
Definition: sql_lex.h:3023
@ 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:2992
@ 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:3030
@ BINLOG_STMT_UNSAFE_NOWAIT
Definition: sql_lex.h:3018
@ BINLOG_STMT_UNSAFE_FULLTEXT_PLUGIN
Using a plugin is unsafe.
Definition: sql_lex.h:3016
@ 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:3005
@ 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:3011
@ BINLOG_STMT_UNSAFE_CREATE_SELECT_WITH_GIPK
Generating invisible primary key for a table created using CREATE TABLE... SELECT....
Definition: sql_lex.h:3047
@ BINLOG_STMT_UNSAFE_NONTRANS_AFTER_TRANS
Mixing transactional and non-transactional statements are unsafe if non-transactional reads or writes...
Definition: sql_lex.h:2930
@ BINLOG_STMT_UNSAFE_SYSTEM_VARIABLE
Using most system variables is unsafe, because slave may run with different options than master.
Definition: sql_lex.h:2919
@ 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:2949
@ 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:2942
@ BINLOG_STMT_UNSAFE_AUTOINC_COLUMNS
Inserting into an autoincrement column in a stored routine is unsafe.
Definition: sql_lex.h:2910
@ BINLOG_STMT_UNSAFE_SKIP_LOCKED
Definition: sql_lex.h:3017
@ 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:2977
@ 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:3038
@ 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:2956
@ BINLOG_STMT_UNSAFE_LIMIT
SELECT..LIMIT is unsafe because the set of rows returned cannot be predicted.
Definition: sql_lex.h:2896
@ 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:2970
@ 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:2984
@ BINLOG_STMT_UNSAFE_UDF
Using a UDF (user-defined function) is unsafe.
Definition: sql_lex.h:2914
@ 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:2999
@ 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:2963
@ BINLOG_STMT_UNSAFE_SYSTEM_TABLE
Access to log tables is unsafe because slave and master probably log different things.
Definition: sql_lex.h:2901
Query_tables_list & operator=(Query_tables_list &&)=default
bool has_stored_functions
Does this LEX context have any stored functions.
Definition: sql_lex.h:2808
Table_ref * query_tables
Definition: sql_lex.h:2772
bool requires_prelocking()
Definition: sql_lex.h:2860
void chop_off_not_own_tables()
Definition: sql_lex.h:2868
Table_ref * first_not_own_table()
Definition: sql_lex.h:2865
Table_ref ** query_tables_own_last
Definition: sql_lex.h:2781
bool get_using_match()
Definition: sql_lex.h:3337
uint32 binlog_stmt_flags
Bit field indicating the type of statement.
Definition: sql_lex.h:3376
bool is_query_tables_locked() const
Definition: sql_lex.h:2824
enum_lock_tables_state
Locking state of tables in this particular statement.
Definition: sql_lex.h:2822
@ LTS_LOCKED
Definition: sql_lex.h:2822
@ LTS_NOT_LOCKED
Definition: sql_lex.h:2822
void add_to_query_tables(Table_ref *table)
Definition: sql_lex.h:2856
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:824
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:2602
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:2417
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:227
Using this class is fraught with peril, and you need to be very careful when doing so.
Definition: sql_string.h:169
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:1002
Class representing a table function.
Definition: table_function.h:53
Definition: sql_lex.h:313
Table_ident(Query_expression *s)
This constructor is used only for the case when we create a derived table.
Definition: sql_lex.h:334
void change_db(const char *db_name)
Definition: sql_lex.h:353
Query_expression * sel
Definition: sql_lex.h:317
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:324
bool is_table_function() const
Definition: sql_lex.h:350
bool is_derived_table() const
Definition: sql_lex.h:352
Table_ident(LEX_CSTRING &table_arg, Table_function *table_func_arg)
Definition: sql_lex.h:344
LEX_CSTRING table
Definition: sql_lex.h:316
Table_function * table_function
Definition: sql_lex.h:318
LEX_CSTRING db
Definition: sql_lex.h:315
Table_ident(const LEX_CSTRING &db_arg, const LEX_CSTRING &table_arg)
Definition: sql_lex.h:322
Table_ref * first_leaf_table()
Return first leaf table of a base table or a view/derived table.
Definition: table.h:3362
Table_ref * next_leaf
Definition: table.h:3850
Table_ref * next_global
Definition: table.h:3634
Used for storing information associated with generated column, default values generated from expressi...
Definition: field.h:477
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
Element_type & front()
Returns the first element in the deque.
Definition: mem_root_deque.h:256
void pop_front()
Removes the first element from the deque.
Definition: mem_root_deque.h:249
bool empty() const
Definition: mem_root_deque.h:462
Definition: partition_info.h:209
sp_head represents one instance of a stored program.
Definition: sp_head.h:389
Definition: sp_head.h:124
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:268
uint to_uint(enum_sp_type val)
Definition: sql_lex.h:251
const char * index_hint_type_name[]
Definition: sql_lex.cc:136
enum_sp_data_access
Definition: sql_lex.h:209
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:2196
Acl_type lex_type_to_acl_type(ulong lex_type)
Definition: sql_lex.cc:5285
#define TYPE_ENUM_LIBRARY
Definition: sql_lex.h:265
bool db_is_default_db(const char *db, size_t db_len, const THD *thd)
Definition: sql_lex.cc:2919
bool check_select_for_locking_clause(THD *)
enum_sp_type acl_type_to_enum_sp_type(Acl_type type)
Definition: sql_lex.cc:5299
sub_select_type
Definition: sql_lex.h:481
#define TYPE_ENUM_PROCEDURE
Definition: sql_lex.h:262
execute_only_in_secondary_reasons
Definition: sql_lex.h:3924
enum_alter_user_attribute
Definition: sql_lex.h:299
void binlog_unsafe_map_init()
Definition: sql_lex.cc:5140
Bounds_checked_array< Item * > Ref_item_array
Definition: sql_lex.h:1148
longlong to_longlong(enum_sp_type val)
Definition: sql_lex.h:247
enum_view_create_mode
Definition: sql_lex.h:293
bool walk_join_list(mem_root_deque< Table_ref * > &list, std::function< bool(Table_ref *)> action)
Definition: sql_resolver.cc:2712
execute_only_in_hypergraph_reasons
Definition: sql_lex.h:3937
bool is_union() const
Definition: sql_lex.h:2550
#define TYPE_ENUM_INVALID
Definition: sql_lex.h:266
uint binlog_unsafe_map[256]
Definition: sql_lex.cc:5045
void lex_end(LEX *lex)
Call this function after preparation and execution of a query.
Definition: sql_lex.cc:536
enum_sp_type to_sp_type(longlong val)
Definition: sql_lex.h:239
Acl_type enum_sp_type_to_acl_type(enum_sp_type type)
Definition: sql_lex.cc:5313
enum_explain_type
Query_block type enum.
Definition: sql_lex.h:1154
#define TYPE_ENUM_FUNCTION
Definition: sql_lex.h:261
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:226
void lex_free(void)
Definition: sql_lex.cc:165
bool is_set_operation() const
Definition: sql_lex.h:2557
constexpr const int MAX_SELECT_NESTING
Definition: sql_lex.h:141
void trim_whitespace(const CHARSET_INFO *cs, LEX_STRING *str)
Definition: sql_lex.cc:2165
bool is_lex_native_function(const LEX_STRING *name)
Check if name is a sql function.
Definition: sql_lex.cc:966
uchar index_clause_map
Definition: sql_lex.h:492
int my_sql_parser_lex(MY_SQL_PARSER_STYPE *, POS *, class THD *)
yylex() function implementation for the main parser
Definition: sql_lex.cc:1367
enum_sp_suid_behaviour
Definition: sql_lex.h:203
const size_t INITIAL_LEX_PLUGIN_LIST_SIZE
Definition: sql_lex.h:140
bool is_keyword(const char *name, size_t len)
Definition: sql_lex.cc:951
const LEX_CSTRING sp_data_access_name[]
Definition: sql_lex.h:282
enum_keep_diagnostics
Definition: sql_lex.h:195
bool lex_start(THD *thd)
Call lex_start() before every query that is to be prepared and executed.
Definition: sql_lex.cc:512
struct struct_replica_connection LEX_REPLICA_CONNECTION
@ SP_READS_SQL_DATA
Definition: sql_lex.h:213
@ SP_MODIFIES_SQL_DATA
Definition: sql_lex.h:214
@ SP_NO_SQL
Definition: sql_lex.h:212
@ SP_DEFAULT_ACCESS
Definition: sql_lex.h:210
@ SP_CONTAINS_SQL
Definition: sql_lex.h:211
@ UNSPECIFIED_TYPE
Definition: sql_lex.h:482
@ DERIVED_TABLE_TYPE
Definition: sql_lex.h:484
@ GLOBAL_OPTIONS_TYPE
Definition: sql_lex.h:483
@ TABLESAMPLE
Definition: sql_lex.h:3927
@ OUTFILE_OBJECT_STORE
Definition: sql_lex.h:3928
@ SUPPORTED_IN_PRIMARY
Definition: sql_lex.h:3925
@ CUBE
Definition: sql_lex.h:3926
@ TEMPORARY_TABLE_USAGE
Definition: sql_lex.h:3930
@ TEMPORARY_TABLE_CREATION
Definition: sql_lex.h:3929
@ ALTER_USER_COMMENT_NOT_USED
@ QUALIFY_CLAUSE
Definition: sql_lex.h:3939
@ SUPPORTED_IN_BOTH_OPTIMIZERS
Definition: sql_lex.h:3938
@ EXPLAIN_INTERSECT_RESULT
@ EXPLAIN_total
fake type, total number of all valid types
@ NO_COMMENT
Not parsing comments.
Definition: sql_lex.h:3418
@ DISCARD_COMMENT
Parsing comments that need to be discarded.
Definition: sql_lex.h:3434
@ PRESERVE_COMMENT
Parsing comments that need to be preserved.
Definition: sql_lex.h:3425
@ SP_IS_SUID
Definition: sql_lex.h:206
@ SP_IS_DEFAULT_SUID
Definition: sql_lex.h:204
@ SP_IS_NOT_SUID
Definition: sql_lex.h:205
@ DA_KEEP_UNSPECIFIED
keep semantics is unspecified
Definition: sql_lex.h:200
@ DA_KEEP_DIAGNOSTICS
keep the diagnostics area
Definition: sql_lex.h:197
@ DA_KEEP_PARSE_ERROR
keep diagnostics area after parse error
Definition: sql_lex.h:199
@ DA_KEEP_COUNTS
keep @warning_count / @error_count
Definition: sql_lex.h:198
@ DA_KEEP_NOTHING
keep nothing
Definition: sql_lex.h:196
void my_error(int nr, myf MyFlags,...)
Fill in and print a previously registered error message.
Definition: my_error.cc:216
char * strmake_root(MEM_ROOT *root, const char *str, size_t len)
Definition: my_alloc.cc:286
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:4287
bool optimize(THD *thd, bool finalize_access_paths)
Optimize a query block and all inner query expressions.
Definition: sql_select.cc:2128
bool check_column_privileges(THD *thd)
Check privileges for all columns referenced from query block.
Definition: sql_select.cc:2170
bool check_privileges_for_subqueries(THD *thd)
Check privileges for column references in subqueries of a query block.
Definition: sql_select.cc:2275
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:8809
Item * single_visible_field() const
Definition: sql_resolver.cc:4928
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:4038
void delete_unused_merged_columns(mem_root_deque< Table_ref * > *tables)
Delete unused columns from merged tables.
Definition: sql_resolver.cc:5334
bool check_only_full_group_by(THD *thd)
Runs checks mandated by ONLY_FULL_GROUP_BY.
Definition: sql_resolver.cc:4558
void clear_sj_expressions(NESTED_JOIN *nested_join)
Remove semijoin condition for this query block.
Definition: sql_resolver.cc:2261
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:805
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:8256
bool record_join_nest_info(mem_root_deque< Table_ref * > *tables)
Record join nest info in the select block.
Definition: sql_resolver.cc:2033
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:7765
bool limit_offset_preserves_first_row() const
Check if the LIMIT/OFFSET clause is specified in a way that makes it always preserve the first row re...
Definition: sql_resolver.cc:1421
void fix_after_pullout(Query_block *parent_query_block, Query_block *removed_query_block)
Definition: sql_resolver.cc:2220
bool transform_grouped_to_derived(THD *thd, bool *break_off)
Minion of transform_scalar_subqueries_to_join_with_derived.
Definition: sql_resolver.cc:6677
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:2598
bool setup_conds(THD *thd)
Resolve WHERE condition and join conditions.
Definition: sql_resolver.cc:1500
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:3975
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:1561
void remove_hidden_items()
Remove hidden items from select list.
Definition: sql_resolver.cc:5378
void remap_tables(THD *thd)
Re-map table numbers for all tables in a query block.
Definition: sql_resolver.cc:1330
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:3990
void prune_sj_exprs(Item_func_eq *item, mem_root_deque< Table_ref * > *nest)
Recursively look for removed item inside any nested joins' sj_{inner,outer}_exprs.
Definition: sql_resolver.cc:5313
void propagate_unique_test_exclusion()
Propagate exclusion from table uniqueness test into subqueries.
Definition: sql_resolver.cc:3957
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:4914
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:2892
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:2206
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:9083
bool setup_wild(THD *thd)
Expand all '*' in list of expressions with the matching column references.
Definition: sql_resolver.cc:1443
bool add_inner_func_calls_to_select_list(THD *thd, Lifted_expressions_map *lifted_exprs)
Definition: sql_resolver.cc:7675
bool remove_aggregates(THD *thd, Query_block *select)
A minion of transform_grouped_to_derived.
Definition: sql_resolver.cc:6482
bool prepare_values(THD *thd)
Prepare a table value constructor query block for optimization.
Definition: sql_resolver.cc:723
bool resolve_placeholder_tables(THD *thd, bool apply_semijoin)
Resolve derived table, view, table function information for a query block.
Definition: sql_resolver.cc:1363
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:1750
void update_used_tables()
Update used tables information for all local expressions.
Definition: sql_resolver.cc:915
bool resolve_limits(THD *thd)
Resolve OFFSET and LIMIT clauses.
Definition: sql_resolver.cc:968
int group_list_size() const
Definition: sql_resolver.cc:4708
bool empty_order_list(Query_block *sl)
Empty the ORDER list.
Definition: sql_resolver.cc:4135
bool prepare(THD *thd, mem_root_deque< Item * > *insert_field_list)
Prepare query block for optimization.
Definition: sql_resolver.cc:182
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:1617
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:1207
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:7615
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:5177
bool field_list_is_empty() const
Definition: sql_resolver.cc:4944
Item ** add_hidden_item(Item *item)
Add item to the hidden part of select list.
Definition: sql_resolver.cc:5369
void merge_contexts(Query_block *inner)
Merge name resolution context objects of a subquery into its parent.
Definition: sql_resolver.cc:4007
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:7560
bool transform_table_subquery_to_join_with_derived(THD *thd, Item_exists_subselect *subq_pred)
Replace a table subquery ([NOT] {IN, EXISTS}, $cmp$ ALL, $cmp$ ANY) with a join to a derived table.
Definition: sql_resolver.cc:5520
bool flatten_subqueries(THD *thd)
Convert semi-join subquery predicates into semi-join join nests.
Definition: sql_resolver.cc:3720
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:7176
size_t num_visible_fields() const
Definition: sql_resolver.cc:4940
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:4672
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:5394
bool merge_derived(THD *thd, Table_ref *derived_table)
Merge derived table into query block.
Definition: sql_resolver.cc:3355
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:1244
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:8543
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:6599
bool setup_order_final(THD *thd)
Do final setup of ORDER BY clause, after the query block is fully resolved.
Definition: sql_resolver.cc:4592
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:7463
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:7329
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:8181
bool allocate_grouping_sets(THD *thd)
Initializes the grouping set if the query block includes GROUP BY modifiers.
Definition: sql_resolver.cc:2643
bool setup_group(THD *thd)
Resolve and set up the GROUP BY list.
Definition: sql_resolver.cc:4639
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:6386
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:7855
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:674
bool resolve_rollup(THD *thd)
Resolve items in SELECT list and ORDER BY list for rollup processing.
Definition: sql_resolver.cc:5082
bool has_wfs()
Definition: sql_resolver.cc:4716
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:8288
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:2287
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:4990
bool populate_grouping_sets(THD *thd)
Populates the grouping sets if the query block includes non-primitive grouping.
Definition: sql_resolver.cc:2691
bool add_joined_table(Table_ref *table)
Add a table to the current join list.
Definition: sql_parse.cc:6412
void set_lock_for_tables(thr_lock_type lock_type)
Set lock for all tables in current query block.
Definition: sql_parse.cc:6443
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:5826
Table_ref * end_nested_join()
End a nested join table list.
Definition: sql_parse.cc:6327
bool init_nested_join(THD *thd)
Initialize a new table list for a nested join.
Definition: sql_parse.cc:6300
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:6354
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:6037
void set_lock_for_table(const Lock_descriptor &descriptor, Table_ref *table)
Definition: sql_parse.cc:6420
Table_ref * nest_last_join(THD *thd, size_t table_cnt=2)
Nest last join operations.
Definition: sql_parse.cc:6394
struct PSI_digest_locker PSI_digest_locker
Definition: psi_statement_bits.h:112
static int flags[50]
Definition: hp_test1.cc:40
static int flag
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:718
Subquery_strategy
Classes that represent predicates over table subqueries: [NOT] EXISTS, [NOT] IN, ANY/SOME and ALL.
Definition: item_subselect.h:437
#define T
Definition: jit_executor_value.cc:373
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:1217
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:174
static const CHARSET_INFO * charset_info
Definition: mysql.cc:249
Common definition between mysql server & client.
char * octet2hex(char *to, const char *str, unsigned int len)
static char * where
Definition: mysqldump.cc:153
const char * collation
Definition: audit_api_message_emit.cc:184
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1084
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
void destroy_content_tree(Content_tree_node *root)
Deletes the content tree for given JSON duality view.
Definition: content_tree.cc:388
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:173
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:3256
@ ISO_REPEATABLE_READ
Definition: handler.h:3259
enum_view_type
Definition: table.h:2611
index_hint_type
Definition: table.h:1424
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:3524
#define IL_GTE_REPEATABLE
Definition: sql_lex.h:3236
void get_select_options_str(ulonglong options, std::string *str)
Definition: sql_lex.cc:5263
#define TRX_CACHE_EMPTY
Definition: sql_lex.h:3230
#define IL_LT_REPEATABLE
Definition: sql_lex.h:3234
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:5223
#define BINLOG_DIRECT_OFF
Definition: sql_lex.h:3227
bool WalkQueryExpression(Query_expression *query_expr, enum_walk walk, T &&functor)
Definition: sql_lex.h:5261
#define BINLOG_DIRECT_ON
Definition: sql_lex.h:3224
bool is_invalid_string(const LEX_CSTRING &string_val, const CHARSET_INFO *charset_info)
(End of group GROUP_PARSER)
Definition: sql_lex.h:5170
bool accept_for_order(SQL_I_List< ORDER > orders, Select_lex_visitor *visitor)
Definition: sql_lex.cc:3530
#define TRX_CACHE_NOT_EMPTY
Definition: sql_lex.h:3232
bool accept_for_join(mem_root_deque< Table_ref * > *tables, Select_lex_visitor *visitor)
Definition: sql_lex.cc:3552
bool accept_table(Table_ref *t, Select_lex_visitor *visitor)
Definition: sql_lex.cc:3560
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:1131
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:238
Definition: m_ctype.h:421
const char * csname
Definition: m_ctype.h:426
Definition: handler.h:3879
Struct to hold information about the table that should be created.
Definition: handler.h:3272
Minion class under Collect_scalar_subquery_info ("Css").
Definition: item.h:2942
Definition: sql_lex.h:477
bool all
Definition: sql_lex.h:478
Structure to hold parameters for CHANGE REPLICATION SOURCE, START REPLICA, and STOP REPLICA.
Definition: sql_lex.h:370
void initialize()
Initializes everything to zero/NULL/empty.
Definition: sql_lex.cc:5003
uint port
Definition: sql_lex.h:379
const char * channel
Definition: sql_lex.h:386
bool replica_until
Definition: sql_lex.h:392
char * bind_addr
Definition: sql_lex.h:378
enum LEX_SOURCE_INFO::@186 ssl_verify_server_cert
char * network_namespace
Definition: sql_lex.h:378
char * ssl_crl
Definition: sql_lex.h:408
char * public_key_path
Definition: sql_lex.h:419
char * view_id
Definition: sql_lex.h:385
enum LEX_SOURCE_INFO::@186 m_source_connection_auto_failover
ulong relay_log_pos
Definition: sql_lex.h:421
char * tls_version
Definition: sql_lex.h:408
char * relay_log_name
Definition: sql_lex.h:420
enum LEX_SOURCE_INFO::@186 heartbeat_opt
@ LEX_MI_ANONYMOUS_TO_GTID_UUID
Definition: sql_lex.h:461
@ LEX_MI_ANONYMOUS_TO_GTID_LOCAL
Definition: sql_lex.h:460
@ LEX_MI_ANONYMOUS_TO_GTID_UNCHANGED
Definition: sql_lex.h:458
@ LEX_MI_ANONYMOUS_TO_GTID_OFF
Definition: sql_lex.h:459
int sql_delay
Definition: sql_lex.h:381
float heartbeat_period
Definition: sql_lex.h:380
char * tls_ciphersuites_string
Definition: sql_lex.h:418
ulong server_id
Definition: sql_lex.h:383
enum LEX_SOURCE_INFO::@186 m_gtid_only
ulong retry_count
Definition: sql_lex.h:383
char * ssl_ca
Definition: sql_lex.h:407
ulonglong pos
Definition: sql_lex.h:382
uint connect_retry
Definition: sql_lex.h:379
LEX_SOURCE_INFO & operator=(const LEX_SOURCE_INFO &)
char * ssl_cert
Definition: sql_lex.h:407
Prealloced_array< ulong, 2 > repl_ignore_server_ids
Definition: sql_lex.h:424
@ LEX_MI_UNCHANGED
Definition: sql_lex.h:400
@ LEX_MI_DISABLE
Definition: sql_lex.h:401
@ LEX_MI_ENABLE
Definition: sql_lex.h:402
char * ssl_key
Definition: sql_lex.h:407
@ UNTIL_SQL_AFTER_GTIDS
Definition: sql_lex.h:389
@ UNTIL_SQL_BEFORE_GTIDS
Definition: sql_lex.h:388
enum LEX_SOURCE_INFO::@186 port_opt
void set_unspecified()
Sets all fields to their "unspecified" value.
Definition: sql_lex.cc:5040
char * user
Definition: sql_lex.h:378
int require_row_format
Flag indicating if row format should be enforced for this channel event stream.
Definition: sql_lex.h:439
uint zstd_compression_level
Definition: sql_lex.h:423
char * log_file_name
Definition: sql_lex.h:378
enum_tls_ciphersuites
Definition: sql_lex.h:412
@ SPECIFIED_NULL
Definition: sql_lex.h:414
@ SPECIFIED_STRING
Definition: sql_lex.h:415
@ UNSPECIFIED
Definition: sql_lex.h:413
char * password
Definition: sql_lex.h:378
const char * privilege_checks_hostname
Definition: sql_lex.h:434
enum LEX_SOURCE_INFO::@188 assign_gtids_to_anonymous_transactions_type
char * host
Definition: sql_lex.h:378
enum LEX_SOURCE_INFO::@186 get_public_key
char * compression_algorithm
Definition: sql_lex.h:422
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:429
char * ssl_cipher
Definition: sql_lex.h:407
enum enum_tls_ciphersuites tls_ciphersuites
Definition: sql_lex.h:417
char * gtid
Definition: sql_lex.h:384
@ LEX_MI_PK_CHECK_OFF
Definition: sql_lex.h:453
@ LEX_MI_PK_CHECK_STREAM
Definition: sql_lex.h:451
@ LEX_MI_PK_CHECK_UNCHANGED
Definition: sql_lex.h:450
@ LEX_MI_PK_CHECK_ON
Definition: sql_lex.h:452
@ LEX_MI_PK_CHECK_GENERATE
Definition: sql_lex.h:454
enum LEX_SOURCE_INFO::@185 gtid_until_condition
LEX_SOURCE_INFO()
Definition: sql_lex.h:375
enum LEX_SOURCE_INFO::@186 retry_count_opt
bool until_after_gaps
Definition: sql_lex.h:391
enum LEX_SOURCE_INFO::@186 auto_position
LEX_SOURCE_INFO(const LEX_SOURCE_INFO &)
enum LEX_SOURCE_INFO::@186 ssl
enum LEX_SOURCE_INFO::@187 require_table_primary_key_check
Identifies what is the slave policy on primary keys in tables.
const char * assign_gtids_to_anonymous_transactions_manual_uuid
Definition: sql_lex.h:464
char * ssl_crlpath
Definition: sql_lex.h:408
bool for_channel
Definition: sql_lex.h:393
enum LEX_SOURCE_INFO::@186 repl_ignore_server_ids_opt
char * ssl_capath
Definition: sql_lex.h:407
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:434
The LEX object currently serves three different purposes:
Definition: sql_lex.h:3994
bool export_result_to_object_storage() const
Definition: sql_lex.h:4188
execute_only_in_secondary_reasons get_not_supported_in_primary_reason() const
Definition: sql_lex.h:4215
void set_uncacheable(Query_block *curr_query_block, uint8 cause)
Set the current query as uncacheable.
Definition: sql_lex.h:4720
LEX_USER * grant_user
Definition: sql_lex.h:4109
bool binlog_need_explicit_defaults_ts
Definition: sql_lex.h:4637
uint grant_tot_col
Definition: sql_lex.h:4360
LEX_STRING prepared_stmt_code
Definition: sql_lex.h:4430
const char * x509_issuer
Definition: sql_lex.h:4102
bool all_privileges
Definition: sql_lex.h:4438
bool is_exec_started() const
Definition: sql_lex.h:4534
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:4622
bool ignore_unknown_user
refers to optional IGNORE UNKNOWN USER clause in REVOKE sql.
Definition: sql_lex.h:4391
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:4349
void restore_backup_query_tables_list(Query_tables_list *backup)
Definition: sql_lex.cc:4317
execute_only_in_secondary_reasons m_execute_only_in_secondary_engine_reason
Definition: sql_lex.h:4011
uint8 create_view_check
Definition: sql_lex.h:4371
Prealloced_array< plugin_ref, INITIAL_LEX_PLUGIN_LIST_SIZE > Plugins_array
Definition: sql_lex.h:4121
bool new_top_level_query()
Create top-level query expression and query block.
Definition: sql_lex.cc:780
bool need_correct_ident()
Definition: sql_lex.cc:3809
execute_only_in_hypergraph_reasons m_execute_only_in_hypergraph_reason
Definition: sql_lex.h:4019
bool can_execute_only_in_hypergraph_optimizer() const
Definition: sql_lex.h:4236
LEX_ALTER alter_password
Definition: sql_lex.h:4110
bool m_broken
see mark_broken()
Definition: sql_lex.h:4444
const char * ssl_cipher
Definition: sql_lex.h:4102
bool table_or_sp_used()
Definition: sql_lex.cc:4333
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:704
void first_lists_tables_same()
Definition: sql_lex.cc:4207
bool validate_use_in_old_optimizer()
Validates if a query can run with the old optimizer.
Definition: sql_lex.cc:5241
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:4840
bool was_replication_command_executed() const
Definition: sql_lex.h:4874
LEX_CSTRING prepared_stmt_name
Definition: sql_lex.h:4425
List< Name_resolution_context > context_stack
Definition: sql_lex.h:4282
bool autocommit
Definition: sql_lex.h:4393
Table_ref * insert_table
Table being inserted into (may be a view)
Definition: sql_lex.h:4125
void destroy()
Destroy contained objects, but not the LEX object itself.
Definition: sql_lex.h:4650
Query_result * result
Definition: sql_lex.h:4105
void destroy_values_map()
Definition: sql_lex.h:4175
void set_was_replication_command_executed()
Definition: sql_lex.h:4878
void set_current_query_block(Query_block *select)
Definition: sql_lex.h:4034
uint start_transaction_opt
Definition: sql_lex.h:4368
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:812
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:4585
HA_CHECK_OPT check_opt
Definition: sql_lex.h:4286
bool drop_if_exists
Definition: sql_lex.h:4378
Table_ref * unlink_first_table(bool *link_to_local)
Definition: sql_lex.cc:4157
bool is_metadata_used() const
Check if the current statement uses meta-data (uses a table or a stored routine).
Definition: sql_lex.h:4573
bool is_lex_started
Definition: sql_lex.h:4624
bool is_explain() const
Definition: sql_lex.h:4041
char * to_log
Definition: sql_lex.h:4101
bool no_write_to_binlog
Definition: sql_lex.h:4394
bool drop_temporary
Definition: sql_lex.h:4392
void insert_values_map(Item_field *f1, Field *f2)
Definition: sql_lex.h:4170
Plugins_array plugins
Definition: sql_lex.h:4122
List< LEX_USER > * default_roles
Definition: sql_lex.h:4144
bool m_has_udf
True if statement references UDF functions.
Definition: sql_lex.h:4409
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:4502
bool has_external_tables() const
Definition: sql_lex.h:4421
bool is_ignore() const
Definition: sql_lex.h:4415
void set_has_external_tables()
Definition: sql_lex.h:4420
Alter_info * alter_info
Definition: sql_lex.h:4423
const char * stmt_definition_end
Definition: sql_lex.h:4614
void set_exec_completed()
Definition: sql_lex.h:4547
List< LEX_CSTRING > dynamic_privileges
Definition: sql_lex.h:4143
ulonglong m_statement_options
Statement context for Query_block::make_active_options.
Definition: sql_lex.h:4472
List< LEX_COLUMN > columns
Definition: sql_lex.h:4142
void cleanup_after_one_table_open()
Definition: sql_lex.cc:4276
void reset_has_external_tables()
Definition: sql_lex.h:4419
Query_expression * unit
Outer-most query expression.
Definition: sql_lex.h:3997
bool verbose
Definition: sql_lex.h:4394
enum_view_create_mode create_view_mode
Definition: sql_lex.h:4355
bool has_values_map() const
Definition: sql_lex.h:4192
Opt_hints_global * opt_hints_global
Definition: sql_lex.h:4117
void set_splitting_window_expression(bool v)
Definition: sql_lex.h:4090
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:5087
List< LEX_USER > users_list
Definition: sql_lex.h:4141
bool can_execute_only_in_secondary_engine() const
Definition: sql_lex.h:4200
bool is_crossed_connection_memory_status_limit() const
Definition: sql_lex.h:4552
List< Item_param > param_list
List of placeholders ('?') for parameters of a prepared statement.
Definition: sql_lex.h:4166
bool grant_if_exists
refers to optional IF EXISTS clause in REVOKE sql.
Definition: sql_lex.h:4384
bool splitting_window_expression() const
Definition: sql_lex.h:4086
dd::info_schema::Table_statistics m_IS_table_stats
IS schema queries read some dynamic table statistics from SE.
Definition: sql_lex.h:4825
LEX_RESET_REPLICA reset_replica_info
Definition: sql_lex.h:4293
enum enum_duplicates duplicates
Definition: sql_lex.h:4352
bool is_single_level_stmt()
check if the statement is a single-level join
Definition: sql_lex.h:4804
bool m_extended_show
Definition: sql_lex.h:4396
USER_RESOURCES mqh
Definition: sql_lex.h:4292
bool using_hypergraph_optimizer() const
Whether the currently-running statement should be prepared and executed with the hypergraph optimizer...
Definition: sql_lex.h:4052
bool only_view
Definition: sql_lex.h:4595
bool m_using_secondary_engine
Definition: sql_lex.h:4096
bool save_cmd_properties(THD *thd)
Definition: sql_lex.h:4746
sp_pcontext * sp_current_parsing_ctx
Current SP parsing context.
Definition: sql_lex.h:4467
bool will_contextualize
Used to inform the parser whether it should contextualize the parse tree.
Definition: sql_lex.h:4643
st_sp_chistics sp_chistics
Definition: sql_lex.h:4593
KEY_CREATE_INFO key_create_info
Definition: sql_lex.h:4288
enum enum_tx_isolation tx_isolation
Definition: sql_lex.h:4353
void set_sp_current_parsing_ctx(sp_pcontext *ctx)
Definition: sql_lex.h:4567
uint32 next_binlog_file_nr
Definition: sql_lex.h:4441
bool check_preparation_invalid(THD *thd)
Check whether preparation state for prepared statement is invalid.
Definition: sql_lex.cc:846
void set_execute_only_in_hypergraph_optimizer(bool execute_in_hypergraph_optimizer_param, execute_only_in_hypergraph_reasons reason)
Definition: sql_lex.h:4239
dd::info_schema::Tablespace_statistics m_IS_tablespace_stats
Definition: sql_lex.h:4826
const char * get_only_supported_in_hypergraph_reason_str() const
Definition: sql_lex.h:4247
sp_pcontext * get_sp_current_parsing_ctx()
Definition: sql_lex.h:4565
void set_using_secondary_engine(bool flag)
Definition: sql_lex.h:4067
LEX_STRING binlog_stmt_arg
Argument of the BINLOG event statement.
Definition: sql_lex.h:4106
Query_block * new_query(Query_block *curr_query_block)
Create query expression object that contains one query block.
Definition: sql_lex.cc:645
THD * thd
Definition: sql_lex.h:4114
bool rewrite_required
Definition: sql_lex.h:4885
bool m_splitting_window_expression
Definition: sql_lex.h:4022
bool contains_plaintext_password
Definition: sql_lex.h:4439
LEX_STRING name
Definition: sql_lex.h:4099
uint8 create_view_algorithm
Definition: sql_lex.h:4370
LEX_SOURCE_INFO mi
Definition: sql_lex.h:4289
ulong max_execution_time
Definition: sql_lex.h:4631
void restore_cmd_properties()
Definition: sql_lex.h:4738
bool grant_privilege
Set to true when GRANT ... GRANT OPTION ... TO ... is used (vs.
Definition: sql_lex.h:4367
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:4454
LEX_STRING ident
Definition: sql_lex.h:4108
bool m_can_execute_only_in_secondary_engine
Definition: sql_lex.h:4009
ulonglong bulk_insert_row_cnt
Definition: sql_lex.h:4146
void set_has_udf()
Definition: sql_lex.h:4417
bool has_udf() const
Definition: sql_lex.h:4418
List< Item_func_set_user_var > set_var_list
Definition: sql_lex.h:4156
uint8 create_view_suid
Definition: sql_lex.h:4599
bool push_context(Name_resolution_context *context)
Definition: sql_lex.h:4778
void pop_context()
Definition: sql_lex.h:4782
bool m_was_replication_command_executed
Definition: sql_lex.h:4871
enum enum_yes_no_unknown tx_chain tx_release
Definition: sql_lex.h:4398
void clear_privileges()
Definition: sql_lex.cc:3602
LEX()
Definition: sql_lex.cc:3694
partition_info * part_info
Definition: sql_lex.h:4133
bool m_using_hypergraph_optimizer
Definition: sql_lex.h:4095
char * help_arg
Definition: sql_lex.h:4100
Server_options server_options
Definition: sql_lex.h:4291
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:3840
enum_alter_user_attribute alter_user_attribute
Definition: sql_lex.h:4111
bool m_can_execute_only_in_hypergraph_optimizer
Definition: sql_lex.h:4018
std::map< Item_field *, Field * >::iterator end_values_map()
Definition: sql_lex.h:4196
List< Item > purge_value_list
Definition: sql_lex.h:4149
Query_block * current_query_block() const
Definition: sql_lex.h:4025
std::map< Item_field *, Field * > * insert_update_values_map
Definition: sql_lex.h:4266
bool ignore
Definition: sql_lex.h:4410
Name_resolution_context * current_context()
Definition: sql_lex.h:4790
enum SSL_type ssl_type
Definition: sql_lex.h:4351
bool is_explain_analyze
Definition: sql_lex.h:4042
HA_CREATE_INFO * create_info
Definition: sql_lex.h:4287
void set_using_hypergraph_optimizer(bool use_hypergraph)
Definition: sql_lex.h:4056
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:588
bool in_update_value_clause
Set to true while resolving values in ON DUPLICATE KEY UPDATE clause.
Definition: sql_lex.h:4626
Query_block * all_query_blocks_list
List of all query blocks.
Definition: sql_lex.h:4000
void release_plugins()
Definition: sql_lex.cc:547
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:4338
bool safe_to_cache_query
Whether this query will return the same answer every time, given unchanged data.
Definition: sql_lex.h:4405
sp_name * spname
Definition: sql_lex.h:4436
bool prepared_stmt_code_is_varref
Definition: sql_lex.h:4432
void set_ignore(bool ignore_param)
Definition: sql_lex.h:4416
my_thread_id show_profile_query_id
QUERY ID for SHOW PROFILE.
Definition: sql_lex.h:4358
List< set_var_base > var_list
Definition: sql_lex.h:4155
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:4343
LEX_STRING alter_user_comment_text
Definition: sql_lex.h:4112
bool is_ps_or_view_context_analysis()
Definition: sql_lex.h:4698
bool m_crossed_connection_memory_status_limit
Set to true when execution crosses connection_memory_status_limit.
Definition: sql_lex.h:4462
Query_block * query_block
First query block.
Definition: sql_lex.h:3999
ulonglong statement_options()
Gets the options that have been set for this statement.
Definition: sql_lex.h:4482
bool which_check_option_applicable()
Definition: sql_lex.h:4761
enum_view_type create_view_type
Definition: sql_lex.h:4372
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:4204
bool set_wild(LEX_STRING)
Definition: sql_lex.cc:4994
uint grant
Definition: sql_lex.h:4360
bool is_crossed_global_connection_memory_status_limit() const
Definition: sql_lex.h:4549
enum_keep_diagnostics keep_diagnostics
Definition: sql_lex.h:4440
bool is_rewrite_required()
Definition: sql_lex.h:4890
Table_ref * insert_table_leaf
Leaf table being inserted into (always a base table)
Definition: sql_lex.h:4127
LEX_USER * definer
Definition: sql_lex.h:4139
void set_rewrite_required()
Definition: sql_lex.h:4888
List< Item > kill_value_list
Definition: sql_lex.h:4152
const char * get_not_supported_in_primary_reason_str()
Definition: sql_lex.h:4219
uint replica_thd_opt
Definition: sql_lex.h:4368
bool m_has_external_tables
True if query has at least one external table.
Definition: sql_lex.h:4412
void restore_properties_for_insert()
Definition: sql_lex.h:4740
void clear_values_map()
Definition: sql_lex.h:4182
void set_secondary_engine_execution_context(Secondary_engine_execution_context *context)
Sets the secondary engine execution context for this statement.
Definition: sql_lex.cc:5233
bool is_broken() const
Definition: sql_lex.h:4493
bool sp_lex_in_use
Definition: sql_lex.h:4437
List< LEX_STRING > prepared_stmt_params
Definition: sql_lex.h:4434
LEX_REPLICA_CONNECTION replica_connection
Definition: sql_lex.h:4290
Secondary_engine_execution_context * secondary_engine_execution_context() const
Gets the secondary engine execution context for this statement.
Definition: sql_lex.h:4846
st_parsing_options parsing_options
Definition: sql_lex.h:4422
int select_number
Number of query block (by EXPLAIN)
Definition: sql_lex.h:4369
void add_statement_options(ulonglong options)
Add options to values of m_statement_options.
Definition: sql_lex.h:4490
uint profile_options
Definition: sql_lex.h:4359
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:598
nesting_map m_deny_window_func
Windowing functions are not allowed in HAVING - in contrast to grouped aggregate functions,...
Definition: sql_lex.h:4317
LEX_GRANT_AS grant_as
Definition: sql_lex.h:4113
String * wild
Definition: sql_lex.h:4104
bool expr_allows_subquery
Definition: sql_lex.h:4332
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:4449
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:559
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:4350
Sql_cmd * m_sql_cmd
Definition: sql_lex.h:4324
execute_only_in_hypergraph_reasons get_only_supported_in_hypergraph_reason() const
Definition: sql_lex.h:4254
void reset_rewrite_required()
Definition: sql_lex.h:4889
LEX_STRING create_view_query_block
SELECT of CREATE VIEW statement.
Definition: sql_lex.h:4130
bool m_crossed_global_connection_memory_status_limit
Set to true when execution crosses global_connection_memory_status_limit.
Definition: sql_lex.h:4458
bool set_channel_name(LEX_CSTRING name={})
Set replication channel name.
Definition: sql_lex.cc:5106
bool accept(Select_lex_visitor *visitor)
Definition: sql_lex.cc:4990
void reset_exec_started()
Definition: sql_lex.h:4536
sp_head * sphead
Definition: sql_lex.h:4435
void reset_n_backup_query_tables_list(Query_tables_list *backup)
Definition: sql_lex.cc:4300
udf_func udf
Definition: sql_lex.h:4285
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:4022
void set_crossed_global_connection_memory_status_limit()
Definition: sql_lex.h:4555
void link_first_table_back(Table_ref *first, bool link_to_local)
Definition: sql_lex.cc:4243
const char * stmt_definition_begin
Intended to point to the next word after DEFINER-clause in the following statements:
Definition: sql_lex.h:4613
bool is_exec_completed() const
Check whether the statement has been executed (regardless of completion - successful or in error).
Definition: sql_lex.h:4546
enum enum_var_type option_type
Definition: sql_lex.h:4354
uint8 context_analysis_only
Definition: sql_lex.h:4377
bool using_secondary_engine() const
Returns true if the statement is executed on a secondary engine.
Definition: sql_lex.h:4065
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:3786
std::map< Item_field *, Field * >::iterator begin_values_map()
Definition: sql_lex.h:4193
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:4322
void set_exec_started()
Definition: sql_lex.h:4535
Query_block * m_current_query_block
Definition: sql_lex.h:4003
Item_sum * in_sum_func
Definition: sql_lex.h:4284
virtual ~LEX()
Definition: sql_lex.cc:393
class Explain_format * explain_format
Definition: sql_lex.h:4628
void cleanup(bool full)
Definition: sql_lex.h:4518
void reset_crossed_memory_status_limit()
Definition: sql_lex.h:4561
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:4306
const char * x509_subject
Definition: sql_lex.h:4102
friend bool lex_start(THD *thd)
Call lex_start() before every query that is to be prepared and executed.
Definition: sql_lex.cc:512
bool is_view_context_analysis()
Definition: sql_lex.h:4703
void set_crossed_connection_memory_status_limit()
Definition: sql_lex.h:4558
ulong type
Definition: sql_lex.h:4294
Helper singleton class used to track information needed to perform the transform of a correlated scal...
Definition: sql_resolver.cc:7410
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:412
Environment data for the contextualization phase.
Definition: parse_tree_node_base.h:422
Definition: sql_lex.h:2622
LEX_CSTRING m_db
Definition: sql_lex.h:2623
LEX_STRING m_name
Definition: sql_lex.h:2624
LEX_CSTRING m_alias
Definition: sql_lex.h:2625
sp_name_with_alias(LEX_CSTRING db, LEX_STRING name, LEX_CSTRING alias)
Definition: sql_lex.h:2627
State data storage for digest_start, digest_add_token.
Definition: sql_digest_stream.h:36
Definition: sql_lex.h:5121
Definition: sql_lex.h:3403
void reset()
Definition: sql_lex.cc:169
bool allows_select_into
Definition: sql_lex.h:3405
bool allows_variable
Definition: sql_lex.h:3404
st_parsing_options()
Definition: sql_lex.h:3407
Definition: sql_lex.h:2631
mem_root_deque< sp_name_with_alias > * m_imported_libraries
List of imported libraries for this routine.
Definition: sql_lex.h:2642
LEX_CSTRING comment
Definition: sql_lex.h:2632
void reset(void)
Reset the structure.
Definition: sql_lex.h:2715
enum enum_sp_data_access daccess
Definition: sql_lex.h:2635
bool detistic
Definition: sql_lex.h:2634
bool is_binary
Definition: sql_lex.h:2637
enum enum_sp_suid_behaviour suid
Definition: sql_lex.h:2633
LEX_CSTRING language
CREATE|ALTER ... LANGUAGE <language>
Definition: sql_lex.h:2636
bool add_imported_library(std::string_view database, std::string_view name, std::string_view alias, MEM_ROOT *mem_root)
Add a library to the set of imported libraries.
Definition: sql_lex.h:2681
const mem_root_deque< sp_name_with_alias > * get_imported_libraries()
Get the set of imported libraries for the routine.
Definition: sql_lex.h:2708
bool add_imported_libraries(mem_root_deque< sp_name_with_alias > &libs, MEM_ROOT *mem_root)
Add library names to the set of imported libraries.
Definition: sql_lex.h:2655
bool create_imported_libraries_deque(MEM_ROOT *mem_root)
Definition: sql_lex.h:2696
Definition: sql_lex.h:2728
enum enum_trigger_event_type event
Definition: sql_lex.h:2730
LEX_CSTRING anchor_trigger_name
Trigger name referenced in the FOLLOWS/PRECEDES clause of the CREATE TRIGGER statement.
Definition: sql_lex.h:2741
enum enum_trigger_order_type ordering_clause
FOLLOWS or PRECEDES as specified in the CREATE TRIGGER statement.
Definition: sql_lex.h:2735
enum enum_trigger_action_time_type action_time
Definition: sql_lex.h:2729
Definition: sql_lex.h:2613
void reset()
Cleans slave connection info.
Definition: sql_lex.cc:177
char * user
Definition: sql_lex.h:2614
char * plugin_dir
Definition: sql_lex.h:2617
char * plugin_auth
Definition: sql_lex.h:2616
char * password
Definition: sql_lex.h:2615
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:348
#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