![]() |
MySQL 8.0.43
Source Code Documentation
|
Node class for CTX_SIMPLE_ORDER_BY, CTX_SIMPLE_GROUP_BY and CTX_SIMPLE_DISTINCT. More...
Public Member Functions | |
| sort_ctx (enum_parsing_context type_arg, const char *name_arg, context *parent_arg, const Explain_format_flags *flags, Explain_sort_clause clause) | |
Public Member Functions inherited from opt_explain_json_namespace::join_ctx | |
| join_ctx (enum_parsing_context type_arg, const char *name_arg, context *parent_arg) | |
| bool | add_join_tab (joinable_ctx *ctx) override |
| Add a CTX_QEP_TAB node to a CTX_JOIN node. More... | |
| void | set_sort (sort_ctx *ctx) override |
Set nested ORDER BY/GROUP BY/DISTINCT node to ctx. More... | |
| void | set_window (window_ctx *ctx) override |
Set nested WINDOW node to ctx. More... | |
| qep_row * | entry () override |
| bool | find_and_set_derived (context *subquery) override |
| Associate a CTX_DERIVED node with its CTX_QEP_TAB node. More... | |
| bool | add_subquery (subquery_list_enum subquery_type, subquery_ctx *ctx) override |
| Append a subquery node to the specified list of the unit node. More... | |
| bool | format_nested_loop (Opt_trace_context *json) override |
| Format nested loop join subtree (if any) to JSON formatter. More... | |
| size_t | id (bool hide) override |
| Analogue of the "id" column in the traditional EXPLAIN output. More... | |
| bool | cacheable () override |
| bool | dependent () override |
| int | add_where_subquery (subquery_ctx *ctx, Query_expression *subquery) override |
| Associate WHERE subqueries of given context and unit with this object. More... | |
Public Member Functions inherited from opt_explain_json_namespace::unit_ctx | |
| unit_ctx (enum_parsing_context type_arg, const char *name_arg, context *parent_arg) | |
| bool | has_no_subqueries () const |
| Helper function to distinguish subquery-less nodes. More... | |
| bool | format_query_expression (Opt_trace_context *json) override |
| Helper function to format output for HAVING, ORDER/GROUP BY subqueries. More... | |
Public Member Functions inherited from opt_explain_json_namespace::context | |
| context (enum_parsing_context type_arg, const char *name_arg, context *parent_arg) | |
| virtual | ~context ()=default |
| virtual bool | format (Opt_trace_context *json) |
| Pass the node with its child nodes to a JSON formatter. More... | |
| bool | is_query_block () const |
| virtual enum_mod_type | get_mod_type () |
| virtual void | set_child (context *) |
| Associate a child node with this node. More... | |
| virtual void | set_setop_result (setop_result_ctx *) |
| associate CTX_UNION_RESULT node with CTX_UNION node More... | |
| virtual bool | add_query_spec (context *ctx) |
| Add a query specification node to the CTX_UNION node. More... | |
| virtual bool | format_derived (Opt_trace_context *) |
| Helper function to format output for derived subquery if any. More... | |
| virtual bool | format_where (Opt_trace_context *) |
| Helper function to format output for associated WHERE subqueries if any. More... | |
Public Member Functions inherited from Explain_context | |
| Explain_context (enum_parsing_context type_arg) | |
Public Member Functions inherited from qep_row | |
| qep_row () | |
| virtual | ~qep_row ()=default |
| void | cleanup () |
| virtual void | register_where_subquery (Query_expression *subquery) |
| Remember a subquery's unit. More... | |
| void | format_extra (Opt_trace_object *obj) |
Protected Member Functions | |
| bool | format_body (Opt_trace_context *json, Opt_trace_object *obj) override |
| Format JSON object body. More... | |
| const char * | get_cost_tag () override |
Protected Member Functions inherited from opt_explain_json_namespace::join_ctx | |
| bool | format_body_inner (Opt_trace_context *json, Opt_trace_object *obj) |
Private Attributes | |
| const bool | using_tmptable |
| The clause creates temporary table. More... | |
| const bool | using_filesort |
| The clause uses filesort. More... | |
Additional Inherited Members | |
Public Attributes inherited from opt_explain_json_namespace::context | |
| context * | parent |
| link to parent node or NULL More... | |
Public Attributes inherited from Explain_context | |
| enum_parsing_context | type |
| type tag More... | |
Public Attributes inherited from qep_row | |
| column< uint > | col_id |
| "id" column: seq. number of SELECT within the query More... | |
| column< enum_explain_type > | col_select_type |
| "select_type" column More... | |
| mem_root_str | col_table_name |
| "table" to which the row of output refers More... | |
| List< const char > | col_partitions |
| "partitions" column More... | |
| mem_root_str | col_join_type |
| "type" column, see join_type_str array More... | |
| List< const char > | col_possible_keys |
| "possible_keys": comma-separated list More... | |
| mem_root_str | col_key |
| "key" column: index that is actually decided to use More... | |
| mem_root_str | col_key_len |
| "key_length" column: length of the "key" above More... | |
| List< const char > | col_ref |
| "ref":columns/constants which are compared to "key" More... | |
| column< float > | col_filtered |
| "filtered": % of rows filtered by condition More... | |
| List< extra > | col_extra |
| "extra" column (traditional) or property list More... | |
| mem_root_str | col_message |
| replaces "Extra" column if not empty More... | |
| mem_root_str | col_attached_condition |
| former "Using where" More... | |
| column< ulonglong > | col_rows |
| "rows": estimated number of examined table rows per single scan More... | |
| column< ulonglong > | col_prefix_rows |
| "rows": estimated number of examined table rows per query More... | |
| column< double > | col_read_cost |
| Time to read the table. More... | |
| column< double > | col_prefix_cost |
| Cost of the partial join including this table. More... | |
| column< double > | col_cond_cost |
| Cost of evaluating conditions on this table per query. More... | |
| mem_root_str | col_data_size_query |
| Size of data expected to be read per query. More... | |
| List< const char > | col_used_columns |
| List of used columns. More... | |
| List< const char > | col_partial_update_columns |
| List of columns that can be updated using partial update. More... | |
| uint | query_block_id |
| query block id for materialized subqueries More... | |
| List< opt_explain_json_namespace::context > | derived_from |
| List of "derived" subquery trees. More... | |
| List< const char > | col_key_parts |
| used parts of the key More... | |
| bool | is_dependent |
| bool | is_cacheable |
| bool | using_temporary |
| enum_mod_type | mod_type |
| bool | is_materialized_from_subquery |
| uint | derived_clone_id |
| If a clone of a materialized derived table, this is the ID of the first underlying query block of the first materialized derived table. More... | |
| List< Window > * | m_windows |
| Windows to describe in this node. More... | |
Protected Attributes inherited from opt_explain_json_namespace::join_ctx | |
| List< joinable_ctx > | join_tabs |
| hosted JOIN_TAB nodes More... | |
| sort_ctx * | sort |
| window_ctx * | window |
Protected Attributes inherited from opt_explain_json_namespace::context | |
| const char * | name |
Node class for CTX_SIMPLE_ORDER_BY, CTX_SIMPLE_GROUP_BY and CTX_SIMPLE_DISTINCT.
CTX_JOIN context (see join_ctx class) may contain nested loop join node or ORDER BY/GROUP BY/DISTINCT node that is represented by this class:
join: { nested_loop: [ ... ] } or join: { order_by|group_by|distinct : { ... } }
CTX_ORDER_BY may contain nested loop join tree or GROUP BY/DISTINCT node:
order_by: { nested_loop|group_by|distinct: ... }
CTX_DISTINCT context structure:
distinct: { nested_loop|group_by: ... }
CTX_GROUP_BY:
group_by: { nested_loop: [ ... ] }
I.e. the most complex CTX_JOIN may have such a structure of JSON output as:
join: { order_by: { distinct: { group_by: { nested_loop: [ ... ] } } } } TODO
|
inline |
|
inlineoverrideprotectedvirtual |
Format JSON object body.
| json | Formatter |
| obj | Object of this body |
| false | Ok |
| true | Error |
Reimplemented from opt_explain_json_namespace::join_ctx.
Reimplemented in opt_explain_json_namespace::sort_with_subqueries_ctx.
|
inlineoverrideprotectedvirtual |
Reimplemented from opt_explain_json_namespace::join_ctx.
|
private |
The clause uses filesort.
|
private |
The clause creates temporary table.