diff options
author | Aleksey Midenkov <midenok@gmail.com> | 2018-01-09 15:28:08 +0300 |
---|---|---|
committer | Aleksey Midenkov <midenok@gmail.com> | 2018-01-09 15:28:08 +0300 |
commit | 07b1a7743096b01ea55407bada7bfad8c609397c (patch) | |
tree | 2d4e136991e877465816ce90d9c30e32671b03d3 /sql/sql_class.h | |
parent | 3395ab73244b86ba21bd7de7b2d14493d79ace68 (diff) | |
download | mariadb-git-07b1a7743096b01ea55407bada7bfad8c609397c.tar.gz |
SQL: Backup_query_start_time RAII
Diffstat (limited to 'sql/sql_class.h')
-rw-r--r-- | sql/sql_class.h | 30 |
1 files changed, 26 insertions, 4 deletions
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; + } } }; |