diff options
author | Sergey Vojtovich <svoj@mariadb.org> | 2019-09-20 22:52:00 +0400 |
---|---|---|
committer | Sergey Vojtovich <svoj@mariadb.org> | 2019-09-24 15:49:35 +0400 |
commit | ad77e3ac0930a68e61378790a232f1056f0a8e7c (patch) | |
tree | 7594a673d37662b643fa7585a103d6877ed4f6f7 /sql/session_tracker.h | |
parent | edef6a007428599fd249815f1dc59a02428090f4 (diff) | |
download | mariadb-git-ad77e3ac0930a68e61378790a232f1056f0a8e7c.tar.gz |
Cleanup session tracker
- call current_schema::mark_as_changed() directly
- call state_change::mark_as_changed() directly
- replaced SESSION_TRACKER_CHANGED with dummy tracker
- replaced Session_tracker::mark_as_changed() with
State_tracker::mark_as_changed()
- hide and devirtualize original State_tracker::mark_as_changed(),
rename it to set_changed()
- all implementations of mark_as_changed() now check is_enabled() for
consistency
- no argument casts anymore
Diffstat (limited to 'sql/session_tracker.h')
-rw-r--r-- | sql/session_tracker.h | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/sql/session_tracker.h b/sql/session_tracker.h index 226b026d590..269b1bd2359 100644 --- a/sql/session_tracker.h +++ b/sql/session_tracker.h @@ -66,6 +66,8 @@ protected: */ bool m_enabled; + void set_changed(THD *thd); + private: /** Has the session state type changed ? */ bool m_changed; @@ -102,7 +104,7 @@ public: virtual bool store(THD *thd, String *buf)= 0; /** Mark the entity as changed. */ - virtual void mark_as_changed(THD *thd, LEX_CSTRING *name); + void mark_as_changed(THD *thd) { if (is_enabled()) set_changed(thd); } }; @@ -207,7 +209,7 @@ public: bool enable(THD *thd); bool update(THD *thd, set_var *var); bool store(THD *thd, String *buf); - void mark_as_changed(THD *thd, LEX_CSTRING *tracked_item_name); + void mark_as_changed(THD *thd, const sys_var *var); void deinit() { orig_list.deinit(); } /* callback */ static uchar *sysvars_get_key(const char *entry, size_t *length, @@ -376,15 +378,13 @@ private: tx_changed &= uint(~TX_CHG_STATE); tx_changed |= (tx_curr_state != tx_reported_state) ? TX_CHG_STATE : 0; if (tx_changed != TX_CHG_NONE) - mark_as_changed(thd, NULL); + set_changed(thd); } }; #define TRANSACT_TRACKER(X) \ do { if (thd->variables.session_track_transaction_info > TX_TRACK_NONE) \ thd->session_tracker.transaction_info.X; } while(0) -#define SESSION_TRACKER_CHANGED(A,B,C) \ - thd->session_tracker.mark_as_changed(A,B,C) /** @@ -430,14 +430,6 @@ public: m_trackers[i]->enable(thd); } - inline void mark_as_changed(THD *thd, enum enum_session_tracker tracker, - LEX_CSTRING *data) - { - if (m_trackers[tracker]->is_enabled()) - m_trackers[tracker]->mark_as_changed(thd, data); - } - - void store(THD *thd, String *main_buf); }; @@ -446,7 +438,20 @@ int session_tracker_init(); #else #define TRANSACT_TRACKER(X) do{}while(0) -#define SESSION_TRACKER_CHANGED(A,B,C) do{}while(0) + +class Session_tracker +{ + class Dummy_tracker + { + public: + void mark_as_changed(THD *thd) {} + void mark_as_changed(THD *thd, const sys_var *var) {} + }; +public: + Dummy_tracker current_schema; + Dummy_tracker state_change; + Dummy_tracker sysvars; +}; #endif //EMBEDDED_LIBRARY |