summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--VERSION2
-rw-r--r--client/mysqlcheck.c4
-rw-r--r--include/m_ctype.h26
-rw-r--r--include/my_base.h5
-rw-r--r--mysql-test/r/ctype_ldml.result2
-rw-r--r--mysql-test/r/ctype_uca.result228
-rw-r--r--mysql-test/r/ctype_upgrade.result389
-rw-r--r--mysql-test/r/ctype_utf16_uca.result110
-rw-r--r--mysql-test/r/ctype_utf32_uca.result110
-rw-r--r--mysql-test/r/ctype_utf8mb4_uca.result110
-rw-r--r--mysql-test/std_data/ctype_upgrade/maria050313_ucs2_croatian_ci_def.MYDbin0 -> 21 bytes
-rw-r--r--mysql-test/std_data/ctype_upgrade/maria050313_ucs2_croatian_ci_def.MYIbin0 -> 1024 bytes
-rw-r--r--mysql-test/std_data/ctype_upgrade/maria050313_ucs2_croatian_ci_def.frmbin0 -> 8554 bytes
-rw-r--r--mysql-test/std_data/ctype_upgrade/maria050313_utf8_croatian_ci.MYDbin0 -> 80 bytes
-rw-r--r--mysql-test/std_data/ctype_upgrade/maria050313_utf8_croatian_ci.MYIbin0 -> 1024 bytes
-rw-r--r--mysql-test/std_data/ctype_upgrade/maria050313_utf8_croatian_ci.frmbin0 -> 8554 bytes
-rw-r--r--mysql-test/std_data/ctype_upgrade/maria050533_xxx_croatian_ci.MYDbin0 -> 176 bytes
-rw-r--r--mysql-test/std_data/ctype_upgrade/maria050533_xxx_croatian_ci.MYIbin0 -> 1024 bytes
-rw-r--r--mysql-test/std_data/ctype_upgrade/maria050533_xxx_croatian_ci.frmbin0 -> 8650 bytes
-rw-r--r--mysql-test/std_data/ctype_upgrade/maria100004_xxx_croatian_ci.MYDbin0 -> 176 bytes
-rw-r--r--mysql-test/std_data/ctype_upgrade/maria100004_xxx_croatian_ci.MYIbin0 -> 1024 bytes
-rw-r--r--mysql-test/std_data/ctype_upgrade/maria100004_xxx_croatian_ci.frmbin0 -> 679 bytes
-rw-r--r--mysql-test/std_data/ctype_upgrade/mysql050614_xxx_croatian_ci.MYDbin0 -> 176 bytes
-rw-r--r--mysql-test/std_data/ctype_upgrade/mysql050614_xxx_croatian_ci.MYIbin0 -> 1024 bytes
-rw-r--r--mysql-test/std_data/ctype_upgrade/mysql050614_xxx_croatian_ci.frmbin0 -> 8650 bytes
-rw-r--r--mysql-test/suite/engines/funcs/r/db_alter_collate_ascii.result15
-rw-r--r--mysql-test/suite/engines/funcs/r/db_alter_collate_utf8.result15
-rw-r--r--mysql-test/suite/innodb/r/innodb_ctype_ldml.result2
-rw-r--r--mysql-test/suite/innodb/t/innodb_ctype_ldml.test2
-rw-r--r--mysql-test/suite/plugins/r/show_all_plugins.result4
-rw-r--r--mysql-test/suite/roles/create_and_drop_role_invalid_user_table.result2
-rw-r--r--mysql-test/t/ctype_ldml.test2
-rw-r--r--mysql-test/t/ctype_uca.test4
-rw-r--r--mysql-test/t/ctype_upgrade.test198
-rw-r--r--mysql-test/t/ctype_utf16_uca.test1
-rw-r--r--mysql-test/t/ctype_utf32_uca.test1
-rw-r--r--mysql-test/t/ctype_utf8mb4_uca.test1
-rw-r--r--mysys/charset-def.c10
-rw-r--r--mysys/charset.c14
-rw-r--r--sql/handler.cc61
-rw-r--r--sql/handler.h1
-rw-r--r--sql/sql_table.cc13
-rw-r--r--sql/table.cc36
-rw-r--r--sql/table.h10
-rw-r--r--storage/connect/ha_connect.cc3
-rw-r--r--strings/ctype-uca.c217
46 files changed, 1541 insertions, 57 deletions
diff --git a/VERSION b/VERSION
index ba8d20db34e..6a218d97a85 100644
--- a/VERSION
+++ b/VERSION
@@ -4,5 +4,5 @@
#
MYSQL_VERSION_MAJOR=10
MYSQL_VERSION_MINOR=0
-MYSQL_VERSION_PATCH=5
+MYSQL_VERSION_PATCH=6
MYSQL_VERSION_EXTRA=
diff --git a/client/mysqlcheck.c b/client/mysqlcheck.c
index 74c33c75a27..8651a8686d4 100644
--- a/client/mysqlcheck.c
+++ b/client/mysqlcheck.c
@@ -18,7 +18,7 @@
/* By Jani Tolonen, 2001-04-20, MySQL Development Team */
-#define CHECK_VERSION "2.7.1"
+#define CHECK_VERSION "2.7.2"
#include "client_priv.h"
#include <m_ctype.h>
@@ -681,6 +681,8 @@ static int rebuild_table(char *name)
fprintf(stderr, "Error: %s\n", mysql_error(sock));
rc= 1;
}
+ if (verbose)
+ printf("%-50s %s\n", name, rc ? "FAILED" : "FIXED");
my_free(query);
DBUG_RETURN(rc);
}
diff --git a/include/m_ctype.h b/include/m_ctype.h
index 1b60f2091b1..6357bbed17d 100644
--- a/include/m_ctype.h
+++ b/include/m_ctype.h
@@ -240,6 +240,32 @@ extern MY_UNI_CTYPE my_uni_ctype[256];
#define MY_STRXFRM_REVERSE_LEVEL6 0x00200000 /* if reverse order for level6 */
#define MY_STRXFRM_REVERSE_SHIFT 16
+/*
+ Collation IDs for MariaDB that should not conflict with MySQL.
+ We reserve 256..511, because MySQL will most likely use this range
+ when the range 0..255 is full.
+
+ We use the next 256 IDs starting from 512 and divide
+ them into 8 chunks, 32 collations each, as follows:
+
+ 512 + (0..31) for single byte collations (e.g. latin9)
+ 512 + (32..63) reserved (e.g. for utf32le, or more single byte collations)
+ 512 + (64..95) for utf8
+ 512 + (96..127) for utf8mb4
+ 512 + (128..159) for ucs2
+ 512 + (160..192) for utf16
+ 512 + (192..223) for utf16le
+ 512 + (224..255) for utf32
+*/
+#define MY_PAGE2_COLLATION_ID_8BIT 0x200
+#define MY_PAGE2_COLLATION_ID_RESERVED 0x220
+#define MY_PAGE2_COLLATION_ID_UTF8 0x240
+#define MY_PAGE2_COLLATION_ID_UTF8MB4 0x260
+#define MY_PAGE2_COLLATION_ID_UCS2 0x280
+#define MY_PAGE2_COLLATION_ID_UTF16 0x2A0
+#define MY_PAGE2_COLLATION_ID_UTF16LE 0x2C0
+#define MY_PAGE2_COLLATION_ID_UTF32 0x2E0
+
struct my_uni_idx_st
{
uint16 from;
diff --git a/include/my_base.h b/include/my_base.h
index c195830e35a..ed27ef7e843 100644
--- a/include/my_base.h
+++ b/include/my_base.h
@@ -48,6 +48,11 @@
#define HA_OPEN_INTERNAL_TABLE 512
#define HA_OPEN_NO_PSI_CALL 1024 /* Don't call/connect PSI */
#define HA_OPEN_MERGE_TABLE 2048
+/*
+ Allow opening even if table is incompatible as this is for ALTER TABLE which
+ will fix the table structure.
+*/
+#define HA_OPEN_FOR_ALTER 4096
/* The following is parameter to ha_rkey() how to use key */
diff --git a/mysql-test/r/ctype_ldml.result b/mysql-test/r/ctype_ldml.result
index bd96a1f6255..932df0322db 100644
--- a/mysql-test/r/ctype_ldml.result
+++ b/mysql-test/r/ctype_ldml.result
@@ -407,7 +407,7 @@ select "foo" = "foo " collate latin1_test;
"foo" = "foo " collate latin1_test
1
The following tests check that two-byte collation IDs work
-select * from information_schema.collations where id>256 order by id;
+select * from information_schema.collations where id>256 and is_compiled<>'Yes' order by id;
COLLATION_NAME CHARACTER_SET_NAME ID IS_DEFAULT IS_COMPILED SORTLEN
utf8mb4_test_ci utf8mb4 326 8
utf16_test_ci utf16 327 8
diff --git a/mysql-test/r/ctype_uca.result b/mysql-test/r/ctype_uca.result
index 29099a581ef..b67fb8fdc98 100644
--- a/mysql-test/r/ctype_uca.result
+++ b/mysql-test/r/ctype_uca.result
@@ -2168,6 +2168,116 @@ Z,z,Ź,ź,Ż,ż,Ž,ž
ǁ
ǂ
ǃ
+select group_concat(c1 order by c1) from t1 group by c1 collate utf8_croatian_mysql561_ci;
+group_concat(c1 order by c1)
+A,a,À,Á,Â,Ã,Ä,Å,à,á,â,ã,ä,å,Ā,ā,Ă,ă,Ą,ą,Ǎ,ǎ,Ǟ,ǟ,Ǡ,ǡ,Ǻ,ǻ,Ạ,ạ,Ả,ả,Ấ,ấ,Ầ,ầ,Ẩ,ẩ,Ẫ,ẫ,Ậ,ậ,Ắ,ắ,Ằ,ằ,Ẳ,ẳ,Ẵ,ẵ,Ặ,ặ
+AA,Aa,aA,aa
+AE,Ae,aE,ae
+Æ,æ,Ǣ,ǣ,Ǽ,ǽ
+B,b
+Ƃ,ƃ
+C,c,Ç,ç,Ĉ,ĉ,Ċ,ċ
+CH,Ch,cH,ch
+Č,č
+Ć,ć
+Ƈ,ƈ
+D,d,Ď,ď
+DZ,Dz,dZ,dz,DZ,Dz,dz
+DŽ,Dž,dŽ,dž,DŽ,Dž,dž
+Đ,đ
+Ƌ,ƌ
+Ð,ð
+E,e,È,É,Ê,Ë,è,é,ê,ë,Ē,ē,Ĕ,ĕ,Ė,ė,Ę,ę,Ě,ě,Ẹ,ẹ,Ẻ,ẻ,Ẽ,ẽ,Ế,ế,Ề,ề,Ể,ể,Ễ,ễ,Ệ,ệ
+Ǝ,ǝ
+F,f
+Ƒ,ƒ
+G,g,Ĝ,ĝ,Ğ,ğ,Ġ,ġ,Ģ,ģ,Ǧ,ǧ,Ǵ,ǵ
+Ǥ,ǥ
+Ƣ,ƣ
+H,h,Ĥ,ĥ
+ƕ,Ƕ
+Ħ,ħ
+I,i,Ì,Í,Î,Ï,ì,í,î,ï,Ĩ,ĩ,Ī,ī,Ĭ,ĭ,Į,į,İ,Ǐ,ǐ,Ỉ,ỉ,Ị,ị
+IJ,Ij,iJ,ij,IJ,ij
+J,j,Ĵ,ĵ,ǰ
+K,k,Ķ,ķ,Ǩ,ǩ
+Ƙ,ƙ
+L,l,Ĺ,ĺ,Ļ,ļ,Ľ,ľ
+Ŀ,ŀ
+LL,Ll,lL,ll
+LJ,Lj,lJ,lj,LJ,Lj,lj
+Ł,ł
+M,m
+N,n,Ñ,ñ,Ń,ń,Ņ,ņ,Ň,ň,Ǹ,ǹ
+NJ,Nj,nJ,nj,NJ,Nj,nj
+Ŋ,ŋ
+O,o,Ò,Ó,Ô,Õ,Ö,ò,ó,ô,õ,ö,Ō,ō,Ŏ,ŏ,Ő,ő,Ơ,ơ,Ǒ,ǒ,Ǫ,ǫ,Ǭ,ǭ,Ọ,ọ,Ỏ,ỏ,Ố,ố,Ồ,ồ,Ổ,ổ,Ỗ,ỗ,Ộ,ộ,Ớ,ớ,Ờ,ờ,Ở,ở,Ỡ,ỡ,Ợ,ợ
+OE,Oe,oE,oe,Œ,œ
+Ø,ø,Ǿ,ǿ
+P,p
+Ƥ,ƥ
+Q,q
+R,r,Ŕ,ŕ,Ŗ,ŗ,Ř,ř
+RR,Rr,rR,rr
+S,s,Ś,ś,Ŝ,ŝ,Ş,ş,ſ
+SS,Ss,sS,ss,ß
+Š,š
+T,t,Ţ,ţ,Ť,ť
+Ŧ,ŧ
+Ƭ,ƭ
+U,u,Ù,Ú,Û,Ü,ù,ú,û,ü,Ũ,ũ,Ū,ū,Ŭ,ŭ,Ů,ů,Ű,ű,Ų,ų,Ư,ư,Ǔ,ǔ,Ǖ,ǖ,Ǘ,ǘ,Ǚ,ǚ,Ǜ,ǜ,Ụ,ụ,Ủ,ủ,Ứ,ứ,Ừ,ừ,Ử,ử,Ữ,ữ,Ự,ự
+V,v
+W,w,Ŵ,ŵ
+X,x
+Y,y,Ý,ý,ÿ,Ŷ,ŷ,Ÿ
+Ƴ,ƴ
+Z,z,Ź,ź,Ż,ż
+Ž,ž
+Ƶ,ƶ
+Ʒ,Ǯ,ǯ
+Ƹ,ƹ
+Þ,þ
+ƿ,Ƿ
+Ƨ,ƨ
+Ƽ,ƽ
+Ƅ,ƅ
select group_concat(c1 order by c1) from t1 group by c1 collate utf8_croatian_ci;
group_concat(c1 order by c1)
÷
@@ -4367,6 +4477,116 @@ Z,z,Ź,ź,Ż,ż,Ž,ž
ǁ
ǂ
ǃ
+SELECT GROUP_CONCAT(c1 ORDER BY c1) FROM t1 GROUP BY c1 COLLATE ucs2_croatian_mysql561_ci;
+GROUP_CONCAT(c1 ORDER BY c1)
+A,a,À,Á,Â,Ã,Ä,Å,à,á,â,ã,ä,å,Ā,ā,Ă,ă,Ą,ą,Ǎ,ǎ,Ǟ,ǟ,Ǡ,ǡ,Ǻ,ǻ,Ạ,ạ,Ả,ả,Ấ,ấ,Ầ,ầ,Ẩ,ẩ,Ẫ,ẫ,Ậ,ậ,Ắ,ắ,Ằ,ằ,Ẳ,ẳ,Ẵ,ẵ,Ặ,ặ
+AA,Aa,aA,aa
+AE,Ae,aE,ae
+Æ,æ,Ǣ,ǣ,Ǽ,ǽ
+B,b
+Ƃ,ƃ
+C,c,Ç,ç,Ĉ,ĉ,Ċ,ċ
+CH,Ch,cH,ch
+Č,č
+Ć,ć
+Ƈ,ƈ
+D,d,Ď,ď
+DZ,Dz,dZ,dz,DZ,Dz,dz
+DŽ,Dž,dŽ,dž,DŽ,Dž,dž
+Đ,đ
+Ƌ,ƌ
+Ð,ð
+E,e,È,É,Ê,Ë,è,é,ê,ë,Ē,ē,Ĕ,ĕ,Ė,ė,Ę,ę,Ě,ě,Ẹ,ẹ,Ẻ,ẻ,Ẽ,ẽ,Ế,ế,Ề,ề,Ể,ể,Ễ,ễ,Ệ,ệ
+Ǝ,ǝ
+F,f
+Ƒ,ƒ
+G,g,Ĝ,ĝ,Ğ,ğ,Ġ,ġ,Ģ,ģ,Ǧ,ǧ,Ǵ,ǵ
+Ǥ,ǥ
+Ƣ,ƣ
+H,h,Ĥ,ĥ
+ƕ,Ƕ
+Ħ,ħ
+I,i,Ì,Í,Î,Ï,ì,í,î,ï,Ĩ,ĩ,Ī,ī,Ĭ,ĭ,Į,į,İ,Ǐ,ǐ,Ỉ,ỉ,Ị,ị
+IJ,Ij,iJ,ij,IJ,ij
+J,j,Ĵ,ĵ,ǰ
+K,k,Ķ,ķ,Ǩ,ǩ
+Ƙ,ƙ
+L,l,Ĺ,ĺ,Ļ,ļ,Ľ,ľ
+Ŀ,ŀ
+LL,Ll,lL,ll
+LJ,Lj,lJ,lj,LJ,Lj,lj
+Ł,ł
+M,m
+N,n,Ñ,ñ,Ń,ń,Ņ,ņ,Ň,ň,Ǹ,ǹ
+NJ,Nj,nJ,nj,NJ,Nj,nj
+Ŋ,ŋ
+O,o,Ò,Ó,Ô,Õ,Ö,ò,ó,ô,õ,ö,Ō,ō,Ŏ,ŏ,Ő,ő,Ơ,ơ,Ǒ,ǒ,Ǫ,ǫ,Ǭ,ǭ,Ọ,ọ,Ỏ,ỏ,Ố,ố,Ồ,ồ,Ổ,ổ,Ỗ,ỗ,Ộ,ộ,Ớ,ớ,Ờ,ờ,Ở,ở,Ỡ,ỡ,Ợ,ợ
+OE,Oe,oE,oe,Œ,œ
+Ø,ø,Ǿ,ǿ
+P,p
+Ƥ,ƥ
+Q,q
+R,r,Ŕ,ŕ,Ŗ,ŗ,Ř,ř
+RR,Rr,rR,rr
+S,s,Ś,ś,Ŝ,ŝ,Ş,ş,ſ
+SS,Ss,sS,ss,ß
+Š,š
+T,t,Ţ,ţ,Ť,ť
+Ŧ,ŧ
+Ƭ,ƭ
+U,u,Ù,Ú,Û,Ü,ù,ú,û,ü,Ũ,ũ,Ū,ū,Ŭ,ŭ,Ů,ů,Ű,ű,Ų,ų,Ư,ư,Ǔ,ǔ,Ǖ,ǖ,Ǘ,ǘ,Ǚ,ǚ,Ǜ,ǜ,Ụ,ụ,Ủ,ủ,Ứ,ứ,Ừ,ừ,Ử,ử,Ữ,ữ,Ự,ự
+V,v
+W,w,Ŵ,ŵ
+X,x
+Y,y,Ý,ý,ÿ,Ŷ,ŷ,Ÿ
+Ƴ,ƴ
+Z,z,Ź,ź,Ż,ż
+Ž,ž
+Ƶ,ƶ
+Ʒ,Ǯ,ǯ
+Ƹ,ƹ
+Þ,þ
+ƿ,Ƿ
+Ƨ,ƨ
+Ƽ,ƽ
+Ƅ,ƅ
SELECT GROUP_CONCAT(c1 ORDER BY c1) FROM t1 GROUP BY c1 COLLATE ucs2_croatian_ci;
GROUP_CONCAT(c1 ORDER BY c1)
÷
@@ -5661,7 +5881,7 @@ HEX(s1)
0061000000000000000000000009
0061
DROP TABLE t1;
-create table t1 (a int, c1 varchar(200) collate utf8_croatian_ci, key (c1));
+create table t1 (a int, c1 varchar(200) collate utf8_croatian_mysql561_ci, key (c1));
insert into t1 values (1,'=> DZ'),(2,'=> Dz'),(3,'=> dz'),(4,'=> dZ');
insert into t1 values (5,'=> DŽ'),(6,'=> Dž'),(7,'=> dž'),(8,'=> dŽ');
insert into t1 values (9,'=> dž'),(10,'=> DŽ');
@@ -5671,10 +5891,10 @@ c1
=> Dz
=> dz
=> dZ
-=> dŽ
=> DŽ
=> Dž
=> dž
+=> dŽ
=> dž
=> DŽ
select concat(c1) from t1 order by c1;
@@ -5683,10 +5903,10 @@ concat(c1)
=> Dz
=> dz
=> dZ
-=> dŽ
=> DŽ
=> Dž
=> dž
+=> dŽ
=> dž
=> DŽ
select * from t1 where c1 like '=> d%';
@@ -5738,6 +5958,7 @@ a c1
5 => DŽ
6 => Dž
7 => dž
+8 => dŽ
9 => dž
10 => DŽ
select * from t1 where concat(c1) = '=> dž';
@@ -5745,6 +5966,7 @@ a c1
5 => DŽ
6 => Dž
7 => dž
+8 => dŽ
9 => dž
10 => DŽ
drop table t1;
diff --git a/mysql-test/r/ctype_upgrade.result b/mysql-test/r/ctype_upgrade.result
new file mode 100644
index 00000000000..0fc73203494
--- /dev/null
+++ b/mysql-test/r/ctype_upgrade.result
@@ -0,0 +1,389 @@
+call mtr.add_suppression("Table rebuild required");
+#
+# Upgrade from Maria-5.3.13:
+# Checking utf8_croatian_ci in a VARCHAR column
+#
+# Copying maria050313_utf8_croatian_ci.* to MYSQLD_DATADIR
+CHECK TABLE maria050313_utf8_croatian_ci FOR UPGRADE;
+Table Op Msg_type Msg_text
+test.maria050313_utf8_croatian_ci check error Table upgrade required. Please do "REPAIR TABLE `maria050313_utf8_croatian_ci`" or dump/reload to fix it!
+SHOW CREATE TABLE maria050313_utf8_croatian_ci;
+ERROR HY000: Table rebuild required. Please do "ALTER TABLE `test.maria050313_utf8_croatian_c` FORCE" or dump/reload to fix it!
+REPAIR TABLE maria050313_utf8_croatian_ci;
+Table Op Msg_type Msg_text
+test.maria050313_utf8_croatian_ci repair status OK
+CHECK TABLE maria050313_utf8_croatian_ci FOR UPGRADE;
+Table Op Msg_type Msg_text
+test.maria050313_utf8_croatian_ci check status OK
+SHOW CREATE TABLE maria050313_utf8_croatian_ci;
+Table Create Table
+maria050313_utf8_croatian_ci CREATE TABLE `maria050313_utf8_croatian_ci` (
+ `a` varchar(10) CHARACTER SET utf8 COLLATE utf8_croatian_ci DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT count(*) FROM maria050313_utf8_croatian_ci;
+count(*)
+4
+DROP TABLE maria050313_utf8_croatian_ci;
+# Copying maria050313_utf8_croatian_ci.* to MYSQLD_DATADIR
+ALTER TABLE maria050313_utf8_croatian_ci FORCE;
+SHOW CREATE TABLE maria050313_utf8_croatian_ci;
+Table Create Table
+maria050313_utf8_croatian_ci CREATE TABLE `maria050313_utf8_croatian_ci` (
+ `a` varchar(10) CHARACTER SET utf8 COLLATE utf8_croatian_ci DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT GROUP_CONCAT(a ORDER BY BINARY a) FROM maria050313_utf8_croatian_ci GROUP BY a;
+GROUP_CONCAT(a ORDER BY BINARY a)
+nJ
+NJ,Nj,nj
+DROP TABLE maria050313_utf8_croatian_ci;
+#
+# Upgrade from Maria-5.3.13:
+# Checking ucs2_croatian_ci in the table default collation
+#
+# Copying maria050313_ucs2_croatian_ci.* to MYSQLD_DATADIR
+CHECK TABLE maria050313_ucs2_croatian_ci_def FOR UPGRADE;
+Table Op Msg_type Msg_text
+test.maria050313_ucs2_croatian_ci_def check error Table upgrade required. Please do "REPAIR TABLE `maria050313_ucs2_croatian_ci_def`" or dump/reload to fix it!
+SELECT count(*) FROM maria050313_ucs2_croatian_ci_def;
+ERROR HY000: Table rebuild required. Please do "ALTER TABLE `test.maria050313_ucs2_croatian_c` FORCE" or dump/reload to fix it!
+REPAIR TABLE maria050313_ucs2_croatian_ci_def;
+Table Op Msg_type Msg_text
+test.maria050313_ucs2_croatian_ci_def repair status OK
+SHOW CREATE TABLE maria050313_ucs2_croatian_ci_def;
+Table Create Table
+maria050313_ucs2_croatian_ci_def CREATE TABLE `maria050313_ucs2_croatian_ci_def` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_croatian_ci
+DROP TABLE maria050313_ucs2_croatian_ci_def;
+# Copying maria050313_ucs2_croatian_ci.* to MYSQLD_DATADIR
+CHECK TABLE maria050313_ucs2_croatian_ci_def;
+Table Op Msg_type Msg_text
+test.maria050313_ucs2_croatian_ci_def check error Table upgrade required. Please do "REPAIR TABLE `maria050313_ucs2_croatian_ci_def`" or dump/reload to fix it!
+REPAIR TABLE maria050313_ucs2_croatian_ci_def;
+Table Op Msg_type Msg_text
+test.maria050313_ucs2_croatian_ci_def repair status OK
+CHECK TABLE maria050313_ucs2_croatian_ci_def;
+Table Op Msg_type Msg_text
+test.maria050313_ucs2_croatian_ci_def check status OK
+SHOW CREATE TABLE maria050313_ucs2_croatian_ci_def;
+Table Create Table
+maria050313_ucs2_croatian_ci_def CREATE TABLE `maria050313_ucs2_croatian_ci_def` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_croatian_ci
+SELECT * FROM maria050313_ucs2_croatian_ci_def ORDER BY a;
+a
+1
+2
+3
+DROP TABLE maria050313_ucs2_croatian_ci_def;
+#
+# Upgrade from Maria-5.5.33
+# Checking utf8_croatian_ci, utf8mb4_croatian_ci, ucs2_croatian_ci,
+# utf16_croatian_ci, utf32_croatian_ci
+#
+# Copying maria050533_xxx_croatian_ci.* to MYSQLD_DATADIR
+CHECK TABLE maria050533_xxx_croatian_ci FOR UPGRADE;
+Table Op Msg_type Msg_text
+test.maria050533_xxx_croatian_ci check error Table upgrade required. Please do "REPAIR TABLE `maria050533_xxx_croatian_ci`" or dump/reload to fix it!
+REPAIR TABLE maria050533_xxx_croatian_ci;
+Table Op Msg_type Msg_text
+test.maria050533_xxx_croatian_ci repair status OK
+SHOW CREATE TABLE maria050533_xxx_croatian_ci;
+Table Create Table
+maria050533_xxx_croatian_ci CREATE TABLE `maria050533_xxx_croatian_ci` (
+ `a` varchar(10) CHARACTER SET utf8 COLLATE utf8_croatian_ci DEFAULT NULL,
+ `b` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_croatian_ci DEFAULT NULL,
+ `c` varchar(10) CHARACTER SET ucs2 COLLATE ucs2_croatian_ci DEFAULT NULL,
+ `d` varchar(10) CHARACTER SET utf16 COLLATE utf16_croatian_ci DEFAULT NULL,
+ `e` varchar(10) CHARACTER SET utf32 COLLATE utf32_croatian_ci DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT count(*) FROM maria050533_xxx_croatian_ci;
+count(*)
+4
+DROP TABLE maria050533_xxx_croatian_ci;
+# Copying maria050533_xxx_croatian_ci.* to MYSQLD_DATADIR
+ALTER TABLE maria050533_xxx_croatian_ci FORCE;
+SHOW CREATE TABLE maria050533_xxx_croatian_ci;
+Table Create Table
+maria050533_xxx_croatian_ci CREATE TABLE `maria050533_xxx_croatian_ci` (
+ `a` varchar(10) CHARACTER SET utf8 COLLATE utf8_croatian_ci DEFAULT NULL,
+ `b` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_croatian_ci DEFAULT NULL,
+ `c` varchar(10) CHARACTER SET ucs2 COLLATE ucs2_croatian_ci DEFAULT NULL,
+ `d` varchar(10) CHARACTER SET utf16 COLLATE utf16_croatian_ci DEFAULT NULL,
+ `e` varchar(10) CHARACTER SET utf32 COLLATE utf32_croatian_ci DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT GROUP_CONCAT(a ORDER BY BINARY a) FROM maria050533_xxx_croatian_ci GROUP BY a;
+GROUP_CONCAT(a ORDER BY BINARY a)
+nJ
+NJ,Nj,nj
+SELECT GROUP_CONCAT(b ORDER BY BINARY b) FROM maria050533_xxx_croatian_ci GROUP BY b;
+GROUP_CONCAT(b ORDER BY BINARY b)
+nJ
+NJ,Nj,nj
+SELECT GROUP_CONCAT(c ORDER BY BINARY c) FROM maria050533_xxx_croatian_ci GROUP BY c;
+GROUP_CONCAT(c ORDER BY BINARY c)
+nJ
+NJ,Nj,nj
+SELECT GROUP_CONCAT(d ORDER BY BINARY d) FROM maria050533_xxx_croatian_ci GROUP BY d;
+GROUP_CONCAT(d ORDER BY BINARY d)
+nJ
+NJ,Nj,nj
+SELECT GROUP_CONCAT(e ORDER BY BINARY e) FROM maria050533_xxx_croatian_ci GROUP BY e;
+GROUP_CONCAT(e ORDER BY BINARY e)
+nJ
+NJ,Nj,nj
+DROP TABLE maria050533_xxx_croatian_ci;
+#
+# Upgrade from Maria-10.0.4
+# Checking utf8_croatian_ci, utf8mb4_croatian_ci, ucs2_croatian_ci,
+# utf16_croatian_ci, utf32_croatian_ci
+#
+# Copying maria100004_xxx_croatian_ci.* to MYSQLD_DATADIR
+CHECK TABLE maria100004_xxx_croatian_ci FOR UPGRADE;
+Table Op Msg_type Msg_text
+test.maria100004_xxx_croatian_ci check error Table upgrade required. Please do "REPAIR TABLE `maria100004_xxx_croatian_ci`" or dump/reload to fix it!
+SELECT count(*) FROM maria100004_xxx_croatian_ci;
+ERROR HY000: Table rebuild required. Please do "ALTER TABLE `test.maria100004_xxx_croatian_ci` FORCE" or dump/reload to fix it!
+REPAIR TABLE maria100004_xxx_croatian_ci;
+Table Op Msg_type Msg_text
+test.maria100004_xxx_croatian_ci repair status OK
+SHOW CREATE TABLE maria100004_xxx_croatian_ci;
+Table Create Table
+maria100004_xxx_croatian_ci CREATE TABLE `maria100004_xxx_croatian_ci` (
+ `a` varchar(10) COLLATE utf8_croatian_ci DEFAULT NULL,
+ `b` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_croatian_ci DEFAULT NULL,
+ `c` varchar(10) CHARACTER SET ucs2 COLLATE ucs2_croatian_ci DEFAULT NULL,
+ `d` varchar(10) CHARACTER SET utf16 COLLATE utf16_croatian_ci DEFAULT NULL,
+ `e` varchar(10) CHARACTER SET utf32 COLLATE utf32_croatian_ci DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_croatian_ci
+DROP TABLE maria100004_xxx_croatian_ci;
+# Copying maria100004_xxx_croatian_ci.* to MYSQLD_DATADIR
+ALTER TABLE maria100004_xxx_croatian_ci FORCE;
+SHOW CREATE TABLE maria100004_xxx_croatian_ci;
+Table Create Table
+maria100004_xxx_croatian_ci CREATE TABLE `maria100004_xxx_croatian_ci` (
+ `a` varchar(10) COLLATE utf8_croatian_ci DEFAULT NULL,
+ `b` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_croatian_ci DEFAULT NULL,
+ `c` varchar(10) CHARACTER SET ucs2 COLLATE ucs2_croatian_ci DEFAULT NULL,
+ `d` varchar(10) CHARACTER SET utf16 COLLATE utf16_croatian_ci DEFAULT NULL,
+ `e` varchar(10) CHARACTER SET utf32 COLLATE utf32_croatian_ci DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_croatian_ci
+SELECT GROUP_CONCAT(a ORDER BY BINARY a) FROM maria100004_xxx_croatian_ci GROUP BY a;
+GROUP_CONCAT(a ORDER BY BINARY a)
+nJ
+NJ,Nj,nj
+SELECT GROUP_CONCAT(b ORDER BY BINARY b) FROM maria100004_xxx_croatian_ci GROUP BY b;
+GROUP_CONCAT(b ORDER BY BINARY b)
+nJ
+NJ,Nj,nj
+SELECT GROUP_CONCAT(c ORDER BY BINARY c) FROM maria100004_xxx_croatian_ci GROUP BY c;
+GROUP_CONCAT(c ORDER BY BINARY c)
+nJ
+NJ,Nj,nj
+SELECT GROUP_CONCAT(d ORDER BY BINARY d) FROM maria100004_xxx_croatian_ci GROUP BY d;
+GROUP_CONCAT(d ORDER BY BINARY d)
+nJ
+NJ,Nj,nj
+SELECT GROUP_CONCAT(e ORDER BY BINARY e) FROM maria100004_xxx_croatian_ci GROUP BY e;
+GROUP_CONCAT(e ORDER BY BINARY e)
+nJ
+NJ,Nj,nj
+DROP TABLE maria100004_xxx_croatian_ci;
+#
+# Upgrade from MySQL-5.6.14
+# Checking utf8_croatian_ci, utf8mb4_croatian_ci, ucs2_croatian_ci,
+# utf16_croatian_ci, utf32_croatian_ci
+#
+# Copying mysql050614_xxx_croatian_ci.* to MYSQLD_DATADIR
+CHECK TABLE mysql050614_xxx_croatian_ci FOR UPGRADE;
+Table Op Msg_type Msg_text
+test.mysql050614_xxx_croatian_ci check status OK
+SHOW CREATE TABLE mysql050614_xxx_croatian_ci;
+Table Create Table
+mysql050614_xxx_croatian_ci CREATE TABLE `mysql050614_xxx_croatian_ci` (
+ `a` varchar(10) COLLATE utf8_croatian_mysql561_ci DEFAULT NULL,
+ `b` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_croatian_mysql561_ci DEFAULT NULL,
+ `c` varchar(10) CHARACTER SET ucs2 COLLATE ucs2_croatian_mysql561_ci DEFAULT NULL,
+ `d` varchar(10) CHARACTER SET utf16 COLLATE utf16_croatian_mysql561_ci DEFAULT NULL,
+ `e` varchar(10) CHARACTER SET utf32 COLLATE utf32_croatian_mysql561_ci DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_croatian_mysql561_ci
+SELECT GROUP_CONCAT(a ORDER BY BINARY a) FROM mysql050614_xxx_croatian_ci GROUP BY a;
+GROUP_CONCAT(a ORDER BY BINARY a)
+NJ,Nj,nJ,nj
+SELECT GROUP_CONCAT(b ORDER BY BINARY b) FROM mysql050614_xxx_croatian_ci GROUP BY b;
+GROUP_CONCAT(b ORDER BY BINARY b)
+NJ,Nj,nJ,nj
+SELECT GROUP_CONCAT(c ORDER BY BINARY c) FROM mysql050614_xxx_croatian_ci GROUP BY c;
+GROUP_CONCAT(c ORDER BY BINARY c)
+NJ,Nj,nJ,nj
+SELECT GROUP_CONCAT(d ORDER BY BINARY d) FROM mysql050614_xxx_croatian_ci GROUP BY d;
+GROUP_CONCAT(d ORDER BY BINARY d)
+NJ,Nj,nJ,nj
+SELECT GROUP_CONCAT(e ORDER BY BINARY e) FROM mysql050614_xxx_croatian_ci GROUP BY e;
+GROUP_CONCAT(e ORDER BY BINARY e)
+NJ,Nj,nJ,nj
+DROP TABLE mysql050614_xxx_croatian_ci;
+#
+# Checking mysql_upgrade
+#
+# Running mysql_upgrade
+Phase 1/3: Fixing table and database names
+Phase 2/3: Checking and upgrading tables
+Processing databases
+information_schema
+mtr
+mtr.global_suppressions OK
+mtr.test_suppressions OK
+mysql
+mysql.column_stats OK
+mysql.columns_priv OK
+mysql.db OK
+mysql.event OK
+mysql.func OK
+mysql.gtid_slave_pos OK
+mysql.help_category OK
+mysql.help_keyword OK
+mysql.help_relation OK
+mysql.help_topic OK
+mysql.host OK
+mysql.index_stats OK
+mysql.innodb_index_stats OK
+mysql.innodb_table_stats OK
+mysql.plugin OK
+mysql.proc OK
+mysql.procs_priv OK
+mysql.proxies_priv OK
+mysql.roles_mapping OK
+mysql.servers OK
+mysql.table_stats OK
+mysql.tables_priv OK
+mysql.time_zone OK
+mysql.time_zone_leap_second OK
+mysql.time_zone_name OK
+mysql.time_zone_transition OK
+mysql.time_zone_transition_type OK
+mysql.user OK
+performance_schema
+test
+test.maria050313_ucs2_croatian_ci_def Needs upgrade
+test.maria050313_utf8_croatian_ci Needs upgrade
+test.maria050533_xxx_croatian_ci Needs upgrade
+test.maria100004_xxx_croatian_ci Needs upgrade
+test.mysql050614_xxx_croatian_ci OK
+
+Repairing tables
+test.maria050313_ucs2_croatian_ci_def OK
+test.maria050313_utf8_croatian_ci OK
+test.maria050533_xxx_croatian_ci OK
+test.maria100004_xxx_croatian_ci OK
+Phase 3/3: Running 'mysql_fix_privilege_tables'...
+OK
+# Running mysql_upgrade for the second time
+# This should report OK for all tables
+Phase 1/3: Fixing table and database names
+Phase 2/3: Checking and upgrading tables
+Processing databases
+information_schema
+mtr
+mtr.global_suppressions OK
+mtr.test_suppressions OK
+mysql
+mysql.column_stats OK
+mysql.columns_priv OK
+mysql.db OK
+mysql.event OK
+mysql.func OK
+mysql.gtid_slave_pos OK
+mysql.help_category OK
+mysql.help_keyword OK
+mysql.help_relation OK
+mysql.help_topic OK
+mysql.host OK
+mysql.index_stats OK
+mysql.innodb_index_stats OK
+mysql.innodb_table_stats OK
+mysql.plugin OK
+mysql.proc OK
+mysql.procs_priv OK
+mysql.proxies_priv OK
+mysql.roles_mapping OK
+mysql.servers OK
+mysql.table_stats OK
+mysql.tables_priv OK
+mysql.time_zone OK
+mysql.time_zone_leap_second OK
+mysql.time_zone_name OK
+mysql.time_zone_transition OK
+mysql.time_zone_transition_type OK
+mysql.user OK
+performance_schema
+test
+test.maria050313_ucs2_croatian_ci_def OK
+test.maria050313_utf8_croatian_ci OK
+test.maria050533_xxx_croatian_ci OK
+test.maria100004_xxx_croatian_ci OK
+test.mysql050614_xxx_croatian_ci OK
+Phase 3/3: Running 'mysql_fix_privilege_tables'...
+OK
+SHOW CREATE TABLE maria050313_ucs2_croatian_ci_def;
+Table Create Table
+maria050313_ucs2_croatian_ci_def CREATE TABLE `maria050313_ucs2_croatian_ci_def` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_croatian_ci
+SELECT * FROM maria050313_ucs2_croatian_ci_def ORDER BY a;
+a
+1
+2
+3
+SHOW CREATE TABLE maria050313_utf8_croatian_ci;
+Table Create Table
+maria050313_utf8_croatian_ci CREATE TABLE `maria050313_utf8_croatian_ci` (
+ `a` varchar(10) CHARACTER SET utf8 COLLATE utf8_croatian_ci DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT GROUP_CONCAT(a ORDER BY BINARY a) FROM maria050313_utf8_croatian_ci GROUP BY a;
+GROUP_CONCAT(a ORDER BY BINARY a)
+nJ
+NJ,Nj,nj
+SHOW CREATE TABLE maria050533_xxx_croatian_ci;
+Table Create Table
+maria050533_xxx_croatian_ci CREATE TABLE `maria050533_xxx_croatian_ci` (
+ `a` varchar(10) CHARACTER SET utf8 COLLATE utf8_croatian_ci DEFAULT NULL,
+ `b` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_croatian_ci DEFAULT NULL,
+ `c` varchar(10) CHARACTER SET ucs2 COLLATE ucs2_croatian_ci DEFAULT NULL,
+ `d` varchar(10) CHARACTER SET utf16 COLLATE utf16_croatian_ci DEFAULT NULL,
+ `e` varchar(10) CHARACTER SET utf32 COLLATE utf32_croatian_ci DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT GROUP_CONCAT(a ORDER BY BINARY a) FROM maria050533_xxx_croatian_ci GROUP BY a;
+GROUP_CONCAT(a ORDER BY BINARY a)
+nJ
+NJ,Nj,nj
+SHOW CREATE TABLE maria100004_xxx_croatian_ci;
+Table Create Table
+maria100004_xxx_croatian_ci CREATE TABLE `maria100004_xxx_croatian_ci` (
+ `a` varchar(10) COLLATE utf8_croatian_ci DEFAULT NULL,
+ `b` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_croatian_ci DEFAULT NULL,
+ `c` varchar(10) CHARACTER SET ucs2 COLLATE ucs2_croatian_ci DEFAULT NULL,
+ `d` varchar(10) CHARACTER SET utf16 COLLATE utf16_croatian_ci DEFAULT NULL,
+ `e` varchar(10) CHARACTER SET utf32 COLLATE utf32_croatian_ci DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_croatian_ci
+SELECT GROUP_CONCAT(a ORDER BY BINARY a) FROM maria100004_xxx_croatian_ci GROUP BY a;
+GROUP_CONCAT(a ORDER BY BINARY a)
+nJ
+NJ,Nj,nj
+SHOW CREATE TABLE mysql050614_xxx_croatian_ci;
+Table Create Table
+mysql050614_xxx_croatian_ci CREATE TABLE `mysql050614_xxx_croatian_ci` (
+ `a` varchar(10) COLLATE utf8_croatian_mysql561_ci DEFAULT NULL,
+ `b` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_croatian_mysql561_ci DEFAULT NULL,
+ `c` varchar(10) CHARACTER SET ucs2 COLLATE ucs2_croatian_mysql561_ci DEFAULT NULL,
+ `d` varchar(10) CHARACTER SET utf16 COLLATE utf16_croatian_mysql561_ci DEFAULT NULL,
+ `e` varchar(10) CHARACTER SET utf32 COLLATE utf32_croatian_mysql561_ci DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_croatian_mysql561_ci
+SELECT GROUP_CONCAT(a ORDER BY BINARY a) FROM mysql050614_xxx_croatian_ci GROUP BY a;
+GROUP_CONCAT(a ORDER BY BINARY a)
+NJ,Nj,nJ,nj
+DROP TABLE maria050313_ucs2_croatian_ci_def;
+DROP TABLE maria050313_utf8_croatian_ci;
+DROP TABLE maria050533_xxx_croatian_ci;
+DROP TABLE maria100004_xxx_croatian_ci;
+DROP TABLE mysql050614_xxx_croatian_ci;
diff --git a/mysql-test/r/ctype_utf16_uca.result b/mysql-test/r/ctype_utf16_uca.result
index d471f1747da..9e7cf97f8f1 100644
--- a/mysql-test/r/ctype_utf16_uca.result
+++ b/mysql-test/r/ctype_utf16_uca.result
@@ -2177,6 +2177,116 @@ ZzŹźŻżŽž
ǁ
ǂ
ǃ
+select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf16_croatian_mysql561_ci;
+group_concat(c1 order by binary c1 separator '')
+AaÀÁÂÃÄÅàáâãäåĀāĂ㥹ǍǎǞǟǠǡǺǻẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặ
+AAAaaAaa
+AEAeaEae
+ÆæǢǣǼǽ
+Bb
+Ƃƃ
+CcÇçĈĉĊċ
+CHChcHch
+Čč
+Ćć
+Ƈƈ
+DdĎď
+DZDzdZdzDZDzdz
+DŽDždŽdžDŽDždž
+Đđ
+Ƌƌ
+Ðð
+EeÈÉÊËèéêëĒēĔĕĖėĘęĚěẸẹẺẻẼẽẾếỀềỂểỄễỆệ
+Ǝǝ
+Ff
+Ƒƒ
+GgĜĝĞğĠġĢģǦǧǴǵ
+Ǥǥ
+Ƣƣ
+HhĤĥ
+ƕǶ
+Ħħ
+IiÌÍÎÏìíîïĨĩĪīĬĭĮįİǏǐỈỉỊị
+IJIjiJijIJij
+JjĴĵǰ
+KkĶķǨǩ
+Ƙƙ
+LlĹĺĻļĽľ
+Ŀŀ
+LLLllLll
+LJLjlJljLJLjlj
+Łł
+Mm
+NnÑñŃńŅņŇňǸǹ
+NJNjnJnjNJNjnj
+Ŋŋ
+OoÒÓÔÕÖòóôõöŌōŎŏŐőƠơǑǒǪǫǬǭỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợ
+OEOeoEoeŒœ
+ØøǾǿ
+Pp
+Ƥƥ
+Qq
+RrŔŕŖŗŘř
+RRRrrRrr
+SsŚśŜŝŞşſ
+SSSssSssß
+Šš
+TtŢţŤť
+Ŧŧ
+Ƭƭ
+UuÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜỤụỦủỨứỪừỬửỮữỰự
+Vv
+WwŴŵ
+Xx
+YyÝýÿŶŷŸ
+Ƴƴ
+ZzŹźŻż
+Žž
+Ƶƶ
+ƷǮǯ
+Ƹƹ
+Þþ
+ƿǷ
+Ƨƨ
+Ƽƽ
+Ƅƅ
select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf16_croatian_ci;
group_concat(c1 order by binary c1 separator '')
÷
diff --git a/mysql-test/r/ctype_utf32_uca.result b/mysql-test/r/ctype_utf32_uca.result
index cfc918f238a..ab68764a263 100644
--- a/mysql-test/r/ctype_utf32_uca.result
+++ b/mysql-test/r/ctype_utf32_uca.result
@@ -2177,6 +2177,116 @@ ZzŹźŻżŽž
ǁ
ǂ
ǃ
+select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf32_croatian_mysql561_ci;
+group_concat(c1 order by binary c1 separator '')
+AaÀÁÂÃÄÅàáâãäåĀāĂ㥹ǍǎǞǟǠǡǺǻẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặ
+AAAaaAaa
+AEAeaEae
+ÆæǢǣǼǽ
+Bb
+Ƃƃ
+CcÇçĈĉĊċ
+CHChcHch
+Čč
+Ćć
+Ƈƈ
+DdĎď
+DZDzdZdzDZDzdz
+DŽDždŽdžDŽDždž
+Đđ
+Ƌƌ
+Ðð
+EeÈÉÊËèéêëĒēĔĕĖėĘęĚěẸẹẺẻẼẽẾếỀềỂểỄễỆệ
+Ǝǝ
+Ff
+Ƒƒ
+GgĜĝĞğĠġĢģǦǧǴǵ
+Ǥǥ
+Ƣƣ
+HhĤĥ
+ƕǶ
+Ħħ
+IiÌÍÎÏìíîïĨĩĪīĬĭĮįİǏǐỈỉỊị
+IJIjiJijIJij
+JjĴĵǰ
+KkĶķǨǩ
+Ƙƙ
+LlĹĺĻļĽľ
+Ŀŀ
+LLLllLll
+LJLjlJljLJLjlj
+Łł
+Mm
+NnÑñŃńŅņŇňǸǹ
+NJNjnJnjNJNjnj
+Ŋŋ
+OoÒÓÔÕÖòóôõöŌōŎŏŐőƠơǑǒǪǫǬǭỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợ
+OEOeoEoeŒœ
+ØøǾǿ
+Pp
+Ƥƥ
+Qq
+RrŔŕŖŗŘř
+RRRrrRrr
+SsŚśŜŝŞşſ
+SSSssSssß
+Šš
+TtŢţŤť
+Ŧŧ
+Ƭƭ
+UuÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜỤụỦủỨứỪừỬửỮữỰự
+Vv
+WwŴŵ
+Xx
+YyÝýÿŶŷŸ
+Ƴƴ
+ZzŹźŻż
+Žž
+Ƶƶ
+ƷǮǯ
+Ƹƹ
+Þþ
+ƿǷ
+Ƨƨ
+Ƽƽ
+Ƅƅ
select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf32_croatian_ci;
group_concat(c1 order by binary c1 separator '')
÷
diff --git a/mysql-test/r/ctype_utf8mb4_uca.result b/mysql-test/r/ctype_utf8mb4_uca.result
index 22beb8ee4cc..1e4648eedd6 100644
--- a/mysql-test/r/ctype_utf8mb4_uca.result
+++ b/mysql-test/r/ctype_utf8mb4_uca.result
@@ -2138,6 +2138,116 @@ ZzŹźŻżŽž
ǁ
ǂ
ǃ
+SELECT GROUP_CONCAT(c1 ORDER BY c1 SEPARATOR '') FROM t1 GROUP BY c1 COLLATE utf8mb4_croatian_mysql561_ci;
+GROUP_CONCAT(c1 ORDER BY c1 SEPARATOR '')
+AaÀÁÂÃÄÅàáâãäåĀāĂ㥹ǍǎǞǟǠǡǺǻẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặ
+AAAaaAaa
+AEAeaEae
+ÆæǢǣǼǽ
+Bb
+Ƃƃ
+CcÇçĈĉĊċ
+CHChcHch
+Čč
+Ćć
+Ƈƈ
+DdĎď
+DZDzdZdzDZDzdz
+DŽDždŽdžDŽDždž
+Đđ
+Ƌƌ
+Ðð
+EeÈÉÊËèéêëĒēĔĕĖėĘęĚěẸẹẺẻẼẽẾếỀềỂểỄễỆệ
+Ǝǝ
+Ff
+Ƒƒ
+GgĜĝĞğĠġĢģǦǧǴǵ
+Ǥǥ
+Ƣƣ
+HhĤĥ
+ƕǶ
+Ħħ
+IiÌÍÎÏìíîïĨĩĪīĬĭĮįİǏǐỈỉỊị
+IJIjiJijIJij
+JjĴĵǰ
+KkĶķǨǩ
+Ƙƙ
+LlĹĺĻļĽľ
+Ŀŀ
+LLLllLll
+LJLjlJljLJLjlj
+Łł
+Mm
+NnÑñŃńŅņŇňǸǹ
+NJNjnJnjNJNjnj
+Ŋŋ
+OoÒÓÔÕÖòóôõöŌōŎŏŐőƠơǑǒǪǫǬǭỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợ
+OEOeoEoeŒœ
+ØøǾǿ
+Pp
+Ƥƥ
+Qq
+RrŔŕŖŗŘř
+RRRrrRrr
+SsŚśŜŝŞşſ
+SSSssSssß
+Šš
+TtŢţŤť
+Ŧŧ
+Ƭƭ
+UuÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜỤụỦủỨứỪừỬửỮữỰự
+Vv
+WwŴŵ
+Xx
+YyÝýÿŶŷŸ
+Ƴƴ
+ZzŹźŻż
+Žž
+Ƶƶ
+ƷǮǯ
+Ƹƹ
+Þþ
+ƿǷ
+Ƨƨ
+Ƽƽ
+Ƅƅ
SELECT GROUP_CONCAT(c1 ORDER BY c1 SEPARATOR '') FROM t1 GROUP BY c1 COLLATE utf8mb4_croatian_ci;
GROUP_CONCAT(c1 ORDER BY c1 SEPARATOR '')
÷
diff --git a/mysql-test/std_data/ctype_upgrade/maria050313_ucs2_croatian_ci_def.MYD b/mysql-test/std_data/ctype_upgrade/maria050313_ucs2_croatian_ci_def.MYD
new file mode 100644
index 00000000000..4d8505c8ef4
--- /dev/null
+++ b/mysql-test/std_data/ctype_upgrade/maria050313_ucs2_croatian_ci_def.MYD
Binary files differ
diff --git a/mysql-test/std_data/ctype_upgrade/maria050313_ucs2_croatian_ci_def.MYI b/mysql-test/std_data/ctype_upgrade/maria050313_ucs2_croatian_ci_def.MYI
new file mode 100644
index 00000000000..a8992fd55e0
--- /dev/null
+++ b/mysql-test/std_data/ctype_upgrade/maria050313_ucs2_croatian_ci_def.MYI
Binary files differ
diff --git a/mysql-test/std_data/ctype_upgrade/maria050313_ucs2_croatian_ci_def.frm b/mysql-test/std_data/ctype_upgrade/maria050313_ucs2_croatian_ci_def.frm
new file mode 100644
index 00000000000..936f485f80e
--- /dev/null
+++ b/mysql-test/std_data/ctype_upgrade/maria050313_ucs2_croatian_ci_def.frm
Binary files differ
diff --git a/mysql-test/std_data/ctype_upgrade/maria050313_utf8_croatian_ci.MYD b/mysql-test/std_data/ctype_upgrade/maria050313_utf8_croatian_ci.MYD
new file mode 100644
index 00000000000..1a6557647d1
--- /dev/null
+++ b/mysql-test/std_data/ctype_upgrade/maria050313_utf8_croatian_ci.MYD
Binary files differ
diff --git a/mysql-test/std_data/ctype_upgrade/maria050313_utf8_croatian_ci.MYI b/mysql-test/std_data/ctype_upgrade/maria050313_utf8_croatian_ci.MYI
new file mode 100644
index 00000000000..b55b64612dd
--- /dev/null
+++ b/mysql-test/std_data/ctype_upgrade/maria050313_utf8_croatian_ci.MYI
Binary files differ
diff --git a/mysql-test/std_data/ctype_upgrade/maria050313_utf8_croatian_ci.frm b/mysql-test/std_data/ctype_upgrade/maria050313_utf8_croatian_ci.frm
new file mode 100644
index 00000000000..22645fbec0d
--- /dev/null
+++ b/mysql-test/std_data/ctype_upgrade/maria050313_utf8_croatian_ci.frm
Binary files differ
diff --git a/mysql-test/std_data/ctype_upgrade/maria050533_xxx_croatian_ci.MYD b/mysql-test/std_data/ctype_upgrade/maria050533_xxx_croatian_ci.MYD
new file mode 100644
index 00000000000..4b9377d704c
--- /dev/null
+++ b/mysql-test/std_data/ctype_upgrade/maria050533_xxx_croatian_ci.MYD
Binary files differ
diff --git a/mysql-test/std_data/ctype_upgrade/maria050533_xxx_croatian_ci.MYI b/mysql-test/std_data/ctype_upgrade/maria050533_xxx_croatian_ci.MYI
new file mode 100644
index 00000000000..7d349ed7bb3
--- /dev/null
+++ b/mysql-test/std_data/ctype_upgrade/maria050533_xxx_croatian_ci.MYI
Binary files differ
diff --git a/mysql-test/std_data/ctype_upgrade/maria050533_xxx_croatian_ci.frm b/mysql-test/std_data/ctype_upgrade/maria050533_xxx_croatian_ci.frm
new file mode 100644
index 00000000000..759d57f3088
--- /dev/null
+++ b/mysql-test/std_data/ctype_upgrade/maria050533_xxx_croatian_ci.frm
Binary files differ
diff --git a/mysql-test/std_data/ctype_upgrade/maria100004_xxx_croatian_ci.MYD b/mysql-test/std_data/ctype_upgrade/maria100004_xxx_croatian_ci.MYD
new file mode 100644
index 00000000000..4b9377d704c
--- /dev/null
+++ b/mysql-test/std_data/ctype_upgrade/maria100004_xxx_croatian_ci.MYD
Binary files differ
diff --git a/mysql-test/std_data/ctype_upgrade/maria100004_xxx_croatian_ci.MYI b/mysql-test/std_data/ctype_upgrade/maria100004_xxx_croatian_ci.MYI
new file mode 100644
index 00000000000..15336f19ec9
--- /dev/null
+++ b/mysql-test/std_data/ctype_upgrade/maria100004_xxx_croatian_ci.MYI
Binary files differ
diff --git a/mysql-test/std_data/ctype_upgrade/maria100004_xxx_croatian_ci.frm b/mysql-test/std_data/ctype_upgrade/maria100004_xxx_croatian_ci.frm
new file mode 100644
index 00000000000..adb520df85c
--- /dev/null
+++ b/mysql-test/std_data/ctype_upgrade/maria100004_xxx_croatian_ci.frm
Binary files differ
diff --git a/mysql-test/std_data/ctype_upgrade/mysql050614_xxx_croatian_ci.MYD b/mysql-test/std_data/ctype_upgrade/mysql050614_xxx_croatian_ci.MYD
new file mode 100644
index 00000000000..4b9377d704c
--- /dev/null
+++ b/mysql-test/std_data/ctype_upgrade/mysql050614_xxx_croatian_ci.MYD
Binary files differ
diff --git a/mysql-test/std_data/ctype_upgrade/mysql050614_xxx_croatian_ci.MYI b/mysql-test/std_data/ctype_upgrade/mysql050614_xxx_croatian_ci.MYI
new file mode 100644
index 00000000000..de1ec112abb
--- /dev/null
+++ b/mysql-test/std_data/ctype_upgrade/mysql050614_xxx_croatian_ci.MYI
Binary files differ
diff --git a/mysql-test/std_data/ctype_upgrade/mysql050614_xxx_croatian_ci.frm b/mysql-test/std_data/ctype_upgrade/mysql050614_xxx_croatian_ci.frm
new file mode 100644
index 00000000000..d26ba4f7e85
--- /dev/null
+++ b/mysql-test/std_data/ctype_upgrade/mysql050614_xxx_croatian_ci.frm
Binary files differ
diff --git a/mysql-test/suite/engines/funcs/r/db_alter_collate_ascii.result b/mysql-test/suite/engines/funcs/r/db_alter_collate_ascii.result
index 231954975ad..5345ead7b20 100644
--- a/mysql-test/suite/engines/funcs/r/db_alter_collate_ascii.result
+++ b/mysql-test/suite/engines/funcs/r/db_alter_collate_ascii.result
@@ -78,8 +78,9 @@ utf8_esperanto_ci utf8 209 # #
utf8_hungarian_ci utf8 210 # #
utf8_sinhala_ci utf8 211 # #
utf8_german2_ci utf8 212 # #
-utf8_croatian_ci utf8 213 # #
+utf8_croatian_mysql561_ci utf8 213 # #
utf8_general_mysql500_ci utf8 223 # #
+utf8_croatian_ci utf8 576 # #
ucs2_general_ci ucs2 35 Yes # #
ucs2_bin ucs2 90 # #
ucs2_unicode_ci ucs2 128 # #
@@ -103,8 +104,9 @@ ucs2_esperanto_ci ucs2 145 # #
ucs2_hungarian_ci ucs2 146 # #
ucs2_sinhala_ci ucs2 147 # #
ucs2_german2_ci ucs2 148 # #
-ucs2_croatian_ci ucs2 149 # #
+ucs2_croatian_mysql561_ci ucs2 149 # #
ucs2_general_mysql500_ci ucs2 159 # #
+ucs2_croatian_ci ucs2 640 # #
cp866_general_ci cp866 36 Yes # #
cp866_bin cp866 68 # #
keybcs2_general_ci keybcs2 37 Yes # #
@@ -142,7 +144,8 @@ utf8mb4_esperanto_ci utf8mb4 241 # #
utf8mb4_hungarian_ci utf8mb4 242 # #
utf8mb4_sinhala_ci utf8mb4 243 # #
utf8mb4_german2_ci utf8mb4 244 # #
-utf8mb4_croatian_ci utf8mb4 245 # #
+utf8mb4_croatian_mysql561_ci utf8mb4 245 # #
+utf8mb4_croatian_ci utf8mb4 608 # #
cp1251_bulgarian_ci cp1251 14 # #
cp1251_ukrainian_ci cp1251 23 # #
cp1251_bin cp1251 50 # #
@@ -171,7 +174,8 @@ utf16_esperanto_ci utf16 118 # #
utf16_hungarian_ci utf16 119 # #
utf16_sinhala_ci utf16 120 # #
utf16_german2_ci utf16 121 # #
-utf16_croatian_ci utf16 215 # #
+utf16_croatian_mysql561_ci utf16 122 # #
+utf16_croatian_ci utf16 672 # #
utf16le_general_ci utf16le 56 Yes # #
utf16le_bin utf16le 62 # #
cp1256_general_ci cp1256 57 Yes # #
@@ -202,7 +206,8 @@ utf32_esperanto_ci utf32 177 # #
utf32_hungarian_ci utf32 178 # #
utf32_sinhala_ci utf32 179 # #
utf32_german2_ci utf32 180 # #
-utf32_croatian_ci utf32 214 # #
+utf32_croatian_mysql561_ci utf32 181 # #
+utf32_croatian_ci utf32 736 # #
binary binary 63 Yes # #
geostd8_general_ci geostd8 92 Yes # #
geostd8_bin geostd8 93 # #
diff --git a/mysql-test/suite/engines/funcs/r/db_alter_collate_utf8.result b/mysql-test/suite/engines/funcs/r/db_alter_collate_utf8.result
index 4ca2aa14117..51ae9004b43 100644
--- a/mysql-test/suite/engines/funcs/r/db_alter_collate_utf8.result
+++ b/mysql-test/suite/engines/funcs/r/db_alter_collate_utf8.result
@@ -78,8 +78,9 @@ utf8_esperanto_ci utf8 209 # #
utf8_hungarian_ci utf8 210 # #
utf8_sinhala_ci utf8 211 # #
utf8_german2_ci utf8 212 # #
-utf8_croatian_ci utf8 213 # #
+utf8_croatian_mysql561_ci utf8 213 # #
utf8_general_mysql500_ci utf8 223 # #
+utf8_croatian_ci utf8 576 # #
ucs2_general_ci ucs2 35 Yes # #
ucs2_bin ucs2 90 # #
ucs2_unicode_ci ucs2 128 # #
@@ -103,8 +104,9 @@ ucs2_esperanto_ci ucs2 145 # #
ucs2_hungarian_ci ucs2 146 # #
ucs2_sinhala_ci ucs2 147 # #
ucs2_german2_ci ucs2 148 # #
-ucs2_croatian_ci ucs2 149 # #
+ucs2_croatian_mysql561_ci ucs2 149 # #
ucs2_general_mysql500_ci ucs2 159 # #
+ucs2_croatian_ci ucs2 640 # #
cp866_general_ci cp866 36 Yes # #
cp866_bin cp866 68 # #
keybcs2_general_ci keybcs2 37 Yes # #
@@ -142,7 +144,8 @@ utf8mb4_esperanto_ci utf8mb4 241 # #
utf8mb4_hungarian_ci utf8mb4 242 # #
utf8mb4_sinhala_ci utf8mb4 243 # #
utf8mb4_german2_ci utf8mb4 244 # #
-utf8mb4_croatian_ci utf8mb4 245 # #
+utf8mb4_croatian_mysql561_ci utf8mb4 245 # #
+utf8mb4_croatian_ci utf8mb4 608 # #
cp1251_bulgarian_ci cp1251 14 # #
cp1251_ukrainian_ci cp1251 23 # #
cp1251_bin cp1251 50 # #
@@ -171,7 +174,8 @@ utf16_esperanto_ci utf16 118 # #
utf16_hungarian_ci utf16 119 # #
utf16_sinhala_ci utf16 120 # #
utf16_german2_ci utf16 121 # #
-utf16_croatian_ci utf16 215 # #
+utf16_croatian_mysql561_ci utf16 122 # #
+utf16_croatian_ci utf16 672 # #
utf16le_general_ci utf16le 56 Yes # #
utf16le_bin utf16le 62 # #
cp1256_general_ci cp1256 57 Yes # #
@@ -202,7 +206,8 @@ utf32_esperanto_ci utf32 177 # #
utf32_hungarian_ci utf32 178 # #
utf32_sinhala_ci utf32 179 # #
utf32_german2_ci utf32 180 # #
-utf32_croatian_ci utf32 214 # #
+utf32_croatian_mysql561_ci utf32 181 # #
+utf32_croatian_ci utf32 736 # #
binary binary 63 Yes # #
geostd8_general_ci geostd8 92 Yes # #
geostd8_bin geostd8 93 # #
diff --git a/mysql-test/suite/innodb/r/innodb_ctype_ldml.result b/mysql-test/suite/innodb/r/innodb_ctype_ldml.result
index 8da04d8828b..0008de141dc 100644
--- a/mysql-test/suite/innodb/r/innodb_ctype_ldml.result
+++ b/mysql-test/suite/innodb/r/innodb_ctype_ldml.result
@@ -388,7 +388,7 @@ select "foo" = "foo " collate latin1_test;
"foo" = "foo " collate latin1_test
1
The following tests check that two-byte collation IDs work
-select * from information_schema.collations where id>256 order by id;
+select * from information_schema.collations where id>256 and is_compiled<>'Yes' order by id;
COLLATION_NAME CHARACTER_SET_NAME ID IS_DEFAULT IS_COMPILED SORTLEN
utf8mb4_test_ci utf8mb4 326 8
utf16_test_ci utf16 327 8
diff --git a/mysql-test/suite/innodb/t/innodb_ctype_ldml.test b/mysql-test/suite/innodb/t/innodb_ctype_ldml.test
index ddc3bac36c7..011271e4e22 100644
--- a/mysql-test/suite/innodb/t/innodb_ctype_ldml.test
+++ b/mysql-test/suite/innodb/t/innodb_ctype_ldml.test
@@ -170,7 +170,7 @@ select "foo" = "foo " collate latin1_test;
# The file ../std-data/Index.xml has a number of collations with high IDs.
# Test that the "ID" column in I_S and SHOW queries can handle two bytes
-select * from information_schema.collations where id>256 order by id;
+select * from information_schema.collations where id>256 and is_compiled<>'Yes' order by id;
show collation like '%test%';
# Test that two-byte collation ID is correctly transfered to the client side.
diff --git a/mysql-test/suite/plugins/r/show_all_plugins.result b/mysql-test/suite/plugins/r/show_all_plugins.result
index fb31a49ab89..72ad829727c 100644
--- a/mysql-test/suite/plugins/r/show_all_plugins.result
+++ b/mysql-test/suite/plugins/r/show_all_plugins.result
@@ -4,8 +4,8 @@ Variable_name Value
Opened_plugin_libraries 0
select * from information_schema.all_plugins where plugin_library='ha_example.so';
PLUGIN_NAME PLUGIN_VERSION PLUGIN_STATUS PLUGIN_TYPE PLUGIN_TYPE_VERSION PLUGIN_LIBRARY PLUGIN_LIBRARY_VERSION PLUGIN_AUTHOR PLUGIN_DESCRIPTION PLUGIN_LICENSE LOAD_OPTION PLUGIN_MATURITY PLUGIN_AUTH_VERSION
-EXAMPLE 0.1 NOT INSTALLED STORAGE ENGINE 100004.0 ha_example.so 1.7 Brian Aker, MySQL AB Example storage engine GPL OFF Experimental 0.1
-UNUSABLE 3.14 NOT INSTALLED DAEMON 100004.0 ha_example.so 1.7 Sergei Golubchik Unusable Daemon GPL OFF Experimental 3.14.15.926
+EXAMPLE 0.1 NOT INSTALLED STORAGE ENGINE 100006.0 ha_example.so 1.7 Brian Aker, MySQL AB Example storage engine GPL OFF Experimental 0.1
+UNUSABLE 3.14 NOT INSTALLED DAEMON 100006.0 ha_example.so 1.7 Sergei Golubchik Unusable Daemon GPL OFF Experimental 3.14.15.926
show status like '%libraries%';
Variable_name Value
Opened_plugin_libraries 1
diff --git a/mysql-test/suite/roles/create_and_drop_role_invalid_user_table.result b/mysql-test/suite/roles/create_and_drop_role_invalid_user_table.result
index d0254fc2c44..7946f32663f 100644
--- a/mysql-test/suite/roles/create_and_drop_role_invalid_user_table.result
+++ b/mysql-test/suite/roles/create_and_drop_role_invalid_user_table.result
@@ -2,7 +2,7 @@ use mysql;
alter table user drop column is_role;
flush privileges;
create role test_role;
-ERROR HY000: Column count of mysql.user is wrong. Expected 44, found 43. Created with MariaDB 100004, now running 100004. Please use mysql_upgrade to fix this error.
+ERROR HY000: Column count of mysql.user is wrong. Expected 44, found 43. Created with MariaDB 100006, now running 100006. Please use mysql_upgrade to fix this error.
drop role test_role;
ERROR HY000: Operation DROP ROLE failed for 'test_role'
alter table user add column is_role enum('N', 'Y') default 'N' not null
diff --git a/mysql-test/t/ctype_ldml.test b/mysql-test/t/ctype_ldml.test
index 82dfd1c8591..11ef73e3360 100644
--- a/mysql-test/t/ctype_ldml.test
+++ b/mysql-test/t/ctype_ldml.test
@@ -152,7 +152,7 @@ select "foo" = "foo " collate latin1_test;
# The file ../std-data/Index.xml has a number of collations with high IDs.
# Test that the "ID" column in I_S and SHOW queries can handle two bytes
-select * from information_schema.collations where id>256 order by id;
+select * from information_schema.collations where id>256 and is_compiled<>'Yes' order by id;
show collation like '%test%';
# Test that two-byte collation ID is correctly transfered to the client side.
diff --git a/mysql-test/t/ctype_uca.test b/mysql-test/t/ctype_uca.test
index 16ec673de34..ca03f57952e 100644
--- a/mysql-test/t/ctype_uca.test
+++ b/mysql-test/t/ctype_uca.test
@@ -65,6 +65,7 @@ select group_concat(c1 order by c1) from t1 group by c1 collate utf8_spanish2_ci
select group_concat(c1 order by c1) from t1 group by c1 collate utf8_roman_ci;
select group_concat(c1 order by c1) from t1 group by c1 collate utf8_esperanto_ci;
select group_concat(c1 order by c1) from t1 group by c1 collate utf8_hungarian_ci;
+select group_concat(c1 order by c1) from t1 group by c1 collate utf8_croatian_mysql561_ci;
select group_concat(c1 order by c1) from t1 group by c1 collate utf8_croatian_ci;
select group_concat(c1 order by c1) from t1 group by c1 collate utf8_german2_ci;
@@ -87,6 +88,7 @@ SELECT GROUP_CONCAT(c1 ORDER BY c1) FROM t1 GROUP BY c1 COLLATE ucs2_spanish2_ci
SELECT GROUP_CONCAT(c1 ORDER BY c1) FROM t1 GROUP BY c1 COLLATE ucs2_roman_ci;
SELECT GROUP_CONCAT(c1 ORDER BY c1) FROM t1 GROUP BY c1 COLLATE ucs2_esperanto_ci;
SELECT GROUP_CONCAT(c1 ORDER BY c1) FROM t1 GROUP BY c1 COLLATE ucs2_hungarian_ci;
+SELECT GROUP_CONCAT(c1 ORDER BY c1) FROM t1 GROUP BY c1 COLLATE ucs2_croatian_mysql561_ci;
SELECT GROUP_CONCAT(c1 ORDER BY c1) FROM t1 GROUP BY c1 COLLATE ucs2_croatian_ci;
SELECT GROUP_CONCAT(c1 ORDER BY c1) FROM t1 GROUP BY c1 COLLATE ucs2_german2_ci;
@@ -485,7 +487,7 @@ SET collation_connection=ucs2_czech_ci;
--source include/ctype_czech.inc
--source include/ctype_like_ignorable.inc
-create table t1 (a int, c1 varchar(200) collate utf8_croatian_ci, key (c1));
+create table t1 (a int, c1 varchar(200) collate utf8_croatian_mysql561_ci, key (c1));
insert into t1 values (1,'=> DZ'),(2,'=> Dz'),(3,'=> dz'),(4,'=> dZ');
insert into t1 values (5,'=> DŽ'),(6,'=> Dž'),(7,'=> dž'),(8,'=> dŽ');
insert into t1 values (9,'=> dž'),(10,'=> DŽ');
diff --git a/mysql-test/t/ctype_upgrade.test b/mysql-test/t/ctype_upgrade.test
new file mode 100644
index 00000000000..cc59d1e4401
--- /dev/null
+++ b/mysql-test/t/ctype_upgrade.test
@@ -0,0 +1,198 @@
+-- source include/mysql_upgrade_preparation.inc
+-- source include/have_innodb.inc
+
+call mtr.add_suppression("Table rebuild required");
+let $MYSQLD_DATADIR= `select @@datadir`;
+
+--echo #
+--echo # Upgrade from Maria-5.3.13:
+--echo # Checking utf8_croatian_ci in a VARCHAR column
+--echo #
+
+--echo # Copying maria050313_utf8_croatian_ci.* to MYSQLD_DATADIR
+--copy_file std_data/ctype_upgrade/maria050313_utf8_croatian_ci.frm $MYSQLD_DATADIR/test/maria050313_utf8_croatian_ci.frm
+--copy_file std_data/ctype_upgrade/maria050313_utf8_croatian_ci.MYD $MYSQLD_DATADIR/test/maria050313_utf8_croatian_ci.MYD
+--copy_file std_data/ctype_upgrade/maria050313_utf8_croatian_ci.MYI $MYSQLD_DATADIR/test/maria050313_utf8_croatian_ci.MYI
+# Following test should show that table is corrupted
+CHECK TABLE maria050313_utf8_croatian_ci FOR UPGRADE;
+--error ER_TABLE_NEEDS_REBUILD
+SHOW CREATE TABLE maria050313_utf8_croatian_ci;
+# Check that REPAIR fixes the table
+REPAIR TABLE maria050313_utf8_croatian_ci;
+CHECK TABLE maria050313_utf8_croatian_ci FOR UPGRADE;
+SHOW CREATE TABLE maria050313_utf8_croatian_ci;
+SELECT count(*) FROM maria050313_utf8_croatian_ci;
+DROP TABLE maria050313_utf8_croatian_ci;
+
+--echo # Copying maria050313_utf8_croatian_ci.* to MYSQLD_DATADIR
+--copy_file std_data/ctype_upgrade/maria050313_utf8_croatian_ci.frm $MYSQLD_DATADIR/test/maria050313_utf8_croatian_ci.frm
+--copy_file std_data/ctype_upgrade/maria050313_utf8_croatian_ci.MYD $MYSQLD_DATADIR/test/maria050313_utf8_croatian_ci.MYD
+--copy_file std_data/ctype_upgrade/maria050313_utf8_croatian_ci.MYI $MYSQLD_DATADIR/test/maria050313_utf8_croatian_ci.MYI
+ALTER TABLE maria050313_utf8_croatian_ci FORCE;
+SHOW CREATE TABLE maria050313_utf8_croatian_ci;
+SELECT GROUP_CONCAT(a ORDER BY BINARY a) FROM maria050313_utf8_croatian_ci GROUP BY a;
+DROP TABLE maria050313_utf8_croatian_ci;
+
+
+--echo #
+--echo # Upgrade from Maria-5.3.13:
+--echo # Checking ucs2_croatian_ci in the table default collation
+--echo #
+
+--echo # Copying maria050313_ucs2_croatian_ci.* to MYSQLD_DATADIR
+--copy_file std_data/ctype_upgrade/maria050313_ucs2_croatian_ci_def.frm $MYSQLD_DATADIR/test/maria050313_ucs2_croatian_ci_def.frm
+--copy_file std_data/ctype_upgrade/maria050313_ucs2_croatian_ci_def.MYD $MYSQLD_DATADIR/test/maria050313_ucs2_croatian_ci_def.MYD
+--copy_file std_data/ctype_upgrade/maria050313_ucs2_croatian_ci_def.MYI $MYSQLD_DATADIR/test/maria050313_ucs2_croatian_ci_def.MYI
+CHECK TABLE maria050313_ucs2_croatian_ci_def FOR UPGRADE;
+--error ER_TABLE_NEEDS_REBUILD
+SELECT count(*) FROM maria050313_ucs2_croatian_ci_def;
+REPAIR TABLE maria050313_ucs2_croatian_ci_def;
+SHOW CREATE TABLE maria050313_ucs2_croatian_ci_def;
+DROP TABLE maria050313_ucs2_croatian_ci_def;
+
+--echo # Copying maria050313_ucs2_croatian_ci.* to MYSQLD_DATADIR
+--copy_file std_data/ctype_upgrade/maria050313_ucs2_croatian_ci_def.frm $MYSQLD_DATADIR/test/maria050313_ucs2_croatian_ci_def.frm
+--copy_file std_data/ctype_upgrade/maria050313_ucs2_croatian_ci_def.MYD $MYSQLD_DATADIR/test/maria050313_ucs2_croatian_ci_def.MYD
+--copy_file std_data/ctype_upgrade/maria050313_ucs2_croatian_ci_def.MYI $MYSQLD_DATADIR/test/maria050313_ucs2_croatian_ci_def.MYI
+CHECK TABLE maria050313_ucs2_croatian_ci_def;
+REPAIR TABLE maria050313_ucs2_croatian_ci_def;
+CHECK TABLE maria050313_ucs2_croatian_ci_def;
+SHOW CREATE TABLE maria050313_ucs2_croatian_ci_def;
+SELECT * FROM maria050313_ucs2_croatian_ci_def ORDER BY a;
+DROP TABLE maria050313_ucs2_croatian_ci_def;
+
+
+
+--echo #
+--echo # Upgrade from Maria-5.5.33
+--echo # Checking utf8_croatian_ci, utf8mb4_croatian_ci, ucs2_croatian_ci,
+--echo # utf16_croatian_ci, utf32_croatian_ci
+--echo #
+
+--echo # Copying maria050533_xxx_croatian_ci.* to MYSQLD_DATADIR
+--copy_file std_data/ctype_upgrade/maria050533_xxx_croatian_ci.frm $MYSQLD_DATADIR/test/maria050533_xxx_croatian_ci.frm
+--copy_file std_data/ctype_upgrade/maria050533_xxx_croatian_ci.MYD $MYSQLD_DATADIR/test/maria050533_xxx_croatian_ci.MYD
+--copy_file std_data/ctype_upgrade/maria050533_xxx_croatian_ci.MYI $MYSQLD_DATADIR/test/maria050533_xxx_croatian_ci.MYI
+CHECK TABLE maria050533_xxx_croatian_ci FOR UPGRADE;
+REPAIR TABLE maria050533_xxx_croatian_ci;
+SHOW CREATE TABLE maria050533_xxx_croatian_ci;
+SELECT count(*) FROM maria050533_xxx_croatian_ci;
+DROP TABLE maria050533_xxx_croatian_ci;
+
+--echo # Copying maria050533_xxx_croatian_ci.* to MYSQLD_DATADIR
+--copy_file std_data/ctype_upgrade/maria050533_xxx_croatian_ci.frm $MYSQLD_DATADIR/test/maria050533_xxx_croatian_ci.frm
+--copy_file std_data/ctype_upgrade/maria050533_xxx_croatian_ci.MYD $MYSQLD_DATADIR/test/maria050533_xxx_croatian_ci.MYD
+--copy_file std_data/ctype_upgrade/maria050533_xxx_croatian_ci.MYI $MYSQLD_DATADIR/test/maria050533_xxx_croatian_ci.MYI
+ALTER TABLE maria050533_xxx_croatian_ci FORCE;
+SHOW CREATE TABLE maria050533_xxx_croatian_ci;
+SELECT GROUP_CONCAT(a ORDER BY BINARY a) FROM maria050533_xxx_croatian_ci GROUP BY a;
+SELECT GROUP_CONCAT(b ORDER BY BINARY b) FROM maria050533_xxx_croatian_ci GROUP BY b;
+SELECT GROUP_CONCAT(c ORDER BY BINARY c) FROM maria050533_xxx_croatian_ci GROUP BY c;
+SELECT GROUP_CONCAT(d ORDER BY BINARY d) FROM maria050533_xxx_croatian_ci GROUP BY d;
+SELECT GROUP_CONCAT(e ORDER BY BINARY e) FROM maria050533_xxx_croatian_ci GROUP BY e;
+DROP TABLE maria050533_xxx_croatian_ci;
+
+
+--echo #
+--echo # Upgrade from Maria-10.0.4
+--echo # Checking utf8_croatian_ci, utf8mb4_croatian_ci, ucs2_croatian_ci,
+--echo # utf16_croatian_ci, utf32_croatian_ci
+--echo #
+
+--echo # Copying maria100004_xxx_croatian_ci.* to MYSQLD_DATADIR
+--copy_file std_data/ctype_upgrade/maria100004_xxx_croatian_ci.frm $MYSQLD_DATADIR/test/maria100004_xxx_croatian_ci.frm
+--copy_file std_data/ctype_upgrade/maria100004_xxx_croatian_ci.MYD $MYSQLD_DATADIR/test/maria100004_xxx_croatian_ci.MYD
+--copy_file std_data/ctype_upgrade/maria100004_xxx_croatian_ci.MYI $MYSQLD_DATADIR/test/maria100004_xxx_croatian_ci.MYI
+CHECK TABLE maria100004_xxx_croatian_ci FOR UPGRADE;
+--error ER_TABLE_NEEDS_REBUILD
+SELECT count(*) FROM maria100004_xxx_croatian_ci;
+REPAIR TABLE maria100004_xxx_croatian_ci;
+SHOW CREATE TABLE maria100004_xxx_croatian_ci;
+DROP TABLE maria100004_xxx_croatian_ci;
+
+--echo # Copying maria100004_xxx_croatian_ci.* to MYSQLD_DATADIR
+--copy_file std_data/ctype_upgrade/maria100004_xxx_croatian_ci.frm $MYSQLD_DATADIR/test/maria100004_xxx_croatian_ci.frm
+--copy_file std_data/ctype_upgrade/maria100004_xxx_croatian_ci.MYD $MYSQLD_DATADIR/test/maria100004_xxx_croatian_ci.MYD
+--copy_file std_data/ctype_upgrade/maria100004_xxx_croatian_ci.MYI $MYSQLD_DATADIR/test/maria100004_xxx_croatian_ci.MYI
+ALTER TABLE maria100004_xxx_croatian_ci FORCE;
+SHOW CREATE TABLE maria100004_xxx_croatian_ci;
+SELECT GROUP_CONCAT(a ORDER BY BINARY a) FROM maria100004_xxx_croatian_ci GROUP BY a;
+SELECT GROUP_CONCAT(b ORDER BY BINARY b) FROM maria100004_xxx_croatian_ci GROUP BY b;
+SELECT GROUP_CONCAT(c ORDER BY BINARY c) FROM maria100004_xxx_croatian_ci GROUP BY c;
+SELECT GROUP_CONCAT(d ORDER BY BINARY d) FROM maria100004_xxx_croatian_ci GROUP BY d;
+SELECT GROUP_CONCAT(e ORDER BY BINARY e) FROM maria100004_xxx_croatian_ci GROUP BY e;
+DROP TABLE maria100004_xxx_croatian_ci;
+
+
+
+--echo #
+--echo # Upgrade from MySQL-5.6.14
+--echo # Checking utf8_croatian_ci, utf8mb4_croatian_ci, ucs2_croatian_ci,
+--echo # utf16_croatian_ci, utf32_croatian_ci
+--echo #
+
+--echo # Copying mysql050614_xxx_croatian_ci.* to MYSQLD_DATADIR
+--copy_file std_data/ctype_upgrade/mysql050614_xxx_croatian_ci.frm $MYSQLD_DATADIR/test/mysql050614_xxx_croatian_ci.frm
+--copy_file std_data/ctype_upgrade/mysql050614_xxx_croatian_ci.MYD $MYSQLD_DATADIR/test/mysql050614_xxx_croatian_ci.MYD
+--copy_file std_data/ctype_upgrade/mysql050614_xxx_croatian_ci.MYI $MYSQLD_DATADIR/test/mysql050614_xxx_croatian_ci.MYI
+CHECK TABLE mysql050614_xxx_croatian_ci FOR UPGRADE;
+SHOW CREATE TABLE mysql050614_xxx_croatian_ci;
+SELECT GROUP_CONCAT(a ORDER BY BINARY a) FROM mysql050614_xxx_croatian_ci GROUP BY a;
+SELECT GROUP_CONCAT(b ORDER BY BINARY b) FROM mysql050614_xxx_croatian_ci GROUP BY b;
+SELECT GROUP_CONCAT(c ORDER BY BINARY c) FROM mysql050614_xxx_croatian_ci GROUP BY c;
+SELECT GROUP_CONCAT(d ORDER BY BINARY d) FROM mysql050614_xxx_croatian_ci GROUP BY d;
+SELECT GROUP_CONCAT(e ORDER BY BINARY e) FROM mysql050614_xxx_croatian_ci GROUP BY e;
+DROP TABLE mysql050614_xxx_croatian_ci;
+
+
+--echo #
+--echo # Checking mysql_upgrade
+--echo #
+--copy_file std_data/ctype_upgrade/maria050313_utf8_croatian_ci.frm $MYSQLD_DATADIR/test/maria050313_utf8_croatian_ci.frm
+--copy_file std_data/ctype_upgrade/maria050313_utf8_croatian_ci.MYD $MYSQLD_DATADIR/test/maria050313_utf8_croatian_ci.MYD
+--copy_file std_data/ctype_upgrade/maria050313_utf8_croatian_ci.MYI $MYSQLD_DATADIR/test/maria050313_utf8_croatian_ci.MYI
+
+--copy_file std_data/ctype_upgrade/maria050313_ucs2_croatian_ci_def.frm $MYSQLD_DATADIR/test/maria050313_ucs2_croatian_ci_def.frm
+--copy_file std_data/ctype_upgrade/maria050313_ucs2_croatian_ci_def.MYD $MYSQLD_DATADIR/test/maria050313_ucs2_croatian_ci_def.MYD
+--copy_file std_data/ctype_upgrade/maria050313_ucs2_croatian_ci_def.MYI $MYSQLD_DATADIR/test/maria050313_ucs2_croatian_ci_def.MYI
+
+--copy_file std_data/ctype_upgrade/maria050533_xxx_croatian_ci.frm $MYSQLD_DATADIR/test/maria050533_xxx_croatian_ci.frm
+--copy_file std_data/ctype_upgrade/maria050533_xxx_croatian_ci.MYD $MYSQLD_DATADIR/test/maria050533_xxx_croatian_ci.MYD
+--copy_file std_data/ctype_upgrade/maria050533_xxx_croatian_ci.MYI $MYSQLD_DATADIR/test/maria050533_xxx_croatian_ci.MYI
+
+--copy_file std_data/ctype_upgrade/maria100004_xxx_croatian_ci.frm $MYSQLD_DATADIR/test/maria100004_xxx_croatian_ci.frm
+--copy_file std_data/ctype_upgrade/maria100004_xxx_croatian_ci.MYD $MYSQLD_DATADIR/test/maria100004_xxx_croatian_ci.MYD
+--copy_file std_data/ctype_upgrade/maria100004_xxx_croatian_ci.MYI $MYSQLD_DATADIR/test/maria100004_xxx_croatian_ci.MYI
+
+--copy_file std_data/ctype_upgrade/mysql050614_xxx_croatian_ci.frm $MYSQLD_DATADIR/test/mysql050614_xxx_croatian_ci.frm
+--copy_file std_data/ctype_upgrade/mysql050614_xxx_croatian_ci.MYD $MYSQLD_DATADIR/test/mysql050614_xxx_croatian_ci.MYD
+--copy_file std_data/ctype_upgrade/mysql050614_xxx_croatian_ci.MYI $MYSQLD_DATADIR/test/mysql050614_xxx_croatian_ci.MYI
+
+--echo # Running mysql_upgrade
+--exec $MYSQL_UPGRADE 2>&1
+
+
+--echo # Running mysql_upgrade for the second time
+--echo # This should report OK for all tables
+--exec $MYSQL_UPGRADE --force 2>&1
+
+SHOW CREATE TABLE maria050313_ucs2_croatian_ci_def;
+SELECT * FROM maria050313_ucs2_croatian_ci_def ORDER BY a;
+
+SHOW CREATE TABLE maria050313_utf8_croatian_ci;
+SELECT GROUP_CONCAT(a ORDER BY BINARY a) FROM maria050313_utf8_croatian_ci GROUP BY a;
+
+SHOW CREATE TABLE maria050533_xxx_croatian_ci;
+SELECT GROUP_CONCAT(a ORDER BY BINARY a) FROM maria050533_xxx_croatian_ci GROUP BY a;
+
+SHOW CREATE TABLE maria100004_xxx_croatian_ci;
+SELECT GROUP_CONCAT(a ORDER BY BINARY a) FROM maria100004_xxx_croatian_ci GROUP BY a;
+
+SHOW CREATE TABLE mysql050614_xxx_croatian_ci;
+SELECT GROUP_CONCAT(a ORDER BY BINARY a) FROM mysql050614_xxx_croatian_ci GROUP BY a;
+
+DROP TABLE maria050313_ucs2_croatian_ci_def;
+DROP TABLE maria050313_utf8_croatian_ci;
+DROP TABLE maria050533_xxx_croatian_ci;
+DROP TABLE maria100004_xxx_croatian_ci;
+DROP TABLE mysql050614_xxx_croatian_ci;
diff --git a/mysql-test/t/ctype_utf16_uca.test b/mysql-test/t/ctype_utf16_uca.test
index 2070d12cd1e..ee09f70fa03 100644
--- a/mysql-test/t/ctype_utf16_uca.test
+++ b/mysql-test/t/ctype_utf16_uca.test
@@ -52,6 +52,7 @@ select group_concat(c1 order by binary c1 separator '') from t1 group by c1 coll
select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf16_roman_ci;
select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf16_esperanto_ci;
select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf16_hungarian_ci;
+select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf16_croatian_mysql561_ci;
select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf16_croatian_ci;
select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf16_german2_ci;
diff --git a/mysql-test/t/ctype_utf32_uca.test b/mysql-test/t/ctype_utf32_uca.test
index f3fef1cf54c..e08e747445e 100644
--- a/mysql-test/t/ctype_utf32_uca.test
+++ b/mysql-test/t/ctype_utf32_uca.test
@@ -53,6 +53,7 @@ select group_concat(c1 order by binary c1 separator '') from t1 group by c1 coll
select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf32_roman_ci;
select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf32_esperanto_ci;
select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf32_hungarian_ci;
+select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf32_croatian_mysql561_ci;
select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf32_croatian_ci;
select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf32_german2_ci;
diff --git a/mysql-test/t/ctype_utf8mb4_uca.test b/mysql-test/t/ctype_utf8mb4_uca.test
index a84e06883ab..0b01dfc33a5 100644
--- a/mysql-test/t/ctype_utf8mb4_uca.test
+++ b/mysql-test/t/ctype_utf8mb4_uca.test
@@ -32,6 +32,7 @@ SELECT GROUP_CONCAT(c1 ORDER BY c1 SEPARATOR '') FROM t1 GROUP BY c1 COLLATE utf
SELECT GROUP_CONCAT(c1 ORDER BY c1 SEPARATOR '') FROM t1 GROUP BY c1 COLLATE utf8mb4_roman_ci;
SELECT GROUP_CONCAT(c1 ORDER BY c1 SEPARATOR '') FROM t1 GROUP BY c1 COLLATE utf8mb4_esperanto_ci;
SELECT GROUP_CONCAT(c1 ORDER BY c1 SEPARATOR '') FROM t1 GROUP BY c1 COLLATE utf8mb4_hungarian_ci;
+SELECT GROUP_CONCAT(c1 ORDER BY c1 SEPARATOR '') FROM t1 GROUP BY c1 COLLATE utf8mb4_croatian_mysql561_ci;
SELECT GROUP_CONCAT(c1 ORDER BY c1 SEPARATOR '') FROM t1 GROUP BY c1 COLLATE utf8mb4_croatian_ci;
SELECT GROUP_CONCAT(c1 ORDER BY c1 SEPARATOR '') FROM t1 GROUP BY c1 COLLATE utf8mb4_german2_ci;
diff --git a/mysys/charset-def.c b/mysys/charset-def.c
index de4d6387a52..938d228b020 100644
--- a/mysys/charset-def.c
+++ b/mysys/charset-def.c
@@ -43,6 +43,7 @@ extern struct charset_info_st my_charset_ucs2_roman_uca_ci;
extern struct charset_info_st my_charset_ucs2_persian_uca_ci;
extern struct charset_info_st my_charset_ucs2_esperanto_uca_ci;
extern struct charset_info_st my_charset_ucs2_hungarian_uca_ci;
+extern struct charset_info_st my_charset_ucs2_croatian_mysql561_uca_ci;
extern struct charset_info_st my_charset_ucs2_sinhala_uca_ci;
extern struct charset_info_st my_charset_ucs2_croatian_uca_ci;
#endif
@@ -68,6 +69,7 @@ extern struct charset_info_st my_charset_utf32_roman_uca_ci;
extern struct charset_info_st my_charset_utf32_persian_uca_ci;
extern struct charset_info_st my_charset_utf32_esperanto_uca_ci;
extern struct charset_info_st my_charset_utf32_hungarian_uca_ci;
+extern struct charset_info_st my_charset_utf32_croatian_mysql561_uca_ci;
extern struct charset_info_st my_charset_utf32_sinhala_uca_ci;
extern struct charset_info_st my_charset_utf32_croatian_uca_ci;
#endif /* HAVE_CHARSET_utf32 */
@@ -93,6 +95,7 @@ extern struct charset_info_st my_charset_utf16_roman_uca_ci;
extern struct charset_info_st my_charset_utf16_persian_uca_ci;
extern struct charset_info_st my_charset_utf16_esperanto_uca_ci;
extern struct charset_info_st my_charset_utf16_hungarian_uca_ci;
+extern struct charset_info_st my_charset_utf16_croatian_mysql561_uca_ci;
extern struct charset_info_st my_charset_utf16_sinhala_uca_ci;
extern struct charset_info_st my_charset_utf16_croatian_uca_ci;
#endif /* HAVE_CHARSET_utf16 */
@@ -118,6 +121,7 @@ extern struct charset_info_st my_charset_utf8_roman_uca_ci;
extern struct charset_info_st my_charset_utf8_persian_uca_ci;
extern struct charset_info_st my_charset_utf8_esperanto_uca_ci;
extern struct charset_info_st my_charset_utf8_hungarian_uca_ci;
+extern struct charset_info_st my_charset_utf8_croatian_mysql561_uca_ci;
extern struct charset_info_st my_charset_utf8_sinhala_uca_ci;
extern struct charset_info_st my_charset_utf8_croatian_uca_ci;
#ifdef HAVE_UTF8_GENERAL_CS
@@ -145,6 +149,7 @@ extern struct charset_info_st my_charset_utf8mb4_roman_uca_ci;
extern struct charset_info_st my_charset_utf8mb4_persian_uca_ci;
extern struct charset_info_st my_charset_utf8mb4_esperanto_uca_ci;
extern struct charset_info_st my_charset_utf8mb4_hungarian_uca_ci;
+extern struct charset_info_st my_charset_utf8mb4_croatian_mysql561_uca_ci;
extern struct charset_info_st my_charset_utf8mb4_sinhala_uca_ci;
extern struct charset_info_st my_charset_utf8mb4_croatian_uca_ci;
#endif /* HAVE_CHARSET_utf8mb4 */
@@ -235,6 +240,7 @@ my_bool init_compiled_charsets(myf flags __attribute__((unused)))
add_compiled_collation(&my_charset_ucs2_persian_uca_ci);
add_compiled_collation(&my_charset_ucs2_esperanto_uca_ci);
add_compiled_collation(&my_charset_ucs2_hungarian_uca_ci);
+ add_compiled_collation(&my_charset_ucs2_croatian_mysql561_uca_ci);
add_compiled_collation(&my_charset_ucs2_sinhala_uca_ci);
add_compiled_collation(&my_charset_ucs2_croatian_uca_ci);
#endif
@@ -273,6 +279,7 @@ my_bool init_compiled_charsets(myf flags __attribute__((unused)))
add_compiled_collation(&my_charset_utf8_persian_uca_ci);
add_compiled_collation(&my_charset_utf8_esperanto_uca_ci);
add_compiled_collation(&my_charset_utf8_hungarian_uca_ci);
+ add_compiled_collation(&my_charset_utf8_croatian_mysql561_uca_ci);
add_compiled_collation(&my_charset_utf8_sinhala_uca_ci);
add_compiled_collation(&my_charset_utf8_croatian_uca_ci);
#endif
@@ -303,6 +310,7 @@ my_bool init_compiled_charsets(myf flags __attribute__((unused)))
add_compiled_collation(&my_charset_utf8mb4_persian_uca_ci);
add_compiled_collation(&my_charset_utf8mb4_esperanto_uca_ci);
add_compiled_collation(&my_charset_utf8mb4_hungarian_uca_ci);
+ add_compiled_collation(&my_charset_utf8mb4_croatian_mysql561_uca_ci);
add_compiled_collation(&my_charset_utf8mb4_sinhala_uca_ci);
add_compiled_collation(&my_charset_utf8mb4_croatian_uca_ci);
#endif /* HAVE_UCA_COLLATIONS */
@@ -335,6 +343,7 @@ my_bool init_compiled_charsets(myf flags __attribute__((unused)))
add_compiled_collation(&my_charset_utf16_persian_uca_ci);
add_compiled_collation(&my_charset_utf16_esperanto_uca_ci);
add_compiled_collation(&my_charset_utf16_hungarian_uca_ci);
+ add_compiled_collation(&my_charset_utf16_croatian_mysql561_uca_ci);
add_compiled_collation(&my_charset_utf16_sinhala_uca_ci);
add_compiled_collation(&my_charset_utf16_croatian_uca_ci);
#endif /* HAVE_UCA_COLLATIONS */
@@ -365,6 +374,7 @@ my_bool init_compiled_charsets(myf flags __attribute__((unused)))
add_compiled_collation(&my_charset_utf32_persian_uca_ci);
add_compiled_collation(&my_charset_utf32_esperanto_uca_ci);
add_compiled_collation(&my_charset_utf32_hungarian_uca_ci);
+ add_compiled_collation(&my_charset_utf32_croatian_mysql561_uca_ci);
add_compiled_collation(&my_charset_utf32_sinhala_uca_ci);
add_compiled_collation(&my_charset_utf32_croatian_uca_ci);
#endif /* HAVE_UCA_COLLATIONS */
diff --git a/mysys/charset.c b/mysys/charset.c
index f9d1286088d..b7e535136a5 100644
--- a/mysys/charset.c
+++ b/mysys/charset.c
@@ -648,19 +648,19 @@ get_internal_charset(MY_CHARSET_LOADER *loader, uint cs_number, myf flags)
CHARSET_INFO *get_charset(uint cs_number, myf flags)
{
- CHARSET_INFO *cs;
- MY_CHARSET_LOADER loader;
+ CHARSET_INFO *cs= NULL;
if (cs_number == default_charset_info->number)
return default_charset_info;
my_pthread_once(&charsets_initialized, init_available_charsets);
-
- if (cs_number >= array_elements(all_charsets))
- return NULL;
- my_charset_loader_init_mysys(&loader);
- cs= get_internal_charset(&loader, cs_number, flags);
+ if (cs_number < array_elements(all_charsets))
+ {
+ MY_CHARSET_LOADER loader;
+ my_charset_loader_init_mysys(&loader);
+ cs= get_internal_charset(&loader, cs_number, flags);
+ }
if (!cs && (flags & MY_WME))
{
diff --git a/sql/handler.cc b/sql/handler.cc
index dece51839c7..28422794969 100644
--- a/sql/handler.cc
+++ b/sql/handler.cc
@@ -3534,6 +3534,38 @@ bool handler::get_error_message(int error, String* buf)
return FALSE;
}
+/**
+ Check if a collation has changed number
+
+ @param mysql_version
+ @param current collation number
+
+ @retval new collation number (same as current collation number of no change)
+*/
+
+uint upgrade_collation(ulong mysql_version, uint cs_number)
+{
+ if (mysql_version >= 50300 && mysql_version <= 50399)
+ {
+ switch (cs_number) {
+ case 149: return MY_PAGE2_COLLATION_ID_UCS2; // ucs2_crotian_ci
+ case 213: return MY_PAGE2_COLLATION_ID_UTF8; // utf8_crotian_ci
+ }
+ }
+ if ((mysql_version >= 50500 && mysql_version <= 50599) ||
+ (mysql_version >= 100000 && mysql_version <= 100005))
+ {
+ switch (cs_number) {
+ case 149: return MY_PAGE2_COLLATION_ID_UCS2; // ucs2_crotian_ci
+ case 213: return MY_PAGE2_COLLATION_ID_UTF8; // utf8_crotian_ci
+ case 214: return MY_PAGE2_COLLATION_ID_UTF32; // utf32_croatian_ci
+ case 215: return MY_PAGE2_COLLATION_ID_UTF16; // utf16_croatian_ci
+ case 245: return MY_PAGE2_COLLATION_ID_UTF8MB4;// utf8mb4_croatian_ci
+ }
+ }
+ return cs_number;
+}
+
/**
Check for incompatible collation changes.
@@ -3575,9 +3607,29 @@ int handler::check_collation_compatibility()
(cs_number == 33 || /* utf8_general_ci - bug #27877 */
cs_number == 35))) /* ucs2_general_ci - bug #27877 */
return HA_ADMIN_NEEDS_UPGRADE;
- }
- }
- }
+ }
+ }
+ }
+
+ if (mysql_version < 100006)
+ {
+ /*
+ Check if we are using collations from that has changed numbering.
+ This happend at least between MariaDB 5.5 and MariaDB 10.0 as MySQL
+ added conflicting numbers.
+ */
+
+ if (table->s->table_charset->number !=
+ upgrade_collation(mysql_version, table->s->table_charset->number))
+ return HA_ADMIN_NEEDS_ALTER;
+
+ for (Field **field= table->field; (*field); field++)
+ {
+ if ((*field)->charset()->number !=
+ upgrade_collation(mysql_version, (*field)->charset()->number))
+ return HA_ADMIN_NEEDS_ALTER;
+ }
+ }
return 0;
}
@@ -3588,6 +3640,9 @@ int handler::ha_check_for_upgrade(HA_CHECK_OPT *check_opt)
KEY *keyinfo, *keyend;
KEY_PART_INFO *keypart, *keypartend;
+ if (table->s->incompatible_version)
+ return HA_ADMIN_NEEDS_ALTER;
+
if (!table->s->mysql_version)
{
/* check for blob-in-key error */
diff --git a/sql/handler.h b/sql/handler.h
index 360120615f3..0c1ae1d01c2 100644
--- a/sql/handler.h
+++ b/sql/handler.h
@@ -4055,4 +4055,5 @@ inline const char *table_case_name(HA_CREATE_INFO *info, const char *name)
void print_keydup_error(TABLE *table, KEY *key, const char *msg, myf errflag);
void print_keydup_error(TABLE *table, KEY *key, myf errflag);
+uint upgrade_collation(ulong mysql_version, uint cs_number);
#endif
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index f78f1b56489..df33c3535b5 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -6740,7 +6740,7 @@ mysql_prepare_alter_table(THD *thd, TABLE *table,
List<Key_part_spec> key_parts;
uint db_create_options= (table->s->db_create_options
& ~(HA_OPTION_PACK_RECORD));
- uint used_fields= create_info->used_fields;
+ uint used_fields;
KEY *key_info=table->key_info;
bool rc= TRUE;
bool modified_primary_key= FALSE;
@@ -6748,6 +6748,14 @@ mysql_prepare_alter_table(THD *thd, TABLE *table,
Field **f_ptr,*field;
DBUG_ENTER("mysql_prepare_alter_table");
+ /*
+ Merge incompatible changes flag in case of upgrade of a table from an
+ old MariaDB or MySQL version. This ensures that we don't try to do an
+ online alter table if field packing or character set changes are required.
+ */
+ create_info->used_fields|= table->s->incompatible_version;
+ used_fields= create_info->used_fields;
+
create_info->varchar= FALSE;
/* Let new create options override the old ones */
if (!(used_fields & HA_CREATE_USED_MIN_ROWS))
@@ -7732,8 +7740,11 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name,
DEBUG_SYNC(thd, "alter_table_before_open_tables");
uint tables_opened;
+
+ thd->open_options|= HA_OPEN_FOR_ALTER;
bool error= open_tables(thd, &table_list, &tables_opened, 0,
&alter_prelocking_strategy);
+ thd->open_options&= ~HA_OPEN_FOR_ALTER;
DEBUG_SYNC(thd, "alter_opened_table");
diff --git a/sql/table.cc b/sql/table.cc
index eed1de9bb35..c8c43ea3de1 100644
--- a/sql/table.cc
+++ b/sql/table.cc
@@ -1009,12 +1009,18 @@ int TABLE_SHARE::init_from_binary_frm_image(THD *thd, bool write,
share->null_field_first= 0;
if (!frm_image[32]) // New frm file in 3.23
{
+ uint cs_org= (((uint) frm_image[41]) << 8) + (uint) frm_image[38];
+ uint cs_new= upgrade_collation(share->mysql_version, cs_org);
+ if (cs_org != cs_new)
+ share->incompatible_version|= HA_CREATE_USED_CHARSET;
+
share->avg_row_length= uint4korr(frm_image+34);
share->transactional= (ha_choice) (frm_image[39] & 3);
share->page_checksum= (ha_choice) ((frm_image[39] >> 2) & 3);
share->row_type= (enum row_type) frm_image[40];
- share->table_charset= get_charset((((uint) frm_image[41]) << 8) +
- (uint) frm_image[38], MYF(0));
+
+ if (cs_new && !(share->table_charset= get_charset(cs_new, MYF(MY_WME))))
+ goto err;
share->null_field_first= 1;
share->stats_sample_pages= uint2korr(frm_image+42);
share->stats_auto_recalc= (enum_stats_auto_recalc)(frm_image[44]);
@@ -1032,6 +1038,7 @@ int TABLE_SHARE::init_from_binary_frm_image(THD *thd, bool write,
}
share->table_charset= default_charset_info;
}
+
share->db_record_offset= 1;
share->max_rows= uint4korr(frm_image+18);
share->min_rows= uint4korr(frm_image+22);
@@ -1418,16 +1425,19 @@ int TABLE_SHARE::init_from_binary_frm_image(THD *thd, bool write,
}
else
{
- uint csid= strpos[14] + (((uint) strpos[11]) << 8);
- if (!csid)
+ uint cs_org= strpos[14] + (((uint) strpos[11]) << 8);
+ uint cs_new= upgrade_collation(share->mysql_version, cs_org);
+ if (cs_org != cs_new)
+ share->incompatible_version|= HA_CREATE_USED_CHARSET;
+ if (!cs_new)
charset= &my_charset_bin;
- else if (!(charset= get_charset(csid, MYF(0))))
+ else if (!(charset= get_charset(cs_new, MYF(0))))
{
- const char *csname= get_charset_name((uint) csid);
+ const char *csname= get_charset_name((uint) cs_new);
char tmp[10];
if (!csname || csname[0] =='?')
{
- my_snprintf(tmp, sizeof(tmp), "#%d", csid);
+ my_snprintf(tmp, sizeof(tmp), "#%d", cs_new);
csname= tmp;
}
my_printf_error(ER_UNKNOWN_COLLATION,
@@ -2489,6 +2499,13 @@ enum open_frm_error open_table_from_share(THD *thd, TABLE_SHARE *share,
outparam->db_stat= db_stat;
outparam->write_row_record= NULL;
+ if (share->incompatible_version &&
+ !(ha_open_flags & (HA_OPEN_FOR_ALTER | HA_OPEN_FOR_REPAIR)))
+ {
+ /* one needs to run mysql_upgrade on the table */
+ error= OPEN_FRM_NEEDS_REBUILD;
+ goto err;
+ }
init_sql_alloc(&outparam->mem_root, TABLE_ALLOC_BLOCK_SIZE, 0, MYF(0));
if (outparam->alias.copy(alias, strlen(alias), table_alias_charset))
@@ -3012,6 +3029,11 @@ void open_table_error(TABLE_SHARE *share, enum open_frm_error error,
strxmov(buff, share->normalized_path.str, reg_ext, NullS);
my_error(ER_ERROR_ON_READ, errortype, buff, db_errno);
break;
+ case OPEN_FRM_NEEDS_REBUILD:
+ strxnmov(buff, sizeof(buff)-1,
+ share->db.str, ".", share->table_name.str, NullS);
+ my_error(ER_TABLE_NEEDS_REBUILD, errortype, buff);
+ break;
}
DBUG_VOID_RETURN;
} /* open_table_error */
diff --git a/sql/table.h b/sql/table.h
index ce7032b4c60..301b98a5ec2 100644
--- a/sql/table.h
+++ b/sql/table.h
@@ -560,7 +560,8 @@ enum open_frm_error {
OPEN_FRM_DISCOVER,
OPEN_FRM_ERROR_ALREADY_ISSUED,
OPEN_FRM_NOT_A_VIEW,
- OPEN_FRM_NOT_A_TABLE
+ OPEN_FRM_NOT_A_TABLE,
+ OPEN_FRM_NEEDS_REBUILD
};
/**
@@ -734,6 +735,13 @@ struct TABLE_SHARE
ulong table_map_id; /* for row-based replication */
/*
+ Things that are incompatible between the stored version and the
+ current version. This is a set of HA_CREATE... bits that can be used
+ to modify create_info->used_fields for ALTER TABLE.
+ */
+ ulong incompatible_version;
+
+ /*
Cache for row-based replication table share checks that does not
need to be repeated. Possible values are: -1 when cache value is
not calculated yet, 0 when table *shall not* be replicated, 1 when
diff --git a/storage/connect/ha_connect.cc b/storage/connect/ha_connect.cc
index a066c48bf0e..9708fd9a521 100644
--- a/storage/connect/ha_connect.cc
+++ b/storage/connect/ha_connect.cc
@@ -3765,7 +3765,8 @@ static int connect_assisted_discovery(handlerton *hton, THD* thd,
#if defined(WIN32)
char *nsp= NULL, *cls= NULL;
#endif // WIN32
- int port= 0, hdr= 0, mxr= 0, rc= 0, cop= 0;
+ int port= 0, hdr= 0, mxr= 0, rc= 0;
+ int cop __attribute__((unused)) = 0;
uint tm, fnc= FNC_NO, supfnc= (FNC_NO | FNC_COL);
bool bif, ok= false, dbf= false;
TABTYPE ttp= TAB_UNDEF;
diff --git a/strings/ctype-uca.c b/strings/ctype-uca.c
index e3138f7f310..39de420044b 100644
--- a/strings/ctype-uca.c
+++ b/strings/ctype-uca.c
@@ -6775,6 +6775,17 @@ static const char hungarian[]=
"&O < \\u00F6 <<< \\u00D6 << \\u0151 <<< \\u0150"
"&U < \\u00FC <<< \\u00DC << \\u0171 <<< \\u0170";
+
+static const char croatian_mysql561[]=
+ "&C < \\u010D <<< \\u010C < \\u0107 <<< \\u0106"
+ "&D < d\\u017E = \\u01C6 <<< d\\u017D <<< D\\u017E = \\u01C5 <<< D\\u017D = \\u01C4"
+ " < \\u0111 <<< \\u0110"
+ "&L < lj = \\u01C9 <<< lJ <<< Lj = \\u01C8 <<< LJ = \\u01C7"
+ "&N < nj = \\u01CC <<< nJ <<< Nj = \\u01CB <<< NJ = \\u01CA"
+ "&S < \\u0161 <<< \\u0160"
+ "&Z < \\u017E <<< \\u017D";
+
+
/*
SCCII Part 1 : Collation Sequence (SLS1134)
2006/11/24
@@ -6804,7 +6815,22 @@ static const char sinhala[]=
#endif
-static const char croatian[]=
+/*
+ Croatian that was added into MariaDB-5.3 uses
+ slightly different rules comparing to the MySQL-5.6 version.
+ The difference is in the following combinations of
+ a small letter followed by a capital letter:
+ - U+0064 U+017D (LATIN SMALL LETTER D + LATIN CAPITAL LETTER Z WITH CARON)
+ - U+006C U+004A (LATIN SMALL LETTER L + LATIN CAPITAL LETTER J)
+ - U+006E U+004A (LATIN SMALL LETTER N + LATIN CAPITAL LETTER J)
+ MySQL consider these pairs as contractions and sorts near their
+ "CAPITAL + SMALL" and "SMALL + SMALL" counterparts.
+ MariaDB consider these pairs as individual characters.
+ Note, the MariaDB version is closer to CLDR:
+ http://unicode.org/cldr/trac/browser/trunk/common/collation/hr.xml?rev=9244
+ (the latest hr.xml revision as of 2013-11-06).
+*/
+static const char croatian_mariadb[]=
"&C < \\u010D <<< \\u010C < \\u0107 <<< \\u0106 "
"&D < d\\u017E <<< \\u01C6 <<< D\\u017E <<< \\u01C5 <<< D\\u017D <<< \\u01C4 "
" < \\u0111 <<< \\u0110 "
@@ -10273,14 +10299,47 @@ struct charset_info_st my_charset_ucs2_german2_uca_ci=
&my_collation_ucs2_uca_handler
};
-struct charset_info_st my_charset_ucs2_croatian_uca_ci=
+struct charset_info_st my_charset_ucs2_croatian_mysql561_uca_ci=
{
149,0,0, /* number */
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
"ucs2", /* cs name */
- "ucs2_croatian_ci", /* name */
+ "ucs2_croatian_mysql561_ci", /* name */
"", /* comment */
- croatian, /* tailoring */
+ croatian_mysql561, /* tailoring */
+ NULL, /* ctype */
+ NULL, /* to_lower */
+ NULL, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ NULL, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 8, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 2, /* mbminlen */
+ 2, /* mbmaxlen */
+ 9, /* min_sort_char */
+ 0xFFFF, /* max_sort_char */
+ ' ', /* pad char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_ucs2_handler,
+ &my_collation_ucs2_uca_handler
+};
+
+
+struct charset_info_st my_charset_ucs2_croatian_uca_ci=
+{
+ MY_PAGE2_COLLATION_ID_UCS2,0,0, /* number */
+ MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
+ "ucs2", /* cs name */
+ "ucs2_croatian_ci", /* name */
+ "", /* comment */
+ croatian_mariadb, /* tailoring */
NULL, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
@@ -11030,14 +11089,47 @@ struct charset_info_st my_charset_utf8_german2_uca_ci=
&my_collation_any_uca_handler
};
-struct charset_info_st my_charset_utf8_croatian_uca_ci=
+struct charset_info_st my_charset_utf8_croatian_mysql561_uca_ci=
{
213,0,0, /* number */
MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
MY_UTF8MB3, /* cs name */
+ MY_UTF8MB3 "_croatian_mysql561_ci",/* name */
+ "", /* comment */
+ croatian_mysql561, /* tailoring */
+ ctype_utf8, /* ctype */
+ NULL, /* to_lower */
+ NULL, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ NULL, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 8, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 1, /* mbminlen */
+ 3, /* mbmaxlen */
+ 9, /* min_sort_char */
+ 0xFFFF, /* max_sort_char */
+ ' ', /* pad char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_utf8_handler,
+ &my_collation_any_uca_handler
+};
+
+
+struct charset_info_st my_charset_utf8_croatian_uca_ci=
+{
+ MY_PAGE2_COLLATION_ID_UTF8,0,0, /* number */
+ MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
+ MY_UTF8MB3, /* cs name */
MY_UTF8MB3 "_croatian_ci",/* name */
"", /* comment */
- croatian, /* tailoring */
+ croatian_mariadb, /* tailoring */
ctype_utf8, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
@@ -11746,14 +11838,46 @@ struct charset_info_st my_charset_utf8mb4_german2_uca_ci=
&my_collation_any_uca_handler
};
-struct charset_info_st my_charset_utf8mb4_croatian_uca_ci=
+struct charset_info_st my_charset_utf8mb4_croatian_mysql561_uca_ci=
{
245,0,0, /* number */
MY_CS_UTF8MB4_UCA_FLAGS,/* state */
MY_UTF8MB4, /* csname */
- MY_UTF8MB4 "_croatian_ci",/* name */
+ MY_UTF8MB4 "_croatian_mysql561_ci",/* name */
+ "", /* comment */
+ croatian_mysql561, /* tailoring */
+ ctype_utf8, /* ctype */
+ NULL, /* to_lower */
+ NULL, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ NULL, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ &my_unicase_default,/* caseinfo */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 8, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 1, /* mbminlen */
+ 4, /* mbmaxlen */
+ 9, /* min_sort_char */
+ 0xFFFF, /* max_sort_char */
+ ' ', /* pad char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_utf8mb4_handler,
+ &my_collation_any_uca_handler
+};
+
+struct charset_info_st my_charset_utf8mb4_croatian_uca_ci=
+{
+ MY_PAGE2_COLLATION_ID_UTF8MB4,0,0, /* number */
+ MY_CS_UTF8MB4_UCA_FLAGS,/* state */
+ MY_UTF8MB4, /* csname */
+ MY_UTF8MB4 "_croatian_ci",/* name */
"", /* comment */
- croatian, /* tailoring */
+ croatian_mariadb, /* tailoring */
ctype_utf8, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
@@ -12476,14 +12600,46 @@ struct charset_info_st my_charset_utf32_german2_uca_ci=
&my_collation_utf32_uca_handler
};
+struct charset_info_st my_charset_utf32_croatian_mysql561_uca_ci=
+{
+ 181,0,0, /* number */
+ MY_CS_UTF32_UCA_FLAGS,/* state */
+ "utf32", /* csname */
+ "utf32_croatian_mysql561_ci", /* name */
+ "", /* comment */
+ croatian_mysql561, /* tailoring */
+ NULL, /* ctype */
+ NULL, /* to_lower */
+ NULL, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ NULL, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ &my_unicase_default,/* caseinfo */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 8, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 4, /* mbminlen */
+ 4, /* mbmaxlen */
+ 9, /* min_sort_char */
+ 0xFFFF, /* max_sort_char */
+ ' ', /* pad char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_utf32_handler,
+ &my_collation_utf32_uca_handler
+};
+
struct charset_info_st my_charset_utf32_croatian_uca_ci=
{
- 214,0,0, /* number */
+ MY_PAGE2_COLLATION_ID_UTF32,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* state */
"utf32", /* csname */
"utf32_croatian_ci", /* name */
"", /* comment */
- croatian, /* tailoring */
+ croatian_mariadb, /* tailoring */
NULL, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
@@ -13208,14 +13364,47 @@ struct charset_info_st my_charset_utf16_german2_uca_ci=
};
+struct charset_info_st my_charset_utf16_croatian_mysql561_uca_ci=
+{
+ 122,0,0, /* number */
+ MY_CS_UTF16_UCA_FLAGS,/* state */
+ "utf16", /* cs name */
+ "utf16_croatian_mysql561_ci",/* name */
+ "", /* comment */
+ croatian_mysql561, /* tailoring */
+ NULL, /* ctype */
+ NULL, /* to_lower */
+ NULL, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ NULL, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ &my_unicase_default,/* caseinfo */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 8, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 2, /* mbminlen */
+ 4, /* mbmaxlen */
+ 9, /* min_sort_char */
+ 0xFFFF, /* max_sort_char */
+ ' ', /* pad char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_utf16_handler,
+ &my_collation_utf16_uca_handler
+};
+
+
struct charset_info_st my_charset_utf16_croatian_uca_ci=
{
- 215,0,0, /* number */
+ MY_PAGE2_COLLATION_ID_UTF16,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
"utf16", /* cs name */
- "utf16_croatian_ci",/* name */
+ "utf16_croatian_ci",/* name */
"", /* comment */
- croatian, /* tailoring */
+ croatian_mariadb, /* tailoring */
NULL, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */