diff options
Diffstat (limited to 'sql/session_tracker.h')
-rw-r--r-- | sql/session_tracker.h | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/sql/session_tracker.h b/sql/session_tracker.h index ec24d5a7a00..7025c34967d 100644 --- a/sql/session_tracker.h +++ b/sql/session_tracker.h @@ -104,6 +104,12 @@ public: virtual void mark_as_changed(THD *thd, LEX_CSTRING *name)= 0; }; +bool sysvartrack_validate_value(THD *thd, const char *str, size_t len); +bool sysvartrack_reprint_value(THD *thd, char *str, size_t len); +bool sysvartrack_update(THD *thd); +size_t sysvartrack_value_len(THD *thd); +bool sysvartrack_value_construct(THD *thd, char *val, size_t len); + /** Session_tracker @@ -134,10 +140,22 @@ public: Session_tracker(); ~Session_tracker() { + deinit(); + } + + /* trick to make happy memory accounting system */ + void deinit() + { for (int i= 0; i <= SESSION_TRACKER_END; i ++) - delete m_trackers[i]; + { + if (m_trackers[i]) + delete m_trackers[i]; + m_trackers[i]= NULL; + } } + void enable(THD *thd); + bool server_boot_verify(const CHARSET_INFO *char_set); /** Returns the pointer to the tracker object for the specified tracker. */ inline State_tracker *get_tracker(enum_session_tracker tracker) const |