MySQL 8.0.40
Source Code Documentation
Explain_format Class Referenceabstract

Base class for structured and hierarchical EXPLAIN output formatters. More...

#include <opt_explain_format.h>

Inheritance diagram for Explain_format:
[legend]

Public Member Functions

 Explain_format ()
 
virtual ~Explain_format ()=default
 
virtual bool is_hierarchical () const =0
 A hierarchical text or a plain table. More...
 
virtual bool is_iterator_based () const
 Whether the format closely resembles the final plan to be executed by execution iterators (See RowIterator). More...
 
virtual bool send_headers (Query_result *result)
 Send EXPLAIN header item(s) to output stream. More...
 
virtual bool begin_context (enum_parsing_context context, Query_expression *subquery=nullptr, const Explain_format_flags *flags=nullptr)=0
 Enter a specified context. More...
 
virtual bool end_context (enum_parsing_context context)=0
 Leave the current context. More...
 
virtual bool flush_entry ()=0
 Flush TABLE/JOIN_TAB property set. More...
 
virtual qep_rowentry ()=0
 Get a pointer to the current TABLE/JOIN_TAB property set. More...
 
virtual std::string ExplainJsonToString (Json_object *json)
 Convert Json object to string. More...
 

Protected Attributes

Query_resultoutput
 output resulting data there More...
 

Private Member Functions

 Explain_format (Explain_format &)
 
Explain_formatoperator= (Explain_format &)
 

Detailed Description

Base class for structured and hierarchical EXPLAIN output formatters.

Constructor & Destructor Documentation

◆ Explain_format() [1/2]

Explain_format::Explain_format ( Explain_format )
private

◆ Explain_format() [2/2]

Explain_format::Explain_format ( )
inline

◆ ~Explain_format()

virtual Explain_format::~Explain_format ( )
virtualdefault

Member Function Documentation

◆ begin_context()

virtual bool Explain_format::begin_context ( enum_parsing_context  context,
Query_expression subquery = nullptr,
const Explain_format_flags flags = nullptr 
)
pure virtual

Enter a specified context.

Parameters
contextcontext type
subqueryfor CTX_WHERE: unit of the subquery
flagsFormat flags, see Explain_format_flags.

Implemented in Explain_format_JSON, Explain_format_traditional, and Explain_format_tree.

◆ end_context()

virtual bool Explain_format::end_context ( enum_parsing_context  context)
pure virtual

Leave the current context.

Parameters
contextcurrent context type (for validation/debugging)

Implemented in Explain_format_JSON, Explain_format_traditional, and Explain_format_tree.

◆ entry()

virtual qep_row * Explain_format::entry ( )
pure virtual

Get a pointer to the current TABLE/JOIN_TAB property set.

Implemented in Explain_format_JSON, Explain_format_traditional, and Explain_format_tree.

◆ ExplainJsonToString()

virtual std::string Explain_format::ExplainJsonToString ( Json_object json)
inlinevirtual

Convert Json object to string.

Should only be called for iterator-based formats.

Reimplemented in Explain_format_JSON, and Explain_format_tree.

◆ flush_entry()

virtual bool Explain_format::flush_entry ( )
pure virtual

Flush TABLE/JOIN_TAB property set.

For traditional EXPLAIN: output a single EXPLAIN row.

Implemented in Explain_format_JSON, Explain_format_traditional, and Explain_format_tree.

◆ is_hierarchical()

virtual bool Explain_format::is_hierarchical ( ) const
pure virtual

A hierarchical text or a plain table.

Return values
trueFormatter produces hierarchical text
falseTraditional explain

Implemented in Explain_format_JSON, Explain_format_traditional, and Explain_format_tree.

◆ is_iterator_based()

virtual bool Explain_format::is_iterator_based ( ) const
inlinevirtual

Whether the format closely resembles the final plan to be executed by execution iterators (See RowIterator).

These formats share a common logic that uses AccessPath structure to generate the information, so they all display exactly the same information, even though the style of each format might be different.

Note
: The new json format for hypergraph and the tree format are examples of iterator-based formats.
Return values
trueFormat is Iterator-based.
falseFormat is not Iterator-based.

Reimplemented in Explain_format_JSON, and Explain_format_tree.

◆ operator=()

Explain_format & Explain_format::operator= ( Explain_format )
private

◆ send_headers()

virtual bool Explain_format::send_headers ( Query_result result)
inlinevirtual

Send EXPLAIN header item(s) to output stream.

Note
: This function caches the output result set pointer for further use.
Parameters
resultoutput result set
Return values
falseOK
trueError

Reimplemented in Explain_format_tree, Explain_format_JSON, and Explain_format_traditional.

Member Data Documentation

◆ output

Query_result* Explain_format::output
protected

output resulting data there


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