Explain_table class produce EXPLAIN output for queries without top-level JOIN.
More...
|
| | 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 |
| |
| 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...
|
| |
|
| | 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) |
| |
| | 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 |
| |
| QEP_TAB * | tab {nullptr} |
| | The QEP_TAB which we are currently explaining. More...
|
| |
| const TABLE * | table {nullptr} |
| |
| join_type | type {JT_UNKNOWN} |
| |
| AccessPath * | range_scan_path {nullptr} |
| |
| Item * | condition {nullptr} |
| |
| bool | dynamic_range {false} |
| |
| Table_ref * | table_ref {nullptr} |
| |
| bool | skip_records_in_range {false} |
| |
| bool | reversed_access {false} |
| |
| Key_map | usable_keys |
| |
| THD *const | explain_thd |
| | cached THD which runs the EXPLAIN command More...
|
| |
| const THD * | query_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...
|
| |
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).
| 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.