24#ifndef OPT_EXPLAIN_INCLUDED
25#define OPT_EXPLAIN_INCLUDED
103 Item *condition_arg, uint key_arg,
ha_rows limit_arg,
104 bool need_tmp_table_arg,
bool need_sort_arg,
105 bool used_key_is_modified_arg,
ha_rows rows);
108 const char *message_arg,
bool zero_result_arg,
179 std::string_view variable_name)
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:930
Table modification plan for JOIN-less statements (update/delete)
Definition: opt_explain.h:82
TABLE * table
Table to modify.
Definition: opt_explain.h:87
ha_rows limit
Limit.
Definition: opt_explain.h:93
THD *const thd
Owning thread.
Definition: opt_explain.h:84
const enum_mod_type mod_type
Modification type - MT_INSERT/MT_UPDATE/etc.
Definition: opt_explain.h:86
uint key
Key to use.
Definition: opt_explain.h:92
bool need_sort
Whether to use filesort.
Definition: opt_explain.h:95
Modification_plan(THD *thd_arg, enum_mod_type mt, TABLE *table_arg, enum join_type type_arg, AccessPath *quick_arg, Item *condition_arg, uint key_arg, ha_rows limit_arg, bool need_tmp_table_arg, bool need_sort_arg, bool used_key_is_modified_arg, ha_rows rows)
Modification_plan's constructor, to represent that we will use an access method on the table.
Definition: opt_explain.cc:2577
Item * condition
Definition: opt_explain.h:91
bool zero_result
true <=> plan will not be executed
Definition: opt_explain.h:98
void register_in_thd()
Definition: opt_explain.cc:2543
enum join_type type
Definition: opt_explain.h:89
bool used_key_is_modified
Whether the key used to scan is modified.
Definition: opt_explain.h:96
ha_rows examined_rows
Definition: opt_explain.h:99
~Modification_plan()
Definition: opt_explain.cc:2636
bool need_tmp_table
Whether tmp table needs to be used.
Definition: opt_explain.h:94
const char * message
Arbitrary message.
Definition: opt_explain.h:97
AccessPath * range_scan
Definition: opt_explain.h:90
This class represents a query block, aka a query specification, which is a query consisting of a SELE...
Definition: sql_lex.h:1159
This class represents a query expression (one query block or several query blocks combined with UNION...
Definition: sql_lex.h:627
Wrapper class for writing EXPLAIN output to a user variable.
Definition: opt_explain.h:176
Query_result_explain_into_var(Query_expression *expr, Query_result *child, std::string_view variable_name)
Definition: opt_explain.h:178
bool send_eof(THD *thd) override
Definition: opt_explain.cc:2657
std::string_view m_variable_name
Definition: opt_explain.h:192
bool send_result_set_metadata(THD *, const mem_root_deque< Item * > &, uint) override
Definition: opt_explain.h:182
bool send_data(THD *thd, const mem_root_deque< Item * > &items) override
Definition: opt_explain.cc:2646
EXPLAIN functionality for Query_result_insert, Query_result_update and Query_result_delete.
Definition: opt_explain.h:136
bool prepare(THD *thd, const mem_root_deque< Item * > &list, Query_expression *u) override
Perform preparation specific to the query expression or DML statement.
Definition: opt_explain.h:153
bool start_execution(THD *thd) override
Prepare for execution of the query expression or DML statement.
Definition: opt_explain.h:159
Query_result_explain(Query_expression *unit_arg, Query_result *interceptor_arg)
Definition: opt_explain.h:145
void cleanup() override
Cleanup after this execution.
Definition: opt_explain.h:164
bool use_protocol_adapter() const override
Definition: opt_explain.h:150
Query_result * interceptor
Pointer to underlying Query_result_insert, Query_result_update or Query_result_delete object.
Definition: opt_explain.h:142
Definition: query_result.h:191
void cleanup() override
Cleanup after this execution.
Definition: query_result.h:207
Definition: query_result.h:58
virtual bool prepare(THD *, const mem_root_deque< Item * > &, Query_expression *u)
Perform preparation specific to the query expression or DML statement.
Definition: query_result.h:99
virtual void cleanup()
Cleanup after this execution.
Definition: query_result.h:152
Query_expression * unit
Definition: query_result.h:60
virtual bool start_execution(THD *)
Prepare for execution of the query expression or DML statement.
Definition: query_result.h:114
Query term tree structure.
Definition: query_term.h:216
Definition: opt_explain.h:204
my_thread_id m_thread_id
connection_id in EXPLAIN FOR CONNECTION <connection_id>
Definition: opt_explain.h:217
bool execute(THD *thd) override
Entry point for EXPLAIN CONNECTION: locates the connection by its ID, takes proper locks,...
Definition: opt_explain.cc:2436
Sql_cmd_explain_other_thread(my_thread_id thread_id)
Definition: opt_explain.h:206
enum_sql_command sql_command_code() const override
Return the command code for this statement.
Definition: opt_explain.h:209
Representation of an SQL command.
Definition: sql_cmd.h:83
Using this class is fraught with peril, and you need to be very careful when doing so.
Definition: sql_string.h:167
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:36
A (partial) implementation of std::deque allocating its blocks on a MEM_ROOT.
Definition: mem_root_deque.h:111
This file includes constants used by all storage engines.
my_off_t ha_rows
Definition: my_base.h:1141
enum_sql_command
Definition: my_sqlcommand.h:46
@ SQLCOM_EXPLAIN_OTHER
Definition: my_sqlcommand.h:182
static my_thread_id thread_id
Definition: my_thr_init.cc:63
uint32 my_thread_id
Definition: my_thread_local.h:34
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1105
std::list< T, ut::allocator< T > > list
Specialization of list which uses ut_allocator.
Definition: ut0new.h:2880
const char * join_type_str[]
Definition: opt_explain.cc:118
bool explain_query_specification(THD *explain_thd, const THD *query_thd, Query_term *query_term, enum_parsing_context ctx)
Explain query_block's join.
Definition: opt_explain.cc:2017
bool explain_query(THD *explain_thd, const THD *query_thd, Query_expression *unit)
EXPLAIN handling for SELECT, INSERT/REPLACE SELECT, and multi-table UPDATE/DELETE queries.
Definition: opt_explain.cc:2247
bool explain_single_table_modification(THD *explain_thd, const THD *query_thd, const Modification_plan *plan, Query_block *select)
EXPLAIN handling for single-table INSERT VALUES, UPDATE, and DELETE queries.
Definition: opt_explain.cc:1906
void print_query_for_explain(const THD *query_thd, Query_expression *unit, String *str)
This code which prints the extended description is not robust against malformed queries,...
Definition: opt_explain.cc:2181
enum_parsing_context
Names for different query parse tree parts.
Definition: parse_tree_node_base.h:61
Representation of an SQL command.
Common types of the Optimizer, used by optimization and execution.
join_type
Definition: sql_opt_exec_shared.h:186
@ JT_UNKNOWN
Definition: sql_opt_exec_shared.h:188
Access paths are a query planning structure that correspond 1:1 to iterators, in that an access path ...
Definition: access_path.h:227