MySQL 9.1.0
Source Code Documentation
Sql_cmd_analyze_table Class Reference

Sql_cmd_analyze_table represents the ANALYZE TABLE statement. More...

#include <sql_admin.h>

Inheritance diagram for Sql_cmd_analyze_table:
[legend]

Public Types

enum class  Histogram_command { NONE , UPDATE_HISTOGRAM , DROP_HISTOGRAM }
 Specifies which (if any) of the commands UPDATE HISTOGRAM or DROP HISTOGRAM that is specified after ANALYZE TABLE tbl. More...
 

Public Member Functions

 Sql_cmd_analyze_table (THD *thd, Alter_info *alter_info, Histogram_command histogram_command, int histogram_buckets, LEX_STRING data, bool histogram_auto_update)
 Constructor, used to represent a ANALYZE TABLE statement. More...
 
bool execute (THD *thd) override
 Execute this SQL statement. More...
 
enum_sql_command sql_command_code () const override
 Return the command code for this statement. More...
 
bool set_histogram_fields (List< String > *fields)
 Set which fields to (try and) create/update or delete histogram statistics for. More...
 
- Public Member Functions inherited from Sql_cmd_ddl_table
 Sql_cmd_ddl_table (Alter_info *alter_info)
 
 ~Sql_cmd_ddl_table () override=0
 
- Public Member Functions inherited from Sql_cmd_ddl
enum enum_sql_cmd_type sql_cmd_type () const override
 
- Public Member Functions inherited from Sql_cmd
bool needs_explicit_preparation () const
 
bool is_regular () const
 
bool is_prepared () const
 
virtual bool prepare (THD *)
 Prepare this SQL statement. More...
 
virtual bool reprepare_on_execute_required () const
 Some SQL commands currently require re-preparation on re-execution of a prepared statement or stored procedure. More...
 
virtual void cleanup (THD *)
 Command-specific reinitialization before execution of prepared statement. More...
 
void set_owner (Prepared_statement *stmt)
 Set the owning prepared statement. More...
 
Prepared_statementowner () const
 Get the owning prepared statement. More...
 
void set_as_part_of_sp ()
 Mark statement as part of procedure. More...
 
bool is_part_of_sp () const
 
virtual bool is_single_table_plan () const
 
virtual bool accept (THD *, Select_lex_visitor *)
 
virtual const MYSQL_LEX_CSTRINGeligible_secondary_storage_engine (THD *) const
 Is this statement of a type and on a form that makes it eligible for execution in a secondary storage engine? More...
 
virtual bool is_bulk_load () const
 
virtual bool are_dynamic_parameters_allowed () const
 
void disable_secondary_storage_engine ()
 Disable use of secondary storage engines in this statement. More...
 
void enable_secondary_storage_engine ()
 
bool secondary_storage_engine_disabled () const
 Has use of secondary storage engines been disabled for this statement? More...
 
void use_secondary_storage_engine (const handlerton *hton)
 Mark the current statement as using a secondary storage engine. More...
 
bool using_secondary_storage_engine () const
 Is this statement using a secondary storage engine? More...
 
const handlertonsecondary_engine () const
 Get the handlerton of the secondary engine that is used for executing this statement, or nullptr if a secondary engine is not used. More...
 
void set_optional_transform_prepared (bool value)
 
bool is_optional_transform_prepared ()
 

Private Types

using columns_set = std::set< String *, Column_name_comparator, Mem_root_allocator< String * > >
 

Private Member Functions

Histogram_command get_histogram_command () const
 
int get_histogram_buckets () const
 
LEX_STRING get_histogram_data_string () const
 
bool get_histogram_auto_update () const
 
const columns_setget_histogram_fields () const
 
bool send_histogram_results (THD *thd, const histograms::results_map &results, const Table_ref *table)
 Send the result of histogram operations back to the client as a result set. More...
 
bool update_histogram (THD *thd, Table_ref *table, histograms::results_map &results)
 Update one or more histograms. More...
 
bool drop_histogram (THD *thd, Table_ref *table, histograms::results_map &results)
 Drops one or more histograms. More...
 
bool handle_histogram_command (THD *thd, Table_ref *table)
 Dispatches the histogram command (DROP or UPDATE) and commits or rollbacks the changes depending on success or failure. More...
 
bool handle_histogram_command_inner (THD *thd, Table_ref *table, histograms::results_map &results)
 

Private Attributes

Histogram_command m_histogram_command = Histogram_command::NONE
 Which histogram command (if any) is specified. More...
 
columns_set m_histogram_fields
 The fields specified by the user in UPDATE/DROP HISTOGRAM. More...
 
int m_histogram_buckets
 The number of buckets specified by the user in UPDATE HISTOGRAM. More...
 
const LEX_STRING m_data
 The histogram json literal for update. More...
 
bool m_histogram_auto_update
 True if AUTO UPDATE was specified by the user in UPDATE HISTOGRAM. More...
 

Additional Inherited Members

- Protected Member Functions inherited from Sql_cmd
 Sql_cmd ()
 
virtual ~Sql_cmd ()
 
void set_prepared ()
 Set this statement as prepared. More...
 
- Protected Attributes inherited from Sql_cmd_ddl_table
Alter_info *const m_alter_info
 

Detailed Description

Sql_cmd_analyze_table represents the ANALYZE TABLE statement.

Also this class is a base class for Sql_cmd_alter_table_analyze_partition which represents the ALTER TABLE ... ANALYZE PARTITION statement.

Member Typedef Documentation

◆ columns_set

Member Enumeration Documentation

◆ Histogram_command

Specifies which (if any) of the commands UPDATE HISTOGRAM or DROP HISTOGRAM that is specified after ANALYZE TABLE tbl.

