1
0
mirror of https://github.com/MariaDB/server.git synced 2025-11-25 17:25:02 +03:00

Adding collations

utf8mb4_thai_520_w2, ucs2_thai_520_w2, utf16_thai_520_w2, utf32_thai_520_w2
This commit is contained in:
Alexander Barkov
2016-05-30 16:56:29 +04:00
parent c5733e57e7
commit bc546225c0
17 changed files with 3764 additions and 30 deletions

View File

@@ -34167,6 +34167,23 @@ static size_t my_strnxfrmlen_any_uca_multilevel(CHARSET_INFO *cs, size_t len)
return my_strnxfrmlen_any_uca(cs, len) * cs->levels_for_order;
}
MY_COLLATION_HANDLER my_collation_any_uca_handler_multilevel=
{
my_coll_init_uca_multilevel,
my_strnncoll_any_uca_multilevel,
my_strnncollsp_any_uca_multilevel,
my_strnxfrm_any_uca_multilevel,
my_strnxfrmlen_any_uca_multilevel,
my_like_range_generic,
my_wildcmp_uca,
NULL,
my_instr_mb,
my_hash_sort_any_uca,
my_propagate_complex
};
#ifdef HAVE_CHARSET_ucs2
/*
UCS2 optimized CHARSET_INFO compatible wrappers.
@@ -35000,6 +35017,38 @@ struct charset_info_st my_charset_ucs2_myanmar_uca_ci=
};
struct charset_info_st my_charset_ucs2_thai_520_w2=
{
MY_PAGE2_COLLATION_ID_UCS2+2,0,0, /* number */
MY_CS_UCS2_UCA_FLAGS,/* flags */
"ucs2", /* csname */
"ucs2_thai_520_w2", /* name */
"", /* comment */
"", /* tailoring */
NULL, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
&my_uca_v520_th, /* uca */
NULL, /* tab_to_uni */
NULL, /* tab_from_uni */
&my_unicase_unicode520,/* caseinfo */
NULL, /* state_map */
NULL, /* ident_map */
4, /* 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 */
2, /* levels_for_order */
&my_charset_ucs2_handler,
&my_collation_any_uca_handler_multilevel
};
struct charset_info_st my_charset_ucs2_unicode_520_ci=
{
150,0,0, /* number */
@@ -35085,21 +35134,6 @@ MY_COLLATION_HANDLER my_collation_any_uca_handler =
my_propagate_complex
};
MY_COLLATION_HANDLER my_collation_any_uca_handler_multilevel=
{
my_coll_init_uca_multilevel, /* init */
my_strnncoll_any_uca_multilevel,
my_strnncollsp_any_uca_multilevel,
my_strnxfrm_any_uca_multilevel,
my_strnxfrmlen_any_uca_multilevel,
my_like_range_mb,
my_wildcmp_uca,
NULL,
my_instr_mb,
my_hash_sort_any_uca,
my_propagate_complex
};
/*
We consider bytes with code more than 127 as a letter.
This garantees that word boundaries work fine with regular
@@ -35941,7 +35975,7 @@ struct charset_info_st my_charset_utf8_thai_520_w2=
MY_PAGE2_COLLATION_ID_UTF8+2,0,0, /* number */
MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
MY_UTF8MB3, /* csname */
MY_UTF8MB3 "_thai_520_w2",/* name */
MY_UTF8MB3 "_thai_520_w2",/* name */
"", /* comment */
"", /* tailoring */
ctype_utf8, /* ctype */
@@ -36782,6 +36816,37 @@ struct charset_info_st my_charset_utf8mb4_myanmar_uca_ci=
&my_collation_any_uca_handler
};
struct charset_info_st my_charset_utf8mb4_thai_520_w2=
{
MY_PAGE2_COLLATION_ID_UTF8MB4+2,0,0, /* number */
MY_CS_UTF8MB4_UCA_FLAGS,/* flags */
MY_UTF8MB4, /* csname */
MY_UTF8MB4 "_thai_520_w2", /* name */
"", /* comment */
"", /* tailoring */
ctype_utf8, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
&my_uca_v520_th, /* uca */
NULL, /* tab_to_uni */
NULL, /* tab_from_uni */
&my_unicase_unicode520,/* caseinfo */
NULL, /* state_map */
NULL, /* ident_map */
4, /* 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 */
2, /* levels_for_order */
&my_charset_utf8mb4_handler,
&my_collation_any_uca_handler_multilevel
};
struct charset_info_st my_charset_utf8mb4_unicode_520_ci=
{
@@ -37645,6 +37710,39 @@ struct charset_info_st my_charset_utf32_myanmar_uca_ci=
};
struct charset_info_st my_charset_utf32_thai_520_w2=
{
MY_PAGE2_COLLATION_ID_UTF32+2,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* state */
"utf32", /* csname */
"utf32_thai_520_w2",/* name */
"", /* comment */
"", /* tailoring */
NULL, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
&my_uca_v520_th, /* uca */
NULL, /* tab_to_uni */
NULL, /* tab_from_uni */
&my_unicase_unicode520,/* caseinfo */
NULL, /* state_map */
NULL, /* ident_map */
4, /* 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 */
2, /* levels_for_order */
&my_charset_utf32_handler,
&my_collation_any_uca_handler_multilevel
};
struct charset_info_st my_charset_utf32_unicode_520_ci=
{
182,0,0, /* number */
@@ -38510,6 +38608,39 @@ struct charset_info_st my_charset_utf16_myanmar_uca_ci=
};
struct charset_info_st my_charset_utf16_thai_520_w2=
{
MY_PAGE2_COLLATION_ID_UTF16+2,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
"utf16", /* cs name */
"utf16_thai_520_w2",/* name */
"", /* comment */
"", /* tailoring */
NULL, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
&my_uca_v520_th, /* uca */
NULL, /* tab_to_uni */
NULL, /* tab_from_uni */
&my_unicase_unicode520,/* caseinfo */
NULL, /* state_map */
NULL, /* ident_map */
4, /* 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 */
2, /* levels_for_order */
&my_charset_utf16_handler,
&my_collation_any_uca_handler_multilevel
};
struct charset_info_st my_charset_utf16_unicode_520_ci=
{
123,0,0, /* number */

View File

@@ -5447,6 +5447,38 @@ static uint my_mbcharlen_utf8(CHARSET_INFO *cs __attribute__((unused)),
}
/*
TODO-10.2: join this with pad_max_char() in ctype-mb.c
*/
static void
my_fill_utf8_mb(CHARSET_INFO *cs, char *str, size_t length, int fill)
{
char *end= str + length;
char buf[10];
char buflen= cs->cset->native_to_mb(cs, (my_wc_t) fill, (uchar*) buf,
(uchar*) buf + sizeof(buf));
DBUG_ASSERT(buflen > 0);
for ( ; str + buflen <= end ; )
{
memcpy(str, buf, buflen);
str+= buflen;
}
for ( ; str < end; )
*str++= ' ';
}
static void
my_fill_utf8(CHARSET_INFO *cs, char *str, size_t length, int fill)
{
if (fill < 0x80)
my_fill_8bit(cs, str, length, fill);
else
my_fill_utf8_mb(cs, str, length, fill);
}
static MY_COLLATION_HANDLER my_collation_utf8_general_ci_handler =
{
NULL, /* init */
@@ -5514,7 +5546,7 @@ MY_CHARSET_HANDLER my_charset_utf8_handler=
my_snprintf_8bit,
my_long10_to_str_8bit,
my_longlong10_to_str_8bit,
my_fill_8bit,
my_fill_utf8,
my_strntol_8bit,
my_strntoul_8bit,
my_strntoll_8bit,
@@ -7869,7 +7901,7 @@ MY_CHARSET_HANDLER my_charset_utf8mb4_handler=
my_snprintf_8bit,
my_long10_to_str_8bit,
my_longlong10_to_str_8bit,
my_fill_8bit,
my_fill_utf8,
my_strntol_8bit,
my_strntoul_8bit,
my_strntoll_8bit,