From 07b1a7743096b01ea55407bada7bfad8c609397c Mon Sep 17 00:00:00 2001 From: Aleksey Midenkov Date: Tue, 9 Jan 2018 15:28:08 +0300 Subject: SQL: Backup_query_start_time RAII --- sql/sql_class.h | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) (limited to 'sql/sql_class.h') diff --git a/sql/sql_class.h b/sql/sql_class.h index 624a5b93446..e9add6af2da 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -2085,14 +2085,36 @@ struct QUERY_START_TIME_INFO my_time_t start_time; ulong start_time_sec_part; ulonglong start_utime, utime_after_lock; +}; + +class Backup_query_start_time : public QUERY_START_TIME_INFO +{ + QUERY_START_TIME_INFO *m_origin; - void backup_query_start_time(QUERY_START_TIME_INFO *backup) +public: + Backup_query_start_time() : m_origin(NULL) + {} + Backup_query_start_time(QUERY_START_TIME_INFO &origin) { - *backup= *this; + backup(origin); } - void restore_query_start_time(QUERY_START_TIME_INFO *backup) + ~Backup_query_start_time() { - *this= *backup; + restore(); + } + void backup(QUERY_START_TIME_INFO &origin) + { + m_origin= &origin; + QUERY_START_TIME_INFO *backup_= this; + *backup_= origin; + } + void restore() + { + if (m_origin) + { + *m_origin= *this; + m_origin= NULL; + } } }; -- cgit v1.2.1