Split tdc_remove_table()

TDC_RT_REMOVE_ALL -> tdc_remove_table(). Some occurrences replaced with
TDC_element::flush() (whenver TABLE_SHARE is available).

TDC_RT_REMOVE_NOT_OWN[_KEEP_SHARE] -> TDC_element::flush(). These modes
assume that current thread owns TABLE_SHARE reference, which means we can
avoid hash lookup and flush unused TABLE instances directly.

TDC_RT_REMOVE_UNUSED -> TDC_element::flush_unused(). Only [ab]used by
mysql_admin_table() currently. Should be removed eventually.

Part of MDEV-17882 - Cleanup refresh version
This commit is contained in:
Sergey Vojtovich 2019-12-17 16:25:15 +04:00
commit 7a947614fb
12 changed files with 127 additions and 144 deletions

View file

@ -430,8 +430,7 @@ rpl_slave_state::truncate_state_table(THD *thd)
MYSQL_OPEN_IGNORE_LOGGING_FORMAT)))
{
DBUG_ASSERT(!tlist.table->file->row_logging);
tdc_remove_table(thd, TDC_RT_REMOVE_NOT_OWN, "mysql",
rpl_gtid_slave_state_table_name.str);
tlist.table->s->tdc->flush(thd, true);
err= tlist.table->file->ha_truncate();
if (err)