Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-23435

Functions do not convert numbers to character_set_results

    XMLWordPrintable

    Details

      Description

      Fields of the numeric and temporal data types convert to character_set_results, while functions do not:

      This is bad when character_set_results is set to character sets like UCS2, UTF16, UTF32, as well as filename.

      SET character_set_results=filename;
      CREATE OR REPLACE TABLE t1 (a DATETIME(6));
      INSERT INTO t1 VALUES ('2001-01-01 00:00:00.000000');
      SELECT a, COALESCE(a) AS c FROM t1;
      

      +----------------------------------------------------+----------------------------+
      | a                                                  | c                          |
      +----------------------------------------------------+----------------------------+
      | 2001@002d01@002d01@002000@003a00@003a00@002e000000 | 2001-01-01 00:00:00.000000 |
      +----------------------------------------------------+----------------------------+
      

      Notice, the field converted its value to 'filename', while the function did not.

      The same problem is repeatable with INT (and also with TINYINT, SHORTINT, MEDIUMINT, BIGINT):

      SET character_set_results=filename;
      CREATE OR REPLACE TABLE t1 (a INT);
      INSERT INTO t1 VALUES (-3);
      SELECT a, COALESCE(a) AS c FROM t1;
      

      +--------+------+
      | a      | c    |
      +--------+------+
      | @002d3 |   -3 |
      +--------+------+
      

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              bar Alexander Barkov
              Reporter:
              bar Alexander Barkov
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: