Bug #87579 information_schema.processlist should handle utfmb4 characters in query
Description:
mysql> select info, "🔥" from information_schema.processlist; +------------------------------------------------------+------+
| info | ? |
+------------------------------------------------------+------+
| select info, "?" from information_schema.processlist | 🔥 |
+------------------------------------------------------+------+
1 row in set, 1 warning (0,00 sec)
Warning (Code 1366): Incorrect string value: '\xF0\x9F\x94\xA5" ...' for column 'INFO' at row 1
If you want to store the result of this query in a table, you get into bigger problems since this causes an error. For an example, see: https://stackoverflow.com/questions/45549840/trouble-inserting-4-byte-utf-8-characters-emo...
The problem seem to be even worse for the corresponding performance_schema table:
mysql> select sql_text, "🔥" from performance_schema.events_statements_current;
+--------------------+------+
| sql_text | ? |
+--------------------+------+
| select sql_text, " | 🔥 |
+--------------------+------+
1 row in set, 1 warning (0,00 sec)
Warning (Code 1366): Incorrect string value: '\xF0\x9F\x94\xA5" ...' for column 'SQL_TEXT' at row 1
Here the text after the violating character is missing.
How to repeat:
select info, "🔥" from information_schema.processlist;
select sql_text, "🔥" from performance_schema.events_statements_current;
Suggested fix:
Make sure to store query strings in the character set that is defined for the information_schema/performance_schema columns.
Change character set for such columns to utf8mb4 for 8.0 to avoid increasing number of issues. (Since utf8mb4 is default character set in 8.0)
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.038 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.