MDEV-21841 CONV() function doesn't truncate its output to 21 when uses default charset.

This commit is contained in:
Roman Nozdrin 2020-02-28 15:44:56 +00:00
parent e837a358b6
commit 1ad8693a6f
3 changed files with 27 additions and 1 deletions

View File

@ -5159,6 +5159,21 @@ DROP TABLE t1, t2;
# Start of 10.4 tests
#
#
# MDEV-21841 CONV() function truncates the result type to 21 symbol.
#
CREATE TABLE t1(i BIGINT);
INSERT INTO t1 VALUES (-1);
CREATE TABLE t2 AS SELECT conv(i,16,2) from t1;
SELECT * FROM t2;
conv(i,16,2)
1111111111111111111111111111111111111111111111111111111111111111
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`conv(i,16,2)` varchar(64) CHARACTER SET utf8 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1,t2;
#
# MDEV-18205 Assertion `str_length < len' failed in Binary_string::realloc_raw
#
SELECT GROUP_CONCAT( UpdateXML( '<a>new year</a>', '/a', '2019-01-01 00:00:00' ), ENCODE('text','pass') ) AS f;

View File

@ -2099,6 +2099,17 @@ DROP TABLE t1, t2;
--echo # Start of 10.4 tests
--echo #
--echo #
--echo # MDEV-21841 CONV() function truncates the result type to 21 symbol.
--echo #
CREATE TABLE t1(i BIGINT);
INSERT INTO t1 VALUES (-1);
CREATE TABLE t2 AS SELECT conv(i,16,2) from t1;
SELECT * FROM t2;
SHOW CREATE TABLE t2;
DROP TABLE t1,t2;
--echo #
--echo # MDEV-18205 Assertion `str_length < len' failed in Binary_string::realloc_raw
--echo #

View File

@ -1205,7 +1205,7 @@ public:
bool fix_length_and_dec()
{
collation.set(default_charset());
max_length=64;
fix_char_length(64);
maybe_null= 1;
return FALSE;
}