|
This script:
SET NAMES binary;
|
DROP FUNCTION IF EXISTS f1;
|
CREATE FUNCTION f1() RETURNS VARBINARY(10) RETURN '��';
|
SHOW CREATE FUNCTION f1;
|
SELECT ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_NAME='f1';
|
returns
+--------------------+
|
| ROUTINE_DEFINITION |
|
+--------------------+
|
| RETURN 'ð' |
|
+--------------------+
|
1 row in set (0.00 sec)
|
Notice, the original value in RETURN is unreadable.
If I change the connection character set from "binary" to "utf8"
and run the same script:
SET NAMES utf8;
|
DROP FUNCTION IF EXISTS f1;
|
CREATE FUNCTION f1() RETURNS VARBINARY(10) RETURN '��';
|
SHOW CREATE FUNCTION f1;
|
SELECT ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_NAME='f1';
|
it returns:
+--------------------+
|
| ROUTINE_DEFINITION |
|
+--------------------+
|
| RETURN ' |
|
+--------------------+
|
1 row in set, 1 warning (0.00 sec)
|
The value is unreadable again.
Also, a warning is returned:
MariaDB [test]> SHOW WARNINGS;
|
+---------+------+--------------------------------------------------------------------------------------+
|
| Level | Code | Message |
|
+---------+------+--------------------------------------------------------------------------------------+
|
| Warning | 1366 | Incorrect string value: '\xF0\x9F\x98\x81'' for column 'ROUTINE_DEFINITION' at row 1 |
|
+---------+------+--------------------------------------------------------------------------------------+
|
1 row in set (0.00 sec)
|
It should be fixed to return a some form of a readable value.
Also, no warnings should be produced during "SELECT FROM I_S.ROUTINES".
|