Enumerator
NONE 
UPDATE_HISTOGRAM 
DROP_HISTOGRAM 

Constructor & Destructor Documentation

◆ Sql_cmd_analyze_table()

Sql_cmd_analyze_table::Sql_cmd_analyze_table ( THD thd,
Alter_info alter_info,
Histogram_command  histogram_command,
int  histogram_buckets,
LEX_STRING  data,
bool  histogram_auto_update 
)

Constructor, used to represent a ANALYZE TABLE statement.

Member Function Documentation

◆ drop_histogram()

bool Sql_cmd_analyze_table::drop_histogram ( THD thd,
Table_ref table,
histograms::results_map results 
)
private

Drops one or more histograms.

This is invoked by running the command "ANALYZE TABLE tbl DROP HISTOGRAM ON col1, col2;". Note that the function expects exactly one table to be specified, but multiple columns can be specified.

Parameters
thdThread handler.
tableThe table specified in ANALYZE TABLE
resultsA map where the results of the operations will be stored.
Returns
false on success, true on error.

◆ execute()

bool Sql_cmd_analyze_table::execute ( THD thd)
overridevirtual

Execute this SQL statement.

Parameters
thdthe current thread.
Returns
false if success, true if error

Implements Sql_cmd.

Reimplemented in Sql_cmd_alter_table_analyze_partition.

◆ get_histogram_auto_update()

bool Sql_cmd_analyze_table::get_histogram_auto_update ( ) const
inlineprivate
Returns
True if AUTO UPDATE was specified in UPDATE HISTOGRAM.

◆ get_histogram_buckets()

int Sql_cmd_analyze_table::get_histogram_buckets ( ) const
inlineprivate
Returns
The number of buckets specified in UPDATE HISTOGRAM.

◆ get_histogram_command()

Histogram_command Sql_cmd_analyze_table::get_histogram_command ( ) const
inlineprivate
Returns
The histogram command specified, if any.

◆ get_histogram_data_string()

LEX_STRING Sql_cmd_analyze_table::get_histogram_data_string ( ) const
inlineprivate
Returns
The histogram json literal specified in UPDATE HISTOGRAM.

◆ get_histogram_fields()

const columns_set & Sql_cmd_analyze_table::get_histogram_fields ( ) const
inlineprivate
Returns
The fields specified in UPDATE/DROP HISTOGRAM

◆ handle_histogram_command()

bool Sql_cmd_analyze_table::handle_histogram_command ( THD thd,
Table_ref table 
)
private

Dispatches the histogram command (DROP or UPDATE) and commits or rollbacks the changes depending on success or failure.

If histograms were modified we update the current snapshot of the table's histograms on the TABLE_SHARE.

After the histogram command has been handled we check whether a fatal error was encountered:

  • If not we send the result of histogram operations back to the client as a result set along with any errors in the diagnostics area. The diagnostics area is cleared following this operation.
  • If a fatal error was encountered we propagate the error up and leave the diagnostics area as it is.
Parameters
thdThread handler.
tableThe table specified in ANALYZE TABLE
Returns
True if a fatal error was encountered or if sending the results of the histogram operations fails. False otherwise (even if the histogram operations themselves fail, without a fatal error).

◆ handle_histogram_command_inner()

bool Sql_cmd_analyze_table::handle_histogram_command_inner ( THD thd,
Table_ref table,
histograms::results_map results 
)
private

◆ send_histogram_results()

bool Sql_cmd_analyze_table::send_histogram_results ( THD thd,
const histograms::results_map results,
const Table_ref table 
)
private

Send the result of histogram operations back to the client as a result set.

Parameters
thdThread handle.
resultsThe messages to send back to the client.
tableThe table the operations was performed on.
Returns
false on success, true otherwise.

◆ set_histogram_fields()

bool Sql_cmd_analyze_table::set_histogram_fields ( List< String > *  fields)

Set which fields to (try and) create/update or delete histogram statistics for.

◆ sql_command_code()

enum_sql_command Sql_cmd_analyze_table::sql_command_code ( ) const
inlineoverridevirtual

Return the command code for this statement.

Implements Sql_cmd.

Reimplemented in Sql_cmd_alter_table_analyze_partition.

◆ update_histogram()

bool Sql_cmd_analyze_table::update_histogram ( THD thd,
Table_ref table,
histograms::results_map results 
)
private

Update one or more histograms.

This is invoked by running the command "ANALYZE TABLE tbl UPDATE HISTOGRAM ON col1, col2 WITH n BUCKETS". Note that the function expects exactly one table to be specified, but multiple columns can be specified.

Parameters
thdThread handler.
tableThe table specified in ANALYZE TABLE
resultsA map where the results of the operations will be stored.
Returns
False on success, true if a fatal error was encountered when updating histograms, or if no histograms were updated.

Member Data Documentation

◆ m_data

const LEX_STRING Sql_cmd_analyze_table::m_data
private

The histogram json literal for update.

◆ m_histogram_auto_update

bool Sql_cmd_analyze_table::m_histogram_auto_update
private

True if AUTO UPDATE was specified by the user in UPDATE HISTOGRAM.

◆ m_histogram_buckets

int Sql_cmd_analyze_table::m_histogram_buckets
private

The number of buckets specified by the user in UPDATE HISTOGRAM.

◆ m_histogram_command

Histogram_command Sql_cmd_analyze_table::m_histogram_command = Histogram_command::NONE
private

Which histogram command (if any) is specified.

◆ m_histogram_fields

columns_set Sql_cmd_analyze_table::m_histogram_fields
private

The fields specified by the user in UPDATE/DROP HISTOGRAM.


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