diff options
author | Aleksey Midenkov <midenok@gmail.com> | 2017-11-07 00:37:49 +0300 |
---|---|---|
committer | Aleksey Midenkov <midenok@gmail.com> | 2017-11-07 00:37:49 +0300 |
commit | d8d725101992d50b00edf149e7ccd7f720b850dc (patch) | |
tree | 5797a3c9af2d2db487ec77093608f89b7dabe62f /sql/sql_rename.cc | |
parent | 835cbbcc7b797188a89671019f2b2844e1a14e0c (diff) | |
parent | ce66d5b2a53d76d286e8443807c4ebd7743cc354 (diff) | |
download | mariadb-git-d8d725101992d50b00edf149e7ccd7f720b850dc.tar.gz |
System Versioning pre0.12
Merge remote-tracking branch 'origin/archive/2017-10-17' into 10.3
Diffstat (limited to 'sql/sql_rename.cc')
-rw-r--r-- | sql/sql_rename.cc | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/sql/sql_rename.cc b/sql/sql_rename.cc index 61e312646da..31cc6bcdd31 100644 --- a/sql/sql_rename.cc +++ b/sql/sql_rename.cc @@ -30,6 +30,7 @@ #include "sql_base.h" // tdc_remove_table, lock_table_names, #include "sql_handler.h" // mysql_ha_rm_tables #include "sql_statistics.h" +#include "vtmd.h" static TABLE_LIST *rename_tables(THD *thd, TABLE_LIST *table_list, bool skip_error); @@ -299,12 +300,23 @@ do_rename(THD *thd, TABLE_LIST *ren_table, const char *new_db, LEX_CSTRING new_db_name= { new_db, strlen(new_db)}; (void) rename_table_in_stat_tables(thd, &db_name, &table_name, &new_db_name, &new_table); - if ((rc= Table_triggers_list::change_table_name(thd, ren_table->db, - old_alias, - ren_table->table_name, - new_db, - new_alias))) + VTMD_rename vtmd(*ren_table); + if (thd->variables.vers_alter_history == VERS_ALTER_HISTORY_SURVIVE) { + rc= vtmd.try_rename(thd, new_db_name, new_table); + if (rc) + goto revert_table_name; + } + rc= Table_triggers_list::change_table_name(thd, ren_table->db, + old_alias, + ren_table->table_name, + new_db, + new_alias); + if (rc) + { + if (thd->variables.vers_alter_history == VERS_ALTER_HISTORY_SURVIVE) + vtmd.revert_rename(thd, new_db_name); +revert_table_name: /* We've succeeded in renaming table's .frm and in updating corresponding handler data, but have failed to update table's |