MySQL 8.0.39
Source Code Documentation
anonymous_namespace{opt_explain.cc}::Explain_table Class Reference

Explain_table class produce EXPLAIN output for queries without top-level JOIN. More...

Inheritance diagram for anonymous_namespace{opt_explain.cc}::Explain_table:
[legend]

Public Member Functions

 Explain_table (THD *const explain_thd_arg, const THD *query_thd_arg, Query_block *query_block_arg, TABLE *const table_arg, enum join_type type_arg, AccessPath *range_scan_arg, Item *condition_arg, uint key_arg, ha_rows limit_arg, bool need_tmp_table_arg, bool need_sort_arg, enum_mod_type mod_type_arg, bool used_key_is_modified_arg, const char *msg)
 
bool explain_modify_flags () override
 
- Public Member Functions inherited from anonymous_namespace{opt_explain.cc}::Explain
virtual ~Explain ()=default
 
bool send ()
 Explain class main function. More...
 
bool can_print_clauses () const
 Tells if it is allowed to print the WHERE / GROUP BY / etc clauses. More...
 

Private Member Functions

virtual bool explain_tmptable_and_filesort (bool need_tmp_table_arg, bool need_sort_arg)
 
bool shallow_explain () override
 Explain everything but subqueries. More...
 
bool explain_ref () override
 
bool explain_table_name () override
 
bool explain_join_type () override
 
bool explain_key_and_len () override
 fill col_key and and col_key_len fields together More...
 
bool explain_rows_and_filtered () override
 fill col_rows and col_filtered fields together More...
 
bool explain_extra () override
 
bool can_walk_clauses () override
 Returns true if the WHERE, ORDER BY, GROUP BY, etc clauses can safely be traversed: it means that we can iterate through them (no element is added/removed/replaced); the internal details of an element can change though (in particular if that element is an Item_subselect). More...
 

Private Attributes

const uint key
 cached "key" number argument More...
 
const ha_rows limit
 HA_POS_ERROR or cached "limit" argument. More...
 
const bool need_tmp_table
 cached need_tmp_table argument More...
 
const bool need_sort
 cached need_sort argument More...
 
const enum_mod_type mod_type
 Table modification type. More...
 
const bool used_key_is_modified
 UPDATE command updates used key. More...
 
const char * message
 cached "message" argument More...
 

Additional Inherited Members

- Protected Member Functions inherited from anonymous_namespace{opt_explain.cc}::Explain_table_base
 Explain_table_base (enum_parsing_context context_type_arg, THD *const explain_thd_arg, const THD *query_thd_arg, Query_block *query_block_arg=nullptr, TABLE *const table_arg=nullptr)
 
bool explain_partitions () override
 
bool explain_possible_keys () override
 
bool explain_key_parts (int key, uint key_parts)
 
bool explain_key_and_len_quick (AccessPath *range_scan)
 
bool explain_key_and_len_index (int key)
 
bool explain_key_and_len_index (int key, uint key_length, uint key_parts)
 
bool explain_extra_common (int range_scan_type, uint keyno)
 
bool explain_tmptable_and_filesort (bool need_tmp_table_arg, bool need_sort_arg)
 
- Protected Member Functions inherited from anonymous_namespace{opt_explain.cc}::Explain
 Explain (enum_parsing_context context_type_arg, THD *explain_thd_arg, const THD *query_thd_arg, Query_block *query_block_arg)
 
bool explain_subqueries ()
 Explain the rest of things after the shallow_explain() call. More...
 
bool mark_subqueries (Item *item, qep_row *destination)
 Qualify subqueries with WHERE/HAVING/ORDER BY/GROUP BY clause type marker. More...
 
bool prepare_columns ()
 Pre-calculate table property values for further EXPLAIN output. More...
 
bool push_extra (Extra_tag tag)
 Push a part of the "extra" column into formatter. More...
 
bool push_extra (Extra_tag tag, const String &arg)
 Push a part of the "extra" column into formatter. More...
 
bool push_extra (Extra_tag tag, const char *arg)
 Push a part of the "extra" column into formatter. More...
 
virtual bool explain_id ()
 
virtual bool explain_select_type ()
 
virtual enum_parsing_context get_subquery_context (Query_expression *unit) const
 
- Protected Attributes inherited from anonymous_namespace{opt_explain.cc}::Explain_table_base
QEP_TABtab {nullptr}
 The QEP_TAB which we are currently explaining. More...
 
const TABLEtable {nullptr}
 
join_type type {JT_UNKNOWN}
 
AccessPathrange_scan_path {nullptr}
 
Itemcondition {nullptr}
 
