diff options
author | Roman Nozdrin <roman.nozdrin@mariadb.com> | 2020-02-28 15:44:56 +0000 |
---|---|---|
committer | Roman Nozdrin <roman.nozdrin@mariadb.com> | 2020-02-28 17:02:27 +0000 |
commit | 424149e3282e0ff4950726458d006528f5dc187e (patch) | |
tree | bb5811aab0952c442e264c136b92046a22ada922 | |
parent | e837a358b660ab259cdf2c12712a925ece98a40d (diff) | |
download | mariadb-git-bb-MDEV-21841.tar.gz |
MDEV-21841 CONV() function doesn't truncate its output to 21 when uses default charset.bb-MDEV-21841
-rw-r--r-- | mysql-test/main/func_str.result | 15 | ||||
-rw-r--r-- | mysql-test/main/func_str.test | 11 | ||||
-rw-r--r-- | sql/item_strfunc.h | 2 |
3 files changed, 27 insertions, 1 deletions
diff --git a/mysql-test/main/func_str.result b/mysql-test/main/func_str.result index b4e3f27eda6..4a01935785c 100644 --- a/mysql-test/main/func_str.result +++ b/mysql-test/main/func_str.result @@ -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; diff --git a/mysql-test/main/func_str.test b/mysql-test/main/func_str.test index a01b3942209..ba5b671ca4f 100644 --- a/mysql-test/main/func_str.test +++ b/mysql-test/main/func_str.test @@ -2100,6 +2100,17 @@ DROP TABLE t1, t2; --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 # diff --git a/sql/item_strfunc.h b/sql/item_strfunc.h index 42b5b4f2aeb..ae0afeabeae 100644 --- a/sql/item_strfunc.h +++ b/sql/item_strfunc.h @@ -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; } |