mirror of
https://github.com/MariaDB/server.git
synced 2025-07-20 10:24:14 +03:00
SQL: Backup_query_start_time RAII
This commit is contained in:
@ -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;
|
||||
};
|
||||
|
||||
void backup_query_start_time(QUERY_START_TIME_INFO *backup)
|
||||
class Backup_query_start_time : public QUERY_START_TIME_INFO
|
||||
{
|
||||
QUERY_START_TIME_INFO *m_origin;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user