• unknown's avatar
    MDEV-6156: Parallel replication incorrectly caches charset between worker threads · 64923bb6
    unknown authored
    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.
    64923bb6
rpl_rli.h 23.3 KB