Commit 1ad8693a authored by Roman Nozdrin's avatar Roman Nozdrin

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

parent e837a358
...@@ -5159,6 +5159,21 @@ DROP TABLE t1, t2; ...@@ -5159,6 +5159,21 @@ DROP TABLE t1, t2;
# Start of 10.4 tests # 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 # 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; SELECT GROUP_CONCAT( UpdateXML( '<a>new year</a>', '/a', '2019-01-01 00:00:00' ), ENCODE('text','pass') ) AS f;
......
...@@ -2099,6 +2099,17 @@ DROP TABLE t1, t2; ...@@ -2099,6 +2099,17 @@ DROP TABLE t1, t2;
--echo # Start of 10.4 tests --echo # Start of 10.4 tests
--echo # --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 #
--echo # MDEV-18205 Assertion `str_length < len' failed in Binary_string::realloc_raw --echo # MDEV-18205 Assertion `str_length < len' failed in Binary_string::realloc_raw
--echo # --echo #
......
...@@ -1205,7 +1205,7 @@ class Item_func_conv :public Item_str_func ...@@ -1205,7 +1205,7 @@ class Item_func_conv :public Item_str_func
bool fix_length_and_dec() bool fix_length_and_dec()
{ {
collation.set(default_charset()); collation.set(default_charset());
max_length=64; fix_char_length(64);
maybe_null= 1; maybe_null= 1;
return FALSE; return FALSE;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment