![]()  | 
  
    MySQL 9.5.0
    
   Source Code Documentation 
   | 
 
Explain_join class produces EXPLAIN output for JOINs. More...
Public Member Functions | |
| Explain_join (THD *explain_thd_arg, const THD *query_thd_arg, Query_block *query_block_arg, bool need_tmp_table_arg, bool need_order_arg, bool distinct_arg) | |
  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... | |
Protected Member Functions | |
| bool | shallow_explain () override | 
| Explain everything but subqueries.  More... | |
| 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_ref () override | 
| bool | explain_rows_and_filtered () override | 
| fill col_rows and col_filtered fields together  More... | |
| bool | explain_extra () override | 
| bool | explain_select_type () override | 
| bool | explain_id () override | 
| bool | explain_modify_flags () 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... | |
  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 enum_parsing_context | get_subquery_context (Query_expression *unit) const | 
Private Member Functions | |
| bool | begin_sort_context (Explain_sort_clause clause, enum_parsing_context ctx) | 
| bool | end_sort_context (Explain_sort_clause clause, enum_parsing_context ctx) | 
| bool | begin_simple_sort_context (Explain_sort_clause clause, enum_parsing_context ctx) | 
| bool | end_simple_sort_context (Explain_sort_clause clause, enum_parsing_context ctx) | 
| bool | explain_qep_tab (size_t tab_num) | 
Private Attributes | |
| bool | need_tmp_table | 
| add "Using temporary" to "extra" if true  More... | |
| bool | need_order | 
| add "Using filesort"" to "extra" if true  More... | |
| const bool | distinct | 
| add "Distinct" string to "extra" column if true  More... | |
| JOIN * | join | 
| current JOIN  More... | |
| int | range_scan_type | 
| current range scan type, really an AccessPath::Type  More... | |
Additional Inherited Members | |
  Protected Attributes inherited from anonymous_namespace{opt_explain.cc}::Explain_table_base | |
| 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 | 
  Protected Attributes inherited from anonymous_namespace{opt_explain.cc}::Explain | |
| 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_join class produces EXPLAIN output for JOINs.
      
  | 
  inline | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  inlineoverrideprotectedvirtual | 
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.
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  overrideprotectedvirtual | 
Reimplemented from anonymous_namespace{opt_explain.cc}::Explain.
      
  | 
  overrideprotectedvirtual | 
Reimplemented from anonymous_namespace{opt_explain.cc}::Explain.
      
  | 
  overrideprotectedvirtual | 
Reimplemented from anonymous_namespace{opt_explain.cc}::Explain.
      
  | 
  overrideprotectedvirtual | 
fill col_key and and col_key_len fields together
Reimplemented from anonymous_namespace{opt_explain.cc}::Explain.
      
  | 
  overrideprotectedvirtual | 
Reimplemented from anonymous_namespace{opt_explain.cc}::Explain.
      
  | 
  private | 
      
  | 
  overrideprotectedvirtual | 
Reimplemented from anonymous_namespace{opt_explain.cc}::Explain.
      
  | 
  overrideprotectedvirtual | 
fill col_rows and col_filtered fields together
Reimplemented from anonymous_namespace{opt_explain.cc}::Explain.
      
  | 
  overrideprotectedvirtual | 
Reimplemented from anonymous_namespace{opt_explain.cc}::Explain.
      
  | 
  overrideprotectedvirtual | 
Reimplemented from anonymous_namespace{opt_explain.cc}::Explain.
      
  | 
  overrideprotectedvirtual | 
Explain everything but subqueries.
Reimplemented from anonymous_namespace{opt_explain.cc}::Explain.
      
  | 
  private | 
add "Distinct" string to "extra" column if true
      
  | 
  private | 
current JOIN
      
  | 
  private | 
add "Using filesort"" to "extra" if true
      
  | 
  private | 
add "Using temporary" to "extra" if true
      
  | 
  private | 
current range scan type, really an AccessPath::Type