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:
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