[MDEV-23435] Functions do not convert numbers to character_set_results Created: 2020-08-09  Updated: 2020-10-06  Resolved: 2020-08-10

Status: Closed
Project: MariaDB Server
Component/s: Character Sets, Protocol
Affects Version/s: 10.1, 10.2, 10.3, 10.4, 10.5
Fix Version/s: 10.5.7

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

Issue Links:
Relates
relates to MDEV-23162 Improve Protocol performance for nume... Closed

 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 |
+--------+------+


Generated at Thu Feb 08 09:22:23 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.