1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

MW-292 Reset timestamp after transaction replay

Transaction replay causes the THD to re-apply the replication
events from execution, using the same path appliers do. While
applying the log events, the THD's timestamp is set to the
timestamp of the event.
Setting the timestamp explicitly causes function NOW() to
always the timestamp that was set. To avoid this behavior we
reset the timestamp after replaying is done.
This commit is contained in:
Daniele Sciascia
2016-07-14 14:29:59 +02:00
committed by Nirbhay Choubey
parent cbc8a84fa2
commit 7431368eaf
2 changed files with 3 additions and 0 deletions

View File

@ -68,6 +68,7 @@ struct wsrep_thd_shadow {
ulong tx_isolation; ulong tx_isolation;
char *db; char *db;
size_t db_length; size_t db_length;
my_hrtime_t user_time;
}; };
#endif #endif
class Reprepare_observer; class Reprepare_observer;

View File

@ -160,6 +160,7 @@ static void wsrep_prepare_bf_thd(THD *thd, struct wsrep_thd_shadow* shadow)
shadow->db = thd->db; shadow->db = thd->db;
shadow->db_length = thd->db_length; shadow->db_length = thd->db_length;
shadow->user_time = thd->user_time;
thd->reset_db(NULL, 0); thd->reset_db(NULL, 0);
} }
@ -170,6 +171,7 @@ static void wsrep_return_from_bf_mode(THD *thd, struct wsrep_thd_shadow* shadow)
thd->wsrep_exec_mode = shadow->wsrep_exec_mode; thd->wsrep_exec_mode = shadow->wsrep_exec_mode;
thd->net.vio = shadow->vio; thd->net.vio = shadow->vio;
thd->variables.tx_isolation = shadow->tx_isolation; thd->variables.tx_isolation = shadow->tx_isolation;
thd->user_time = shadow->user_time;
thd->reset_db(shadow->db, shadow->db_length); thd->reset_db(shadow->db, shadow->db_length);
delete thd->system_thread_info.rpl_sql_info; delete thd->system_thread_info.rpl_sql_info;