Bug #115301 session.character_set_client=255 in binary log for utf8mb4_general_ci
Submitted: 12 Jun 11:44 Modified: 14 Jun 3:27
Reporter: Sveta Smirnova (OCA) Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Server: Replication Severity:S4 (Feature request)
Version:8.0.37 OS:Any
Assigned to: CPU Architecture:Any

[12 Jun 11:44] Sveta Smirnova
Description:
While upgrading to 8.0 I am using unsupported replication 8.0->5.7 on few nodes. I changed default_collation_for_utf8mb4 to utf8mb4_general_ci everywhere, no client, table, or stored routine uses collation utf8mb4_0900_ai_ci.

However, if I have stored routines in my database, I get records like

SET @@session.character_set_client=255,@@session.collation_connection=45,@@session.collation_server=45/*!*/;

in my binary log. These records make 5.7 server fail.

How to repeat:
Run attached test case, get:

...
INSERT INTO foo_implicit VALUES(DEFAULT, 'юра');
create procedure call_t1()
begin
select * from t1;
end
|
SET @@session.character_set_client=45,@@session.collation_connection=45,@@session.collation_server=45/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
/*!80011 SET @@session.default_collation_for_utf8mb4=45*//*!*/;
SET @@session.character_set_client=255,@@session.collation_connection=45,@@session.collation_server=45/*!*/;
SET @@session.character_set_client=45,@@session.collation_connection=45,@@session.collation_server=45/*!*/;
SET @@session.character_set_client=255,@@session.collation_connection=45,@@session.collation_server=45/*!*/;
DROP TABLE foo_implicit;
DROP DATABASE foo_db;

Suggested fix:
Do not print @@session.character_set_client=255 for environment that uses utf8mb4_general_ci only.
[12 Jun 11:44] Sveta Smirnova
Test case for MTR

Attachment: PS-9237.test (application/octet-stream, text), 1.18 KiB.

[14 Jun 3:27] MySQL Verification Team
Hi Sveta,

I can reproduce this but I switched it to S4 (FR).