MySQL 9.1.0
Source Code Documentation
|
#include <sql_update.h>
Public Member Functions | |
Sql_cmd_update (bool multitable_arg, mem_root_deque< 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 |
bool | prepare (THD *thd) override |
Command-specific resolving (doesn't include LEX::prepare()) More... | |
bool | execute (THD *thd) override |
Execute a DML statement. More... | |
enum enum_sql_cmd_type | sql_cmd_type () const override |
virtual bool | may_use_cursor () const |
Query_result * | query_result () const |
void | set_query_result (Query_result *result) |
Set query result object for this query statement. More... | |
void | set_lazy_result () |
Signal that root result object needs preparing in next execution. More... | |
bool | are_dynamic_parameters_allowed () const final |
Signal that DML statement can have dynamic parameters. More... | |
Public Member Functions inherited from Sql_cmd | |
bool | needs_explicit_preparation () const |
bool | is_regular () const |
bool | is_prepared () const |
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_statement * | owner () 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 const MYSQL_LEX_CSTRING * | eligible_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 |
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 handlerton * | secondary_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 () |
Public Attributes | |
mem_root_deque< Item * > | original_fields |
The original list of fields to update, used for privilege checking. More... | |
mem_root_deque< Item * > * | update_value_list |
The values used to update fields. More... | |
Protected Member Functions | |
bool | precheck (THD *thd) override |
Perform a precheck of table privileges for the specific operation. More... | |
bool | check_privileges (THD *thd) override |
Check privileges on a prepared statement, called at start of execution of the statement. 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... | |
bool | check_all_table_privileges (THD *thd) |
Read and check privileges for all tables in a DML statement. More... | |
virtual bool | restore_cmd_properties (THD *thd) |
Restore command properties before execution. More... | |
virtual bool | save_cmd_properties (THD *thd) |
Save command properties, such as prepared query details and table props. More... | |
const MYSQL_LEX_CSTRING * | get_eligible_secondary_engine (THD *thd) const |
Helper function that checks if the command is eligible for secondary engine and if that's true returns the name of that eligible secondary storage engine. More... | |
Protected Member Functions inherited from Sql_cmd | |
Sql_cmd () | |
virtual | ~Sql_cmd () |
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 |
bool | make_base_table_fields (THD *thd, mem_root_deque< Item * > *items) |
Convert list of fields to update to base table fields. More... | |
Private Attributes | |
bool | multitable |
table_map | tables_for_update {0} |
Bitmap of all tables which are to be updated. More... | |
Additional Inherited Members | |
Protected Attributes inherited from Sql_cmd_dml | |
LEX * | lex |
Pointer to LEX for this statement. More... | |
Query_result * | result |
Pointer to object for handling of the result. More... | |
bool | m_empty_query |
True if query will produce no rows. More... | |
bool | m_lazy_result |
True: prepare query result on next execution. More... | |
|
inline |
|
overrideprivatevirtual |
Reimplemented from Sql_cmd.
|
overrideprotectedvirtual |
Check privileges on a prepared statement, called at start of execution of the statement.
Check that user has all relevant privileges to the statement, ie. INSERT privilege for columns inserted into, UPDATE privilege for columns that are updated, DELETE privilege for tables that are deleted from, SELECT privilege for columns that are referenced, etc.
thd | thread handler |
Implements Sql_cmd_dml.
|
overrideprotectedvirtual |
The inner parts of query optimization and execution.
Execute a DML statement.
Single-table DML operations needs to reimplement this.
thd | Thread handler |
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.
|
inlineoverridevirtual |
Reimplemented from Sql_cmd_dml.
|
private |
Convert list of fields to update to base table fields.
Check that all fields are base table columns.
Replace columns from views with base table columns.
thd | thread handler |
items | Items for check |
|
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_ref::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 Query_block::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. This function is called before preparing the statement. The function must also be complemented with proper privilege checks for all involved columns (e.g. check_column_grant_*).
thd | thread handler |
Implements Sql_cmd_dml.
|
overrideprotectedvirtual |
Perform the command-specific parts of DML command preparation, to be called from prepare()
thd | the current thread |
Implements Sql_cmd_dml.
|
inlineoverridevirtual |
Return the command code for this statement.
Implements Sql_cmd.
|
private |
Perform an update to a set of rows in a single table.
thd | Thread handler |
< Flag for fatal errors
read_removal is only used by NDB storage engine
|
private |
mem_root_deque<Item *> Sql_cmd_update::original_fields |
The original list of fields to update, used for privilege checking.
|
private |
Bitmap of all tables which are to be updated.
mem_root_deque<Item *>* Sql_cmd_update::update_value_list |
The values used to update fields.