From d4f97e2086848cedfdd35a6c1cf286f8dad26c5c Mon Sep 17 00:00:00 2001 From: Alexander Barkov Date: Wed, 20 May 2020 11:53:09 +0400 Subject: MDEV-22391 Assertion `0' failed in Item_type_holder::val_str on utf16 charset table query Problem: When handling a query like this: VALUES ('') UNION SELECT _utf16 0x0020 COLLATE utf16_bin; Type_handler_string_result::Item_hybrid_func_fix_attributes() tried to apply character set conversion Item_type_holder, which causes a crash on DBUG_ASSERT(0) inside Item_type_holder::val_str(). Fix: Overriding Item_type_holder's methods to avoid this, as follows: bool const_item() const { return false; } bool is_expensive() { return true; } --- mysql-test/main/ctype_utf8.test | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'mysql-test/main/ctype_utf8.test') diff --git a/mysql-test/main/ctype_utf8.test b/mysql-test/main/ctype_utf8.test index 26fc491c568..1d244cf0096 100644 --- a/mysql-test/main/ctype_utf8.test +++ b/mysql-test/main/ctype_utf8.test @@ -2256,6 +2256,13 @@ INSERT INTO t1 VALUES (1); SELECT x AS 5天内最近一次登录时间 FROM t1; DROP TABLE t1; +--echo # +--echo # MDEV-22391 Assertion `0' failed in Item_type_holder::val_str on utf16 charset table query +--echo # + +SET NAMES utf8; +VALUES (_latin1 0xDF) UNION SELECT _utf8'a' COLLATE utf8_bin; +VALUES (_latin1 0xDF) UNION VALUES(_utf8'a' COLLATE utf8_bin); --echo # --echo # End of 10.3 tests -- cgit v1.2.1