mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Bug#47756 Setting 2byte collation ID with 'set names' crashes the server
The problem is not actually related to 2byte collation IDs. The same crash happens if you change the collation ID in mysql-test/str_data/Index.xml to a value smaller than 256. Crash happened in SQL parser, because the "ident_map" and "state_map" arrays were not initialized in loadable utf8 collations. Fix: adding proper initialization of the "ident_map" and "state_map" members for loadable utf8 collations.
This commit is contained in:
@ -402,3 +402,8 @@ s1
|
||||
a
|
||||
b
|
||||
DROP TABLE t1;
|
||||
SET NAMES utf8 COLLATE utf8_phone_ci;
|
||||
SHOW COLLATION LIKE 'utf8_phone_ci';
|
||||
Collation Charset Id Default Compiled Sortlen
|
||||
utf8_phone_ci utf8 352 8
|
||||
SET NAMES utf8;
|
||||
|
@ -144,3 +144,11 @@ CREATE TABLE t1 (s1 char(10) character set utf8 collate utf8_maxuserid_ci);
|
||||
INSERT INTO t1 VALUES ('a'),('b');
|
||||
SELECT * FROM t1 WHERE s1='a' ORDER BY BINARY s1;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
#
|
||||
# Bug#47756 Setting 2byte collation ID with 'set names' crashes the server
|
||||
#
|
||||
SET NAMES utf8 COLLATE utf8_phone_ci;
|
||||
SHOW COLLATION LIKE 'utf8_phone_ci';
|
||||
SET NAMES utf8;
|
||||
|
@ -255,6 +255,9 @@ static int add_collation(CHARSET_INFO *cs)
|
||||
{
|
||||
#if defined (HAVE_CHARSET_utf8) && defined(HAVE_UCA_COLLATIONS)
|
||||
copy_uca_collation(newcs, &my_charset_utf8_unicode_ci);
|
||||
newcs->ctype= my_charset_utf8_unicode_ci.ctype;
|
||||
if (init_state_maps(newcs))
|
||||
return MY_XML_ERROR;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
|
Reference in New Issue
Block a user