MCPcopy Create free account
hub / github.com/MariaDB/server / rename_table

Method rename_table

storage/mroonga/ha_mroonga.cpp:13500–13561  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13498#endif
13499
13500int ha_mroonga::rename_table(const char *from, const char *to)
13501{
13502 int error = 0;
13503 TABLE_LIST table_list;
13504 TABLE_SHARE *tmp_table_share;
13505 TABLE tmp_table;
13506 MRN_SHARE *tmp_share;
13507 MRN_DBUG_ENTER_METHOD();
13508 mrn::PathMapper to_mapper(to);
13509 mrn::PathMapper from_mapper(from);
13510 if (strcmp(from_mapper.db_name(), to_mapper.db_name()))
13511 DBUG_RETURN(HA_ERR_WRONG_COMMAND);
13512
13513 LEX_CSTRING db_name= { from_mapper.db_name(), strlen(from_mapper.db_name()) };
13514 LEX_CSTRING table_name= { from_mapper.mysql_table_name(),
13515 strlen(from_mapper.mysql_table_name()) };
13516 table_list.init_one_table(&db_name, &table_name, 0,TL_WRITE);
13517 mrn_open_mutex_lock(NULL);
13518 tmp_table_share = mrn_create_tmp_table_share(&table_list, from, &error);
13519 mrn_open_mutex_unlock(NULL);
13520 if (!tmp_table_share) {
13521 DBUG_RETURN(error);
13522 }
13523 tmp_table.s = tmp_table_share;
13524#ifdef WITH_PARTITION_STORAGE_ENGINE
13525 tmp_table.part_info = NULL;
13526#endif
13527 if (!(tmp_share = mrn_get_share(from, &tmp_table, &error)))
13528 {
13529 mrn_open_mutex_lock(NULL);
13530 mrn_free_tmp_table_share(tmp_table_share);
13531 mrn_open_mutex_unlock(NULL);
13532 DBUG_RETURN(error);
13533 }
13534
13535 if (tmp_share->wrapper_mode)
13536 {
13537 error = wrapper_rename_table(from, to, tmp_share,
13538 from_mapper.table_name(),
13539 to_mapper.table_name());
13540 } else {
13541 error = storage_rename_table(from, to, tmp_share,
13542 from_mapper.table_name(),
13543 to_mapper.table_name());
13544 }
13545
13546 if (!error && to_mapper.table_name()[0] == '#') {
13547 error = add_wrap_hton(to, tmp_share->hton);
13548 } else if (error && from_mapper.table_name()[0] == '#') {
13549 add_wrap_hton(from, tmp_share->hton);
13550 }
13551 if (!error) {
13552 mrn_free_long_term_share(tmp_share->long_term_share);
13553 tmp_share->long_term_share = NULL;
13554 }
13555 mrn_free_share(tmp_share);
13556 mrn_open_mutex_lock(NULL);
13557 mrn_free_tmp_table_share(tmp_table_share);

Callers

nothing calls this directly

Calls 9

mrn_get_shareFunction · 0.85
mrn_free_tmp_table_shareFunction · 0.85
mrn_free_long_term_shareFunction · 0.85
mrn_free_shareFunction · 0.85
mysql_table_nameMethod · 0.80
init_one_tableMethod · 0.80
db_nameMethod · 0.45
table_nameMethod · 0.45

Tested by

no test coverage detected