23#ifndef SQL_UPDATE_INCLUDED
24#define SQL_UPDATE_INCLUDED
This class encapsulates a data change operation.
Definition: sql_data_change.h:73
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:802
Definition: sql_list.h:433
This class represents a query block, aka a query specification, which is a query consisting of a SELE...
Definition: sql_lex.h:1124
This class represents a query expression (one query block or several query blocks combined with UNION...
Definition: sql_lex.h:629
Definition: query_result.h:200
Definition: sql_update.h:53
void abort_result_set(THD *thd) override
Definition: sql_update.cc:2493
Copy_field * copy_field
???
Definition: sql_update.h:90
bool do_updates(THD *thd)
Definition: sql_update.cc:2535
bool error_handled
error handling (rollback and binlogging) can happen in send_eof() so that afterward send_error() need...
Definition: sql_update.h:103
bool update_completed
True if the full update operation is complete.
Definition: sql_update.h:94
mem_root_deque< Item * > * fields
List of pointers to fields to update, in order from statement.
Definition: sql_update.h:77
bool trans_safe
True if all tables to be updated are transactional.
Definition: sql_update.h:96
ha_rows updated_rows
Number of rows actually updated, in all affected tables.
Definition: sql_update.h:75
mem_root_deque< Item * > * values
List of pointers to values to update with, in order from statement.
Definition: sql_update.h:79
bool transactional_tables
True if the update operation has made a change in a transactional table.
Definition: sql_update.h:98
ha_rows found_rows
Number of rows found that matches join and WHERE conditions.
Definition: sql_update.h:73
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:71
bool need_explain_interceptor() const override
Definition: sql_update.h:125
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:61
bool optimize() override
Set up data structures for multi-table UPDATE.
Definition: sql_update.cc:2004
void cleanup(THD *thd) override
Cleanup after this execution.
Definition: sql_update.cc:2279
size_t max_fields
Length of the copy_field array.
Definition: sql_update.h:92
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:1779
bool immediate_update(TABLE_LIST *t) const override
If this Query_result performs modifications to tables: tells if it modifies the given table's row as ...
Definition: sql_update.cc:2882
TABLE ** tmp_tables
Array of references to temporary tables used to store cached updates.
Definition: sql_update.h:59
bool start_execution(THD *thd) override
Prepare for execution of the query expression or DML statement.
Definition: sql_update.cc:2272
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:2320
COPY_INFO ** update_operations
Array of update operations, arranged per updated table.
Definition: sql_update.h:119
bool send_eof(THD *thd) override
Definition: sql_update.cc:2810
void send_error(THD *thd, uint errcode, const char *err) override
Definition: sql_update.cc:2488
TABLE_LIST * update_tables
Pointer to list of updated tables, linked via 'next_local'.
Definition: sql_update.h:57
TABLE * main_table
The first table in the join operation.
Definition: sql_update.h:63
uint update_table_count
Number of tables being updated.
Definition: sql_update.h:55
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:122
Abstract base class for traversing the Query_block tree.
Definition: select_lex_visitor.h:39
Definition: sql_cmd_dml.h:34
Definition: sql_update.h:140
bool precheck(THD *thd) override
Perform a precheck of table privileges for the specific operation.
Definition: sql_update.cc:123
enum_sql_command sql_command_code() const override
Return the command code for this statement.
Definition: sql_update.h:147
bool prepare_inner(THD *thd) override
Perform the command-specific parts of DML command preparation, to be called from prepare()
Definition: sql_update.cc:1436
Sql_cmd_update(bool multitable_arg, mem_root_deque< Item * > *update_values)
Definition: sql_update.h:142
bool check_privileges(THD *thd) override
Check privileges on a prepared statement, called at start of execution of the statement.
Definition: sql_update.cc:189
mem_root_deque< Item * > * update_value_list
The values used to update fields.
Definition: sql_update.h:178
table_map tables_for_update
Bitmap of all tables which are to be updated.
Definition: sql_update.h:167
bool multitable
Definition: sql_update.h:164
bool execute_inner(THD *thd) override
The inner parts of query optimization and execution.
Definition: sql_update.cc:1756
mem_root_deque< Item * > original_fields
The original list of fields to update, used for privilege checking.
Definition: sql_update.h:176
bool update_single_table(THD *thd)
Perform an update to a set of rows in a single table.
Definition: sql_update.cc:361
bool is_single_table_plan() const override
Definition: sql_update.h:151
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:305
bool accept(THD *thd, Select_lex_visitor *visitor) override
Definition: sql_update.cc:2886
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_class.h:945
Object containing parameters used when creating and using temporary tables.
Definition: temp_table_param.h:98
A (partial) implementation of std::deque allocating its blocks on a MEM_ROOT.
Definition: mem_root_deque.h:109
This file includes constants used by all storage engines.
my_off_t ha_rows
Definition: my_base.h:1139
enum_sql_command
Definition: my_sqlcommand.h:45
@ SQLCOM_UPDATE
Definition: my_sqlcommand.h:50
@ SQLCOM_UPDATE_MULTI
Definition: my_sqlcommand.h:121
uint64_t table_map
Definition: my_table_map.h:29
thread_local MEM_ROOT ** THR_MALLOC
Definition: mysqld.cc:1538
static Value err()
Create a Value object that represents an error condition.
Definition: json_binary.cc:908
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:231
bool compare_records(const TABLE *table)
Compares the input and outbut record buffers of the table to see if a row has changed.
Definition: sql_update.cc:249
bool should_switch_to_multi_table_if_subqueries(const THD *thd, const Query_block *select, const TABLE_LIST *table_list)
Decides if a single-table UPDATE/DELETE statement should switch to the multi-table code path,...
Definition: sql_update.cc:1403
TABLE * table
Definition: table.h:3458
unsigned int uint
Definition: uca-dump.cc:29