summaryrefslogtreecommitdiff
path: root/sql/sql_class.h
diff options
context:
space:
mode:
authorAleksey Midenkov <midenok@gmail.com>2018-01-09 15:28:08 +0300
committerAleksey Midenkov <midenok@gmail.com>2018-01-09 15:28:08 +0300
commit07b1a7743096b01ea55407bada7bfad8c609397c (patch)
tree2d4e136991e877465816ce90d9c30e32671b03d3 /sql/sql_class.h
parent3395ab73244b86ba21bd7de7b2d14493d79ace68 (diff)
downloadmariadb-git-07b1a7743096b01ea55407bada7bfad8c609397c.tar.gz
SQL: Backup_query_start_time RAII
Diffstat (limited to 'sql/sql_class.h')
-rw-r--r--sql/sql_class.h30
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;
+ }
}
};