MySQL 8.4.2
Source Code Documentation
|
Class that represents the ALTER TABLE t1 EXCHANGE PARTITION p WITH TABLE t2 statement. More...
#include <sql_partition_admin.h>
Public Member Functions | |
bool | execute (THD *thd) override |
Execute this SQL statement. More... | |
Public Member Functions inherited from Sql_cmd_common_alter_table | |
~Sql_cmd_common_alter_table () override=0 | |
enum_sql_command | sql_command_code () const final |
Return the command code for this statement. More... | |
Sql_cmd_ddl_table (Alter_info *alter_info) | |
Public Member Functions inherited from Sql_cmd_ddl_table | |
Sql_cmd_ddl_table (Alter_info *alter_info) | |
~Sql_cmd_ddl_table () override=0 | |
Public Member Functions inherited from Sql_cmd_ddl | |
enum enum_sql_cmd_type | sql_cmd_type () const override |
Public Member Functions inherited from Sql_cmd | |
bool | needs_explicit_preparation () const |
bool | is_regular () const |
bool | is_prepared () const |
virtual bool | prepare (THD *) |
Prepare this SQL statement. 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 bool | is_single_table_plan () const |
virtual bool | accept (THD *, Select_lex_visitor *) |
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 () |
Private Member Functions | |
bool | exchange_partition (THD *thd, Table_ref *, Alter_info *) |
Swap places between a partition and a table. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from Sql_cmd | |
Sql_cmd () | |
virtual | ~Sql_cmd () |
void | set_prepared () |
Set this statement as prepared. More... | |
Protected Attributes inherited from Sql_cmd_ddl_table | |
Alter_info *const | m_alter_info |
Class that represents the ALTER TABLE t1 EXCHANGE PARTITION p WITH TABLE t2 statement.
|
private |
Swap places between a partition and a table.
Verify that the tables are compatible (same engine, definition etc), verify that all rows in the table will fit in the partition, if all OK, rename table to tmp name, rename partition to table and finally rename tmp name to partition.
1) Take upgradable mdl, open tables and then lock them (inited in parse) 2) Verify that metadata matches 3) verify data 4) Upgrade to exclusive mdl for both tables 5) Rename table <-> partition 6) Rely on close_thread_tables to release mdl and table locks
thd | Thread handle |
table_list | Table where the partition exists as first table, Table to swap with the partition as second table |
alter_info | Contains partition name to swap |
|
overridevirtual |
Execute this SQL statement.
thd | the current thread. |
Implements Sql_cmd.