summaryrefslogtreecommitdiff
path: root/sql/rpl_mi.h
diff options
context:
space:
mode:
authorunknown <knielsen@knielsen-hq.org>2014-04-25 12:58:31 +0200
committerunknown <knielsen@knielsen-hq.org>2014-04-25 12:58:31 +0200
commit64923bb653f908a6ea422a2d252011f93056f41c (patch)
tree404352a841570a033a93305fca02da90d3b18b27 /sql/rpl_mi.h
parentd3d3a4b834db8efc558b71066870b07efe1f2976 (diff)
downloadmariadb-git-64923bb653f908a6ea422a2d252011f93056f41c.tar.gz
MDEV-6156: Parallel replication incorrectly caches charset between worker threads
The previous patch for this bug was unfortunately completely wrong. The purpose of cached_charset is to remember which character set we have installed currently in the THD, so that in the common case where charset does not change between queries, we do not need to update it in the THD. Thus, it is important that the cached_charset field is tightly coupled to the THD for which it handles caching. Thus the right place to put cached_charset seems to be in the THD. This patch introduces a field THD:system_thread_info where such info in general can be placed without further inflating the THD with unused data for other threads (THD is already far too big as it is). It then moves the cached_charset into this slot for the SQL driver thread and for the parallel replication worker threads. The THD::rpl_filter field is also moved inside system_thread_info, to keep the size of THD unchanged. Moving further fields in to reduce the size of THD is a separate task, filed as MDEV-6164.
Diffstat (limited to 'sql/rpl_mi.h')
-rw-r--r--sql/rpl_mi.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/sql/rpl_mi.h b/sql/rpl_mi.h
index a136af38356..af739b1dad4 100644
--- a/sql/rpl_mi.h
+++ b/sql/rpl_mi.h
@@ -216,6 +216,16 @@ public:
bool stop_all_slaves(THD *thd);
};
+
+/*
+ The class rpl_io_thread_info is the THD::system_thread_info for the IO thread.
+*/
+class rpl_io_thread_info
+{
+public:
+};
+
+
bool check_master_connection_name(LEX_STRING *name);
void create_logfile_name_with_suffix(char *res_file_name, size_t length,
const char *info_file,