hi, kristian
 
> Right, I see. Probably the cached_charset just needs to be moved into the
> rpl_group_info struct.
 
> I have filed a bug for this that I will fix:
 
>    https://mariadb.atlassian.net/browse/MDEV-6156
 
I'm afraid there is still some cases would lead mistake if move cached_charset into rpl_group_info struct.
 
For a worker thread can keep a lot rpl_group_info structs in its rgi_free_list, and those rgis can be reused many times.
in this case:
a worker thread executes there transactions, which is trans1,trans2 and trans3
 
trans1's charset is utf8  and it use rgi1
trans2's charset is latin1  and it use rgi2
trans3's charset is utf8  and it use rgi1
 
so when worker thread start to execute trans3, rgi1->cached_charset == utf8. but thd->variables.character_set_* are latin1. and
them wouldn't be changed to utf8 for rgi->cached_charset_compare return 0.
 
Thanks