MXS-359: Reset temporary table tracking on master change

When the master changes mid-session, the temporary tables are inevitably
lost. This could be avoided by routing temporary table creation to all
servers.
This commit is contained in:
Markus Mäkelä
2018-03-14 08:23:38 +02:00
parent 33e448fc78
commit 3999bed3e2

View File

@ -1079,6 +1079,15 @@ bool should_replace_master(RWSplitSession *rses, SRWBackend& target)
!locked_to_master(rses);
}
void replace_master(RWSplitSession *rses, SRWBackend& target)
{
rses->current_master = target;
// As the master has changed, we can reset the temporary table information
rses->have_tmp_tables = false;
rses->temp_tables.clear();
}
/**
* @brief Handle master is the target
*
@ -1100,7 +1109,7 @@ bool handle_master_is_target(RWSplit *inst, RWSplitSession *rses,
{
MXS_INFO("Replacing old master '%s' with new master '%s'", rses->current_master ?
rses->current_master->name() : "<no previous master>", target->name());
rses->current_master = target;
replace_master(rses, target);
}
if (target && target == rses->current_master)