MySQL 8.4.2
Source Code Documentation
|
Functions | |
bool | create_temporary_schemas (THD *thd, Object_id *mysql_schema_id, Object_id *target_table_schema_id, String_type *target_table_schema_name, Object_id *actual_table_schema_id) |
void | establish_table_name_sets (std::set< String_type > *create_set, std::set< String_type > *remove_set) |
bool | update_meta_data (THD *thd) |
Adjust metadata in source DD tables in mysql schema. More... | |
bool | migrate_meta_data (THD *thd, const std::set< String_type > &create_set, const std::set< String_type > &remove_set) |
Copy meta data from the actual tables to the target tables. More... | |
bool | update_object_ids (THD *thd, const std::set< String_type > &create_set, const std::set< String_type > &remove_set, Object_id mysql_schema_id, Object_id target_table_schema_id, const String_type &target_table_schema_name, Object_id actual_table_schema_id) |
bool dd::anonymous_namespace{dd.cc}::create_temporary_schemas | ( | THD * | thd, |
Object_id * | mysql_schema_id, | ||
Object_id * | target_table_schema_id, | ||
String_type * | target_table_schema_name, | ||
Object_id * | actual_table_schema_id | ||
) |
void dd::anonymous_namespace{dd.cc}::establish_table_name_sets | ( | std::set< String_type > * | create_set, |
std::set< String_type > * | remove_set | ||
) |
bool dd::anonymous_namespace{dd.cc}::migrate_meta_data | ( | THD * | thd, |
const std::set< String_type > & | create_set, | ||
const std::set< String_type > & | remove_set | ||
) |
Copy meta data from the actual tables to the target tables.
The default is to copy all data. This is sufficient if we e.g. add a new index in the new DD version. If there are changes to the table columns, e.g. if we add or remove a column, we must add code to handle each case specifically. Suppose e.g. we add a new column to allow defining a default tablespace for each schema, and store the tablespace id in that column. Then, we could migrate the meta data for 'schemata' and set a default value for all existing schemas:
... migrated_set.insert("schemata"); if (dd::execute_query(thd, "INSERT INTO schemata " "SELECT id, catalog_id, name, default_collation_id, 1, " " created, last_altered, options FROM mysql.schemata")) ...
The code block above would go into the 'Version dependent migration' part of the function below.
thd | Thread context. |
create_set | Set of new or modified tables to be created. |
remove_set | Set of abandoned or modified tables to be removed. |
bool dd::anonymous_namespace{dd.cc}::update_meta_data | ( | THD * | thd | ) |
Adjust metadata in source DD tables in mysql schema.
This is done by mostly executing UPDATE queries on them, but we do not migrate data to destination DD tables.
thd | Thread context. |
bool dd::anonymous_namespace{dd.cc}::update_object_ids | ( | THD * | thd, |
const std::set< String_type > & | create_set, | ||
const std::set< String_type > & | remove_set, | ||
Object_id | mysql_schema_id, | ||
Object_id | target_table_schema_id, | ||
const String_type & | target_table_schema_name, | ||
Object_id | actual_table_schema_id | ||
) |