24#ifndef SQL_UPDATE_INCLUDED
25#define SQL_UPDATE_INCLUDED
This class encapsulates a data change operation.
Definition: sql_data_change.h:74
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:930
Definition: sql_optimizer.h:133
Definition: sql_list.h:494
This class represents a query block, aka a query specification, which is a query consisting of a SELE...
Definition: sql_lex.h:1159
This class represents a query expression (one query block or several query blocks combined with UNION...
Definition: sql_lex.h:627
Definition: query_result.h:181
Definition: sql_update.h:57
Table_ref * update_tables
Pointer to list of updated tables, linked via 'next_local'.
Definition: sql_update.h:61
Copy_field * copy_field
???
Definition: sql_update.h:90
bool do_updates(THD *thd)
const mem_root_deque< Item * > * values
List of pointers to values to update with, in order from statement.
Definition: sql_update.h:79
TABLE * table_to_update
In a multi-table update, this is equal to the first table in the join operation (main_table) if that ...
Definition: sql_update.h:75
bool need_explain_interceptor() const override
Definition: sql_update.h:112
mem_root_deque< Item * > ** fields_for_table
The fields list decomposed into separate lists per table.
Definition: sql_update.h:81
Temp_table_param * tmp_table_param
Array of parameter structs for creation of temporary tables.
Definition: sql_update.h:65
unique_ptr_destroy_only< RowIterator > create_iterator(THD *thd, MEM_ROOT *mem_root, unique_ptr_destroy_only< RowIterator > source)
Definition: sql_update.cc:3073
bool prepare(THD *thd, const mem_root_deque< Item * > &list, Query_expression *u) override
Perform preparation specific to the query expression or DML statement.
Definition: sql_update.cc:1830
TABLE ** tmp_tables
Array of references to temporary tables used to store cached updates.
Definition: sql_update.h:63
bool start_execution(THD *thd) override
Prepare for execution of the query expression or DML statement.
Definition: sql_update.cc:2381
List< TABLE > unupdated_check_opt_tables
List of tables referenced in the CHECK OPTION condition of the updated view excluding the updated tab...
Definition: sql_update.h:88
bool send_data(THD *thd, const mem_root_deque< Item * > &items) override
Definition: sql_update.cc:2415
COPY_INFO ** update_operations
Array of update operations, arranged per updated table.
Definition: sql_update.h:106
const mem_root_deque< Item * > * fields
List of pointers to fields to update, in order from statement.
Definition: sql_update.h:77
bool send_eof(THD *thd) override
Definition: sql_update.cc:2945
void cleanup() override
Cleanup after this execution.
Definition: sql_update.cc:2387
TABLE * main_table
The first table in the join operation.
Definition: sql_update.h:67
bool optimize()
Set up data structures for multi-table UPDATE.
Definition: sql_update.cc:2187
uint update_table_count
Number of tables being updated.
Definition: sql_update.h:59
mem_root_deque< Item * > ** values_for_table
The values list decomposed into separate lists per table.
Definition: sql_update.h:83
Query_result_update(mem_root_deque< Item * > *field_list, mem_root_deque< Item * > *value_list)
Definition: sql_update.h:109
A context for reading through a single table using a chosen access method: index read,...
Definition: row_iterator.h:82
Abstract base class for traversing the Query_block tree.
Definition: select_lex_visitor.h:40
Definition: sql_cmd_dml.h:35
Definition: sql_update.h:126
bool precheck(THD *thd) override
Perform a precheck of table privileges for the specific operation.
Definition: sql_update.cc:128
enum_sql_command sql_command_code() const override
Return the command code for this statement.
Definition: sql_update.h:133
bool prepare_inner(THD *thd) override
Perform the command-specific parts of DML command preparation, to be called from prepare()
Definition: sql_update.cc:1473
Sql_cmd_update(bool multitable_arg, mem_root_deque< Item * > *update_values)
Definition: sql_update.h:128
bool check_privileges(THD *thd) override
Check privileges on a prepared statement, called at start of execution of the statement.
Definition: sql_update.cc:194
mem_root_deque< Item * > * update_value_list
The values used to update fields.
Definition: sql_update.h:164
table_map tables_for_update
Bitmap of all tables which are to be updated.
Definition: sql_update.h:153
bool multitable
Definition: sql_update.h:150
bool execute_inner(THD *thd) override
The inner parts of query optimization and execution.
Definition: sql_update.cc:1807
mem_root_deque< Item * > original_fields
The original list of fields to update, used for privilege checking.
Definition: sql_update.h:162
bool update_single_table(THD *thd)
Perform an update to a set of rows in a single table.
Definition: sql_update.cc:367
bool is_single_table_plan() const override
Definition: sql_update.h:137
bool make_base_table_fields(THD *thd, mem_root_deque< Item * > *items)
Convert list of fields to update to base table fields.
Definition: sql_update.cc:311
bool accept(THD *thd, Select_lex_visitor *visitor) override
Definition: sql_update.cc:2966
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:36
Object containing parameters used when creating and using temporary tables.
Definition: temp_table_param.h:97
A (partial) implementation of std::deque allocating its blocks on a MEM_ROOT.
Definition: mem_root_deque.h:111
static MEM_ROOT mem_root
Definition: client_plugin.cc:114
This file follows Google coding style, except for the name MEM_ROOT (which is kept for historical rea...
std::unique_ptr< T, Destroy_only< T > > unique_ptr_destroy_only
std::unique_ptr, but only destroying.
Definition: my_alloc.h:480
enum_sql_command
Definition: my_sqlcommand.h:46
@ SQLCOM_UPDATE
Definition: my_sqlcommand.h:51
@ SQLCOM_UPDATE_MULTI
Definition: my_sqlcommand.h:122
uint64_t table_map
Definition: my_table_map.h:30
thread_local MEM_ROOT ** THR_MALLOC
Definition: mysqld.cc:1569
static PFS_engine_table_share_proxy table
Definition: pfs.cc:61
std::string join(const detail::range auto &rng, std::string_view delim)
join elements of a range into a string separated by a delimiter.
Definition: string.h:74
std::list< T, ut::allocator< T > > list
Specialization of list which uses ut_allocator.
Definition: ut0new.h:2880
repeated Source source
Definition: replication_asynchronous_connection_failover.proto:42
bool records_are_comparable(const TABLE *table)
True if the table's input and output record buffers are comparable using compare_records(TABLE*).
Definition: sql_update.cc:237
table_map GetImmediateUpdateTable(const JOIN *join, bool single_target)
Find out which of the target tables can be updated immediately while scanning.
Definition: sql_update.cc:2998
unique_ptr_destroy_only< RowIterator > CreateUpdateRowsIterator(THD *thd, MEM_ROOT *mem_root, JOIN *join, unique_ptr_destroy_only< RowIterator > source)
Creates an UpdateRowsIterator which updates the rows returned by the given "source" iterator.
Definition: sql_update.cc:3066
bool FinalizeOptimizationForUpdate(JOIN *join)
Makes the TABLE and handler objects ready for being used in an UPDATE statement.
Definition: sql_update.cc:3040
bool compare_records(const TABLE *table)
Compares the input and output record buffers of the table to see if a row has changed.
Definition: sql_update.cc:255
bool should_switch_to_multi_table_if_subqueries(const THD *thd, const Query_block *select, const Table_ref *table_list)
Decides if a single-table UPDATE/DELETE statement should switch to the multi-table code path,...
Definition: sql_update.cc:1439
The MEM_ROOT is a simple arena, where allocations are carved out of larger blocks.
Definition: my_alloc.h:83