[MDEV-9623] INFORMATION_SCHEMA.ROUTINES.ROUTINE_DEFINITION does not handle binary literals well Created: 2016-02-24  Updated: 2018-07-31

Status: Open
Project: MariaDB Server
Component/s: None
Affects Version/s: 5.5, 10.0, 10.1, 10.2, 10.3, 10.4
Fix Version/s: 10.4

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


 Description   
  • I run a terminal using koi8-r character set.
    In case of gnome-terminal, do "Terminal >Set Character Encoding>Cyrillic(KOI8-R)
  • Start mysql like this:

    LANG=ru_RU.koi8r mysql -uroot test

  • And create a stored function returning a binary string

    DROP FUNCTION IF EXISTS f1;
    CREATE FUNCTION f1() RETURNS BINARY RETURN (SELECT _binary'яп╠' AS я);
    SELECT ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_NAME='f1';

This SQL script returns:

+----------------------------+
| ROUTINE_DEFINITION         |
+----------------------------+
| RETURN (SELECT '???' AS я) |
+----------------------------+

Note, if I now run a new terminal using utf8 as a character set and run this query:

SELECT ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_NAME='f1';

it returns

+--------------------------------+
| ROUTINE_DEFINITION             |
+--------------------------------+
| RETURN (SELECT 'Ñб' AS я)     |
+--------------------------------+

The expected result would be to replace the literal to X'HHHH' notation.


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