MySQL 8.0.39
Source Code Documentation
|
#include "sql/sql_delete.h"
#include <assert.h>
#include <limits.h>
#include <sys/types.h>
#include <atomic>
#include <memory>
#include <utility>
#include "lex_string.h"
#include "mem_root_deque.h"
#include "my_alloc.h"
#include "my_base.h"
#include "my_dbug.h"
#include "my_inttypes.h"
#include "my_sys.h"
#include "my_table_map.h"
#include "mysql_com.h"
#include "mysqld_error.h"
#include "scope_guard.h"
#include "sql/auth/auth_acls.h"
#include "sql/auth/auth_common.h"
#include "sql/binlog.h"
#include "sql/debug_sync.h"
#include "sql/filesort.h"
#include "sql/handler.h"
#include "sql/item.h"
#include "sql/iterators/delete_rows_iterator.h"
#include "sql/iterators/row_iterator.h"
#include "sql/join_optimizer/access_path.h"
#include "sql/join_optimizer/bit_utils.h"
#include "sql/join_optimizer/walk_access_paths.h"
#include "sql/key_spec.h"
#include "sql/mem_root_array.h"
#include "sql/mysqld.h"
#include "sql/opt_explain.h"
#include "sql/opt_explain_format.h"
#include "sql/opt_trace.h"
#include "sql/psi_memory_key.h"
#include "sql/query_options.h"
#include "sql/query_result.h"
#include "sql/range_optimizer/partition_pruning.h"
#include "sql/range_optimizer/path_helpers.h"
#include "sql/range_optimizer/range_optimizer.h"
#include "sql/sql_base.h"
#include "sql/sql_bitmap.h"
#include "sql/sql_class.h"
#include "sql/sql_const.h"
#include "sql/sql_error.h"
#include "sql/sql_executor.h"
#include "sql/sql_lex.h"
#include "sql/sql_list.h"
#include "sql/sql_opt_exec_shared.h"
#include "sql/sql_optimizer.h"
#include "sql/sql_resolver.h"
#include "sql/sql_select.h"
#include "sql/sql_update.h"
#include "sql/sql_view.h"
#include "sql/system_variables.h"
#include "sql/table.h"
#include "sql/table_trigger_dispatcher.h"
#include "sql/thd_raii.h"
#include "sql/transaction_info.h"
#include "sql/trigger_def.h"
#include "sql/uniques.h"
Classes | |
class | anonymous_namespace{sql_delete.cc}::Query_result_delete |
Namespaces | |
namespace | anonymous_namespace{sql_delete.cc} |
Functions | |
bool | anonymous_namespace{sql_delete.cc}::DeleteCurrentRowAndProcessTriggers (THD *thd, TABLE *table, bool invoke_before_triggers, bool invoke_after_triggers, ha_rows *deleted_rows) |
int | refpos_order_cmp (const void *arg, const void *a, const void *b) |
void | SetUpTablesForDelete (THD *thd, JOIN *join) |
Sets various flags in the TABLE and handler objects associated with the target tables of a DELETE statement, in order to make them ready to be deleted from. More... | |
bool | CheckSqlSafeUpdate (THD *thd, const JOIN *join) |
Checks if the sql_safe_updates option is enabled, and raises an error and returns true if the statement is likely to delete or update a large number of rows. More... | |
table_map | GetImmediateDeleteTables (const JOIN *join, table_map delete_tables) |
Find out which of the delete target tables can be deleted from immediately while scanning. More... | |
Checks if the sql_safe_updates option is enabled, and raises an error and returns true if the statement is likely to delete or update a large number of rows.
Specifically, it raises an error if there is a full table scan or full index scan of one of the tables deleted from, and there is no LIMIT clause.
Find out which of the delete target tables can be deleted from immediately while scanning.
This is used by the old optimizer after the plan has been created. The hypergraph optimizer does not use this function, as it makes the decision about immediate delete during planning, not after planning.
int refpos_order_cmp | ( | const void * | arg, |
const void * | a, | ||
const void * | b | ||
) |