[MDEV-6571] INFORMATION_SCHEMA.ROUTINE_DEFINITION does not work well with binary values Created: 2014-08-13  Updated: 2023-11-28

Status: Open
Project: MariaDB Server
Component/s: None
Affects Version/s: 5.3.12, 5.5.39, 10.0.14
Fix Version/s: 10.4, 10.5, 10.6

Type: Bug Priority: Minor
Reporter: Alexander Barkov Assignee: Alexander Barkov
Resolution: Unresolved Votes: 0
Labels: None


 Description   

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".


Generated at Thu Feb 08 07:12:55 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.