bool dynamic_range {false}
 
Table_reftable_ref {nullptr}
 
bool skip_records_in_range {false}
 
bool reversed_access {false}
 
Key_map usable_keys
 
- Protected Attributes inherited from anonymous_namespace{opt_explain.cc}::Explain
THD *const explain_thd
 cached THD which runs the EXPLAIN command More...
 
const THDquery_thd
 THD which runs the query to be explained. More...
 
const CHARSET_INFO *const cs
 cached pointer to system_charset_info More...
 
Query_block *const query_block
 Cached Query_block of the explained query. More...
 
Explain_format *const fmt
 shortcut for thd->lex->explain_format More...
 
enum_parsing_context context_type
 associated value for struct. explain More...
 
bool order_list
 if query block has ORDER BY More...
 
const bool explain_other
 if we explain other thread than us More...
 

Detailed Description

Explain_table class produce EXPLAIN output for queries without top-level JOIN.

This class is a simplified version of the Explain_join class. It works in the context of queries which implementation lacks top-level JOIN object (EXPLAIN single-table UPDATE and DELETE).

Constructor & Destructor Documentation

◆ Explain_table()

anonymous_namespace{opt_explain.cc}::Explain_table::Explain_table ( THD *const  explain_thd_arg,
const THD query_thd_arg,
Query_block query_block_arg,
TABLE *const  table_arg,
enum join_type  type_arg,
AccessPath range_scan_arg,
Item condition_arg,
uint  key_arg,
ha_rows  limit_arg,
bool  need_tmp_table_arg,
bool  need_sort_arg,
enum_mod_type  mod_type_arg,
bool  used_key_is_modified_arg,
const char *  msg 
)
inline

Member Function Documentation

◆ can_walk_clauses()

bool anonymous_namespace{opt_explain.cc}::Explain_table::can_walk_clauses ( )
inlineoverrideprivatevirtual

Returns true if the WHERE, ORDER BY, GROUP BY, etc clauses can safely be traversed: it means that we can iterate through them (no element is added/removed/replaced); the internal details of an element can change though (in particular if that element is an Item_subselect).

By default, if we are explaining another connection, this is not safe.

Reimplemented from anonymous_namespace{opt_explain.cc}::Explain.

◆ explain_extra()

bool Explain_table::explain_extra ( )
overrideprivatevirtual

◆ explain_join_type()

bool Explain_table::explain_join_type ( )
overrideprivatevirtual

◆ explain_key_and_len()

bool Explain_table::explain_key_and_len ( )
overrideprivatevirtual

fill col_key and and col_key_len fields together

Reimplemented from anonymous_namespace{opt_explain.cc}::Explain.

◆ explain_modify_flags()

bool Explain_table::explain_modify_flags ( )
overridevirtual

◆ explain_ref()

bool Explain_table::explain_ref ( )
overrideprivatevirtual

◆ explain_rows_and_filtered()

bool Explain_table::explain_rows_and_filtered ( )
overrideprivatevirtual

fill col_rows and col_filtered fields together

Reimplemented from anonymous_namespace{opt_explain.cc}::Explain.

◆ explain_table_name()

bool Explain_table::explain_table_name ( )
overrideprivatevirtual

◆ explain_tmptable_and_filesort()

bool Explain_table::explain_tmptable_and_filesort ( bool  need_tmp_table_arg,
bool  need_sort_arg 
)
privatevirtual

◆ shallow_explain()

bool Explain_table::shallow_explain ( )
overrideprivatevirtual

Explain everything but subqueries.

Reimplemented from anonymous_namespace{opt_explain.cc}::Explain.

Member Data Documentation

◆ key

const uint anonymous_namespace{opt_explain.cc}::Explain_table::key
private

cached "key" number argument

◆ limit

const ha_rows anonymous_namespace{opt_explain.cc}::Explain_table::limit
private

HA_POS_ERROR or cached "limit" argument.

◆ message

const char* anonymous_namespace{opt_explain.cc}::Explain_table::message
private

cached "message" argument

◆ mod_type

const enum_mod_type anonymous_namespace{opt_explain.cc}::Explain_table::mod_type
private

Table modification type.

◆ need_sort

const bool anonymous_namespace{opt_explain.cc}::Explain_table::need_sort
private

cached need_sort argument

◆ need_tmp_table

const bool anonymous_namespace{opt_explain.cc}::Explain_table::need_tmp_table
private

cached need_tmp_table argument

◆ used_key_is_modified

const bool anonymous_namespace{opt_explain.cc}::Explain_table::used_key_is_modified
private

UPDATE command updates used key.


The documentation for this class was generated from the following file: