MySQL  8.0.18
Source Code Documentation
Sql_cmd_update Class Referencefinal

#include <sql_update.h>

Inheritance diagram for Sql_cmd_update:
Sql_cmd_dml Sql_cmd

Public Member Functions

 Sql_cmd_update (bool multitable_arg, List< Item > *update_values)
 
enum_sql_command sql_command_code () const override
 Return the command code for this statement. More...
 
bool is_single_table_plan () const override
 
- Public Member Functions inherited from Sql_cmd_dml
virtual bool is_data_change_stmt () const
 
virtual bool prepare (THD *thd)
 Command-specific resolving (doesn't include LEX::prepare()) More...
 
virtual bool execute (THD *thd)
 Execute this query once. More...
 
virtual bool is_dml () const
 
- Public Member Functions inherited from Sql_cmd
bool is_prepared () const
 
virtual void cleanup (THD *thd)
 Command-specific reinitialization before execution of prepared statement. More...
 
void set_owner (Prepared_statement *stmt)
 Set the owning prepared statement. More...
 
Prepared_statementget_owner ()
 Get the owning prepared statement. More...
 
virtual void unprepare (THD *thd)
 Temporary function used to "unprepare" a prepared statement after preparation, so that a subsequent execute statement will reprepare it. More...
 
virtual const MYSQL_LEX_CSTRINGeligible_secondary_storage_engine () const
 Is this statement of a type and on a form that makes it eligible for execution in a secondary storage engine? More...
 
void disable_secondary_storage_engine ()
 Disable use of secondary storage engines in this statement. More...
 
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...
 

Public Attributes

List< Item > * update_value_list
 

Protected Member Functions

bool precheck (THD *thd) override
 Perform a precheck of table privileges for the specific operation. More...
 
bool prepare_inner (THD *thd) override
 Perform the command-specific parts of DML command preparation, to be called from prepare() More...
 
bool execute_inner (THD *thd) override
 The inner parts of query optimization and execution. More...
 
- Protected Member Functions inherited from Sql_cmd_dml
 Sql_cmd_dml ()
 
bool is_empty_query () const
 
void set_empty_query ()
 Set statement as returning no data. More...
 
- Protected Member Functions inherited from Sql_cmd
 Sql_cmd ()
 
virtual ~Sql_cmd ()
 
bool needs_explicit_preparation () const
 
void set_prepared ()
 Set this statement as prepared. More...
 

Private Member Functions

bool update_single_table (THD *thd)
 Perform an update to a set of rows in a single table. More...
 
bool accept (THD *thd, Select_lex_visitor *visitor) override
 

Private Attributes

bool multitable
 

Additional Inherited Members

- Protected Attributes inherited from Sql_cmd_dml
LEXlex
 Pointer to LEX for this statement. More...
 
Query_resultresult
 Pointer to object for handling of the result. More...
 
bool m_empty_query
 True if query will produce no rows. More...
 
- Protected Attributes inherited from Sql_cmd
bool prepare_only
 

Constructor & Destructor Documentation

◆ Sql_cmd_update()

Sql_cmd_update::Sql_cmd_update ( bool  multitable_arg,
List< Item > *  update_values 
)
inline

Member Function Documentation

◆ accept()

bool Sql_cmd_update::accept ( THD thd,
Select_lex_visitor visitor 
)
overrideprivatevirtual

Reimplemented from Sql_cmd.

◆ execute_inner()

bool Sql_cmd_update::execute_inner ( THD thd)
overrideprotectedvirtual

The inner parts of query optimization and execution.

Execute a DML statement.

Single-table DML operations needs to reimplement this.

Parameters
thdThread handler
Returns
false on success, true on error

This is the default implementation for a DML statement and uses a nested-loop join processor per outer-most query block. The implementation is split in two: One for query expressions containing a single query block and one for query expressions containing multiple query blocks combined with UNION.

Reimplemented from Sql_cmd_dml.

◆ is_single_table_plan()

bool Sql_cmd_update::is_single_table_plan ( ) const
inlineoverridevirtual
Returns
true if implemented as single table plan, DML statement only

Reimplemented from Sql_cmd_dml.

◆ precheck()

bool Sql_cmd_update::precheck ( THD thd)
overrideprotectedvirtual

Perform a precheck of table privileges for the specific operation.

Check that user has some relevant privileges for all tables involved in the statement, e.g. SELECT privileges for tables selected from, INSERT privileges for tables inserted into, etc. This function will also populate TABLE_LIST::grant with all privileges the user has for each table, which is later used during checking of column privileges. Note that at preparation time, views are not expanded yet. Privilege checking is thus rudimentary and must be complemented with later calls to SELECT_LEX::check_view_privileges(). The reason to call this function at such an early stage is to be able to quickly reject statements for which the user obviously has insufficient privileges.

Parameters
thdthread handler
Returns
false if success, true if false

Implements Sql_cmd_dml.

◆ prepare_inner()

bool Sql_cmd_update::prepare_inner ( THD thd)
overrideprotectedvirtual

Perform the command-specific parts of DML command preparation, to be called from prepare()

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

Implements Sql_cmd_dml.

◆ sql_command_code()

enum_sql_command Sql_cmd_update::sql_command_code ( ) const
inlineoverridevirtual

Return the command code for this statement.

Implements Sql_cmd.

◆ update_single_table()

bool Sql_cmd_update::update_single_table ( THD thd)
private

Perform an update to a set of rows in a single table.

Parameters
thdThread handler
Returns
false if success, true if error

< Flag for fatal errors
read_removal is only used by NDB storage engine

Member Data Documentation

◆ multitable

bool Sql_cmd_update::multitable
private

◆ update_value_list

List<Item>* Sql_cmd_update::update_value_list

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