![]() |
MySQL 9.5.0
Source Code Documentation
|
Helper class for in-place alter partitions, see handler.h. More...
Public Member Functions | |
| alter_parts (trx_t *trx, Ha_innopart_share *part_share, const Alter_inplace_info *ha_alter_info, partition_info *old_part_info, Altered_partitions *new_partitions) | |
| Constructor. More... | |
| ~alter_parts () override | |
| Destructor. More... | |
| int | prepare (const dd::Table &old_dd_tab, dd::Table &new_dd_tab, TABLE *altered_table) |
| Create the to be created partitions and update internal structures with concurrent writes blocked, while preparing ALTER TABLE. More... | |
| void | rollback () |
| Notify the storage engine that the changes made during prepare_inplace_alter_table() and inplace_alter_table() will be rolled back for all the partitions. More... | |
| int | try_commit (const dd::Table &old_dd_tab, dd::Table &new_dd_tab, const TABLE *table, TABLE *altered_table) |
| Try to commit the changes made during prepare_inplace_alter_table() inside the storage engine. More... | |
Public Member Functions inherited from inplace_alter_handler_ctx | |
| inplace_alter_handler_ctx ()=default | |
| virtual void | set_shared_data (const inplace_alter_handler_ctx *ctx) |
| virtual | ~inplace_alter_handler_ctx ()=default |
Static Public Member Functions | |
| static bool | apply_to (const Alter_inplace_info *ha_alter_info) |
| Determine if this is an ALTER TABLE ... PARTITION operation. More... | |
| static bool | need_copy (const Alter_inplace_info *ha_alter_info) |
| Determine if copying data between partitions is necessary. More... | |
Static Public Attributes | |
| static constexpr Alter_inplace_info::HA_ALTER_FLAGS | OPERATIONS |
| Operations that the native partitioning can perform inplace. More... | |
Private Member Functions | |
| bool | prepare_alter_part (const dd::Table &old_dd_tab, dd::Table &new_dd_tab) |
| Initialize the m_news and m_to_drop array here. More... | |
| int | prepare_or_commit_for_new (const dd::Table &old_dd_tab, dd::Table &new_dd_tab, TABLE *altered_table, bool prepare) |
| Prepare or commit for all the partitions in table after ALTER TABLE. More... | |
| int | prepare_or_commit_for_old (const dd::Table &old_dd_tab, TABLE *altered_table, bool prepare) |
| Prepare or commit for all the partitions in table before ALTER TABLE. More... | |
Private Attributes | |
| trx_t *const | m_trx |
| InnoDB transaction. More... | |
| Ha_innopart_share *const | m_part_share |
| InnoDB partition specific Handler_share. More... | |
| const Alter_inplace_info *const | m_ha_alter_info |
| Operation being performed. More... | |
| Altered_partitions *const | m_new_partitions |
| New partitions helper. More... | |
| alter_part_factory | m_factory |
| alter_part factory which creates all the necessary alter_part_* More... | |
| alter_part_array | m_news |
| The alter_part array for all the newly created partitions. More... | |
| alter_part_array | m_to_drop |
| The alter_part array for all the to be dropped partitions. More... | |
Helper class for in-place alter partitions, see handler.h.
|
inline |
Constructor.
| [in,out] | trx | InnoDB transaction |
| [in,out] | part_share | Innopart share |
| [in] | ha_alter_info | ALTER information |
| [in] | old_part_info | Partition info of the table before ALTER TABLE |
| [in,out] | new_partitions | Altered partition helper |
|
override |
Destructor.
|
inlinestatic |
Determine if this is an ALTER TABLE ... PARTITION operation.
| [in] | ha_alter_info | thd DDL operation |
|
inlinestatic |
Determine if copying data between partitions is necessary.
| [in] | ha_alter_info | thd DDL operation |
| int alter_parts::prepare | ( | const dd::Table & | old_dd_tab, |
| dd::Table & | new_dd_tab, | ||
| TABLE * | altered_table | ||
| ) |
Create the to be created partitions and update internal structures with concurrent writes blocked, while preparing ALTER TABLE.
| [in] | old_dd_tab | dd::Table before ALTER TABLE |
| [in,out] | new_dd_tab | dd::Table after ALTER TABLE |
| [in,out] | altered_table | Table definition after the ALTER |
|
private |
Initialize the m_news and m_to_drop array here.
| [in] | old_dd_tab | dd::Table before ALTER TABLE |
| [in] | new_dd_tab | dd::Table after ALTER TABLE |
| true | if success |
| false | on failure |
|
private |
Prepare or commit for all the partitions in table after ALTER TABLE.
Prepare for all the partitions in table after ALTER TABLE.
| [in] | old_dd_tab | dd::Table before ALTER TABLE |
| [in,out] | new_dd_tab | dd::Table after ALTER TABLE |
| [in,out] | altered_table | Table definition after the ALTER |
| [in] | prepare | true if it's in prepare phase, false if it's in commit phase |
|
private |
Prepare or commit for all the partitions in table before ALTER TABLE.
| [in] | old_dd_tab | dd::Table before ALTER TABLE |
| [in,out] | altered_table | Table definition after the ALTER |
| [in] | prepare | true if it's in prepare phase, false if it's in commit phase |
| void alter_parts::rollback | ( | ) |
Notify the storage engine that the changes made during prepare_inplace_alter_table() and inplace_alter_table() will be rolled back for all the partitions.
| int alter_parts::try_commit | ( | const dd::Table & | old_dd_tab, |
| dd::Table & | new_dd_tab, | ||
| const TABLE * | table, | ||
| TABLE * | altered_table | ||
| ) |
Try to commit the changes made during prepare_inplace_alter_table() inside the storage engine.
This is protected by MDL_EXCLUSIVE.
| [in] | old_dd_tab | dd::Table before ALTER TABLE |
| [in,out] | new_dd_tab | dd::Table after ALTER TABLE |
| [in] | table | Table definition before the ALTER |
| [in,out] | altered_table | Table definition after the ALTER |
|
private |
alter_part factory which creates all the necessary alter_part_*
|
private |
Operation being performed.
|
private |
New partitions helper.
|
private |
The alter_part array for all the newly created partitions.
|
private |
InnoDB partition specific Handler_share.
|
private |
The alter_part array for all the to be dropped partitions.
|
private |
InnoDB transaction.
|
staticconstexpr |
Operations that the native partitioning can perform inplace.