summaryrefslogtreecommitdiff
path: root/sql/session_tracker.h
diff options
context:
space:
mode:
authorSergey Vojtovich <svoj@mariadb.org>2019-09-20 22:52:00 +0400
committerSergey Vojtovich <svoj@mariadb.org>2019-09-24 15:49:35 +0400
commitad77e3ac0930a68e61378790a232f1056f0a8e7c (patch)
tree7594a673d37662b643fa7585a103d6877ed4f6f7 /sql/session_tracker.h
parentedef6a007428599fd249815f1dc59a02428090f4 (diff)
downloadmariadb-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.h33
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