summaryrefslogtreecommitdiff
path: root/strings
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.org>2016-09-06 12:50:02 +0400
committerAlexander Barkov <bar@mariadb.org>2016-09-06 12:50:02 +0400
commitee19806b8e6bb00fa1cd547fe3e75193859d300d (patch)
tree27568e9cc17e2717785af028c65deb912731bfb9 /strings
parente4f6fd5e1252f8c68f449fe820bae88c18bca8f5 (diff)
downloadmariadb-git-ee19806b8e6bb00fa1cd547fe3e75193859d300d.tar.gz
MDEV-9711 NO PAD collations
Based on the patch from Daniil Medvedev (a Google Summer of Code task)
Diffstat (limited to 'strings')
-rw-r--r--strings/conf_to_src.c16
-rw-r--r--strings/ctype-big5.c114
-rw-r--r--strings/ctype-bin.c74
-rw-r--r--strings/ctype-cp932.c113
-rw-r--r--strings/ctype-euc_kr.c112
-rw-r--r--strings/ctype-eucjpms.c118
-rw-r--r--strings/ctype-extra.c2022
-rw-r--r--strings/ctype-gb2312.c111
-rw-r--r--strings/ctype-gbk.c109
-rw-r--r--strings/ctype-latin1.c66
-rw-r--r--strings/ctype-mb.c70
-rw-r--r--strings/ctype-simple.c109
-rw-r--r--strings/ctype-sjis.c113
-rw-r--r--strings/ctype-tis620.c113
-rw-r--r--strings/ctype-ucs2.c560
-rw-r--r--strings/ctype-ujis.c118
-rw-r--r--strings/ctype-utf8.c443
-rw-r--r--strings/ctype.c2
-rw-r--r--strings/strcoll.ic28
-rw-r--r--strings/strings_def.h2
20 files changed, 4080 insertions, 333 deletions
diff --git a/strings/conf_to_src.c b/strings/conf_to_src.c
index 1382ec69a0a..c7f25331534 100644
--- a/strings/conf_to_src.c
+++ b/strings/conf_to_src.c
@@ -338,16 +338,23 @@ print_array_ref(FILE *f,
}
+static const char *nopad_infix(CHARSET_INFO *cs)
+{
+ return (cs->state & MY_CS_NOPAD) ? "_nopad" : "";
+}
+
+
void dispcset(FILE *f,CHARSET_INFO *cs)
{
fprintf(f,"{\n");
fprintf(f," %d,%d,%d,\n",cs->number,0,0);
- fprintf(f," MY_CS_COMPILED%s%s%s%s%s,\n",
+ fprintf(f," MY_CS_COMPILED%s%s%s%s%s%s,\n",
cs->state & MY_CS_BINSORT ? "|MY_CS_BINSORT" : "",
cs->state & MY_CS_PRIMARY ? "|MY_CS_PRIMARY" : "",
cs->state & MY_CS_CSSORT ? "|MY_CS_CSSORT" : "",
cs->state & MY_CS_PUREASCII ? "|MY_CS_PUREASCII" : "",
- cs->state & MY_CS_NONASCII ? "|MY_CS_NONASCII" : "");
+ cs->state & MY_CS_NONASCII ? "|MY_CS_NONASCII" : "",
+ cs->state & MY_CS_NOPAD ? "|MY_CS_NOPAD" : "");
if (cs->name)
{
@@ -402,10 +409,11 @@ void dispcset(FILE *f,CHARSET_INFO *cs)
fprintf(f," 0, /* escape_with_backslash_is_dangerous */\n");
fprintf(f," 1, /* levels_for_order */\n");
fprintf(f," &my_charset_8bit_handler,\n");
+
if (cs->state & MY_CS_BINSORT)
- fprintf(f," &my_collation_8bit_bin_handler,\n");
+ fprintf(f," &my_collation_8bit%s_bin_handler,\n", nopad_infix(cs));
else
- fprintf(f," &my_collation_8bit_simple_ci_handler,\n");
+ fprintf(f," &my_collation_8bit_simple%s_ci_handler,\n", nopad_infix(cs));
fprintf(f,"}\n");
}
diff --git a/strings/ctype-big5.c b/strings/ctype-big5.c
index 9ae394eeedc..dd66da224ba 100644
--- a/strings/ctype-big5.c
+++ b/strings/ctype-big5.c
@@ -6690,6 +6690,22 @@ my_mb_wc_big5(CHARSET_INFO *cs __attribute__((unused)),
#include "strcoll.ic"
+#define DEFINE_STRNNCOLLSP_NOPAD
+#define MY_FUNCTION_NAME(x) my_ ## x ## _big5_chinese_nopad_ci
+#define WEIGHT_MB1(x) (sort_order_big5[(uchar) (x)])
+#define WEIGHT_MB2(x,y) (big5code(x, y))
+#define WEIGHT_MB2_FRM(x,y) (big5strokexfrm((uint16) WEIGHT_MB2(x, y)))
+#define DEFINE_STRNXFRM
+#include "strcoll.ic"
+
+
+#define DEFINE_STRNNCOLLSP_NOPAD
+#define MY_FUNCTION_NAME(x) my_ ## x ## _big5_nopad_bin
+#define WEIGHT_MB1(x) ((uchar) (x))
+#define WEIGHT_MB2(x,y) (big5code(x, y))
+#include "strcoll.ic"
+
+
static MY_COLLATION_HANDLER my_collation_handler_big5_chinese_ci=
{
NULL, /* init */
@@ -6722,6 +6738,38 @@ static MY_COLLATION_HANDLER my_collation_handler_big5_bin=
};
+static MY_COLLATION_HANDLER my_collation_handler_big5_chinese_nopad_ci=
+{
+ NULL, /* init */
+ my_strnncoll_big5_chinese_ci,
+ my_strnncollsp_big5_chinese_nopad_ci,
+ my_strnxfrm_big5_chinese_nopad_ci,
+ my_strnxfrmlen_simple,
+ my_like_range_mb,
+ my_wildcmp_mb,
+ my_strcasecmp_mb,
+ my_instr_mb,
+ my_hash_sort_simple_nopad,
+ my_propagate_simple
+};
+
+
+static MY_COLLATION_HANDLER my_collation_handler_big5_nopad_bin=
+{
+ NULL, /* init */
+ my_strnncoll_big5_bin,
+ my_strnncollsp_big5_nopad_bin,
+ my_strnxfrm_mb_nopad,
+ my_strnxfrmlen_simple,
+ my_like_range_mb,
+ my_wildcmp_mb_bin,
+ my_strcasecmp_mb_bin,
+ my_instr_mb,
+ my_hash_sort_mb_nopad_bin,
+ my_propagate_simple
+};
+
+
static MY_CHARSET_HANDLER my_charset_big5_handler=
{
NULL, /* init */
@@ -6821,4 +6869,70 @@ struct charset_info_st my_charset_big5_bin=
};
+struct charset_info_st my_charset_big5_chinese_nopad_ci=
+{
+ MY_NOPAD_ID(1),0,0, /* number */
+ MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_NOPAD, /* state */
+ "big5", /* cs name */
+ "big5_chinese_nopad_ci", /* name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_big5,
+ to_lower_big5,
+ to_upper_big5,
+ sort_order_big5,
+ NULL, /* uca */
+ NULL, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ &my_caseinfo_big5, /* caseinfo */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 1, /* mbminlen */
+ 2, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 0xF9D5, /* max_sort_char */
+ ' ', /* pad char */
+ 1, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_big5_handler,
+ &my_collation_handler_big5_chinese_nopad_ci
+};
+
+
+struct charset_info_st my_charset_big5_nopad_bin=
+{
+ MY_NOPAD_ID(84),0,0, /* number */
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, /* state */
+ "big5", /* cs name */
+ "big5_nopad_bin", /* name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_big5,
+ to_lower_big5,
+ to_upper_big5,
+ NULL, /* sort_order */
+ NULL, /* uca */
+ NULL, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ &my_caseinfo_big5, /* caseinfo */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 1, /* mbminlen */
+ 2, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 0xF9FE, /* max_sort_char */
+ ' ', /* pad char */
+ 1, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_big5_handler,
+ &my_collation_handler_big5_nopad_bin
+};
+
+
#endif
diff --git a/strings/ctype-bin.c b/strings/ctype-bin.c
index aab7f2b7448..5655edd6063 100644
--- a/strings/ctype-bin.c
+++ b/strings/ctype-bin.c
@@ -199,6 +199,15 @@ static int my_strnncollsp_8bit_bin(CHARSET_INFO * cs __attribute__((unused)),
}
+static int my_strnncollsp_8bit_nopad_bin(CHARSET_INFO * cs
+ __attribute__((unused)),
+ const uchar *a, size_t a_length,
+ const uchar *b, size_t b_length)
+{
+ return my_strnncoll_8bit_bin(cs, a, a_length, b, b_length, FALSE);
+}
+
+
/* This function is used for all conversion functions */
static size_t my_case_str_bin(CHARSET_INFO *cs __attribute__((unused)),
@@ -253,19 +262,13 @@ int my_wc_mb_bin(CHARSET_INFO *cs __attribute__((unused)),
}
-void my_hash_sort_8bit_bin(CHARSET_INFO *cs __attribute__((unused)),
- const uchar *key, size_t len,
- ulong *nr1, ulong *nr2)
+void my_hash_sort_bin(CHARSET_INFO *cs __attribute__((unused)),
+ const uchar *key, size_t len,ulong *nr1, ulong *nr2)
{
+ const uchar *end = key + len;
ulong tmp1= *nr1;
ulong tmp2= *nr2;
- /*
- Remove trailing spaces. We have to do this to be able to compare
- 'A ' and 'A' as identical
- */
- const uchar *end = skip_trailing_space(key, len);
-
for (; key < end ; key++)
{
MY_HASH_ADD(tmp1, tmp2, (uint) *key);
@@ -276,20 +279,16 @@ void my_hash_sort_8bit_bin(CHARSET_INFO *cs __attribute__((unused)),
}
-void my_hash_sort_bin(CHARSET_INFO *cs __attribute__((unused)),
- const uchar *key, size_t len,ulong *nr1, ulong *nr2)
+void my_hash_sort_8bit_bin(CHARSET_INFO *cs __attribute__((unused)),
+ const uchar *key, size_t len,
+ ulong *nr1, ulong *nr2)
{
- const uchar *end = key + len;
- ulong tmp1= *nr1;
- ulong tmp2= *nr2;
-
- for (; key < end ; key++)
- {
- MY_HASH_ADD(tmp1, tmp2, (uint) *key);
- }
-
- *nr1= tmp1;
- *nr2= tmp2;
+ /*
+ Remove trailing spaces. We have to do this to be able to compare
+ 'A ' and 'A' as identical
+ */
+ const uchar *end= skip_trailing_space(key, len);
+ my_hash_sort_bin(cs, key, end - key, nr1, nr2);
}
@@ -407,6 +406,21 @@ my_strnxfrm_8bit_bin(CHARSET_INFO *cs,
}
+static size_t
+my_strnxfrm_8bit_nopad_bin(CHARSET_INFO *cs,
+ uchar * dst, size_t dstlen, uint nweights,
+ const uchar *src, size_t srclen, uint flags)
+{
+ set_if_smaller(srclen, dstlen);
+ set_if_smaller(srclen, nweights);
+ if (dst != src)
+ memcpy(dst, src, srclen);
+ return my_strxfrm_pad_desc_and_reverse_nopad(cs, dst, dst + srclen,
+ dst + dstlen, nweights - srclen,
+ flags, 0);
+}
+
+
static
uint my_instr_bin(CHARSET_INFO *cs __attribute__((unused)),
const char *b, size_t b_length,
@@ -484,6 +498,22 @@ MY_COLLATION_HANDLER my_collation_8bit_bin_handler =
};
+MY_COLLATION_HANDLER my_collation_8bit_nopad_bin_handler =
+{
+ my_coll_init_8bit_bin,
+ my_strnncoll_8bit_bin,
+ my_strnncollsp_8bit_nopad_bin,
+ my_strnxfrm_8bit_nopad_bin,
+ my_strnxfrmlen_simple,
+ my_like_range_simple,
+ my_wildcmp_bin,
+ my_strcasecmp_bin,
+ my_instr_bin,
+ my_hash_sort_bin,
+ my_propagate_simple
+};
+
+
static MY_COLLATION_HANDLER my_collation_binary_handler =
{
NULL, /* init */
diff --git a/strings/ctype-cp932.c b/strings/ctype-cp932.c
index 151fac8a052..83f8d40c480 100644
--- a/strings/ctype-cp932.c
+++ b/strings/ctype-cp932.c
@@ -34646,6 +34646,22 @@ size_t my_numcells_cp932(CHARSET_INFO *cs __attribute__((unused)),
#include "strcoll.ic"
+#define DEFINE_STRNNCOLLSP_NOPAD
+#define MY_FUNCTION_NAME(x) my_ ## x ## _cp932_japanese_nopad_ci
+#define WEIGHT_PAD_SPACE (256 * (int) ' ')
+#define WEIGHT_MB1(x) (256 * (int) sort_order_cp932[(uchar) (x)])
+#define WEIGHT_MB2(x,y) (cp932code(x, y))
+#include "strcoll.ic"
+
+
+#define DEFINE_STRNNCOLLSP_NOPAD
+#define MY_FUNCTION_NAME(x) my_ ## x ## _cp932_nopad_bin
+#define WEIGHT_PAD_SPACE (256 * (int) ' ')
+#define WEIGHT_MB1(x) (256 * (int) (uchar) (x))
+#define WEIGHT_MB2(x,y) (cp932code(x, y))
+#include "strcoll.ic"
+
+
static MY_COLLATION_HANDLER my_collation_handler_cp932_japanese_ci=
{
NULL, /* init */
@@ -34678,6 +34694,38 @@ static MY_COLLATION_HANDLER my_collation_handler_cp932_bin=
};
+static MY_COLLATION_HANDLER my_collation_handler_cp932_japanese_nopad_ci=
+{
+ NULL, /* init */
+ my_strnncoll_cp932_japanese_ci,
+ my_strnncollsp_cp932_japanese_nopad_ci,
+ my_strnxfrm_mb_nopad,
+ my_strnxfrmlen_simple,
+ my_like_range_mb,
+ my_wildcmp_mb,
+ my_strcasecmp_8bit,
+ my_instr_mb,
+ my_hash_sort_simple_nopad,
+ my_propagate_simple
+};
+
+
+static MY_COLLATION_HANDLER my_collation_handler_cp932_nopad_bin=
+{
+ NULL, /* init */
+ my_strnncoll_cp932_bin,
+ my_strnncollsp_cp932_nopad_bin,
+ my_strnxfrm_mb_nopad,
+ my_strnxfrmlen_simple,
+ my_like_range_mb,
+ my_wildcmp_mb_bin,
+ my_strcasecmp_mb_bin,
+ my_instr_mb,
+ my_hash_sort_mb_nopad_bin,
+ my_propagate_simple
+};
+
+
static MY_CHARSET_HANDLER my_charset_handler=
{
NULL, /* init */
@@ -34776,4 +34824,69 @@ struct charset_info_st my_charset_cp932_bin=
&my_collation_handler_cp932_bin
};
+
+struct charset_info_st my_charset_cp932_japanese_nopad_ci=
+{
+ MY_NOPAD_ID(95),0,0, /* number */
+ MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_NOPAD, /* state */
+ "cp932", /* cs name */
+ "cp932_japanese_nopad_ci",/* name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_cp932,
+ to_lower_cp932,
+ to_upper_cp932,
+ sort_order_cp932,
+ NULL, /* uca */
+ NULL, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ &my_caseinfo_cp932, /* caseinfo */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 1, /* mbminlen */
+ 2, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 0xFCFC, /* max_sort_char */
+ ' ', /* pad char */
+ 1, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_handler,
+ &my_collation_handler_cp932_japanese_nopad_ci
+};
+
+struct charset_info_st my_charset_cp932_nopad_bin=
+{
+ MY_NOPAD_ID(96),0,0, /* number */
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, /* state */
+ "cp932", /* cs name */
+ "cp932_nopad_bin", /* name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_cp932,
+ to_lower_cp932,
+ to_upper_cp932,
+ NULL, /* sort_order */
+ NULL, /* uca */
+ NULL, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ &my_caseinfo_cp932, /* caseinfo */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 1, /* mbminlen */
+ 2, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 0xFCFC, /* max_sort_char */
+ ' ', /* pad char */
+ 1, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_handler,
+ &my_collation_handler_cp932_nopad_bin
+};
+
#endif
diff --git a/strings/ctype-euc_kr.c b/strings/ctype-euc_kr.c
index d2389136c49..e2a50da2ed4 100644
--- a/strings/ctype-euc_kr.c
+++ b/strings/ctype-euc_kr.c
@@ -9938,6 +9938,20 @@ my_mb_wc_euc_kr(CHARSET_INFO *cs __attribute__((unused)),
#include "strcoll.ic"
+#define DEFINE_STRNNCOLLSP_NOPAD
+#define MY_FUNCTION_NAME(x) my_ ## x ## _euckr_korean_nopad_ci
+#define WEIGHT_MB1(x) (sort_order_euc_kr[(uchar) (x)])
+#define WEIGHT_MB2(x,y) (euckrcode(x, y))
+#include "strcoll.ic"
+
+
+#define DEFINE_STRNNCOLLSP_NOPAD
+#define MY_FUNCTION_NAME(x) my_ ## x ## _euckr_nopad_bin
+#define WEIGHT_MB1(x) ((uchar) (x))
+#define WEIGHT_MB2(x,y) (euckrcode(x, y))
+#include "strcoll.ic"
+
+
static MY_COLLATION_HANDLER my_collation_handler_euckr_korean_ci=
{
NULL, /* init */
@@ -9970,6 +9984,38 @@ static MY_COLLATION_HANDLER my_collation_handler_euckr_bin=
};
+static MY_COLLATION_HANDLER my_collation_handler_euckr_korean_nopad_ci=
+{
+ NULL, /* init */
+ my_strnncoll_euckr_korean_ci,
+ my_strnncollsp_euckr_korean_nopad_ci,
+ my_strnxfrm_mb_nopad,
+ my_strnxfrmlen_simple,
+ my_like_range_mb,
+ my_wildcmp_mb,
+ my_strcasecmp_mb,
+ my_instr_mb,
+ my_hash_sort_simple_nopad,
+ my_propagate_simple
+};
+
+
+static MY_COLLATION_HANDLER my_collation_handler_euckr_nopad_bin=
+{
+ NULL, /* init */
+ my_strnncoll_euckr_bin,
+ my_strnncollsp_euckr_nopad_bin,
+ my_strnxfrm_mb_nopad,
+ my_strnxfrmlen_simple,
+ my_like_range_mb,
+ my_wildcmp_mb_bin,
+ my_strcasecmp_mb_bin,
+ my_instr_mb,
+ my_hash_sort_mb_nopad_bin,
+ my_propagate_simple
+};
+
+
static MY_CHARSET_HANDLER my_charset_handler=
{
NULL, /* init */
@@ -10069,4 +10115,70 @@ struct charset_info_st my_charset_euckr_bin=
&my_collation_handler_euckr_bin
};
+
+struct charset_info_st my_charset_euckr_korean_nopad_ci=
+{
+ MY_NOPAD_ID(19),0,0,/* number */
+ MY_CS_COMPILED|MY_CS_NOPAD, /* state */
+ "euckr", /* cs name */
+ "euckr_korean_nopad_ci", /* name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_euc_kr,
+ to_lower_euc_kr,
+ to_upper_euc_kr,
+ sort_order_euc_kr,
+ NULL, /* uca */
+ NULL, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ &my_caseinfo_euckr, /* caseinfo */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 1, /* mbminlen */
+ 2, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 0xFEFE, /* max_sort_char */
+ ' ', /* pad char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_handler,
+ &my_collation_handler_euckr_korean_nopad_ci
+};
+
+
+struct charset_info_st my_charset_euckr_nopad_bin=
+{
+ MY_NOPAD_ID(85),0,0,/* number */
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, /* state */
+ "euckr", /* cs name */
+ "euckr_nopad_bin", /* name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_euc_kr,
+ to_lower_euc_kr,
+ to_upper_euc_kr,
+ NULL, /* sort_order */
+ NULL, /* uca */
+ NULL, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ &my_caseinfo_euckr, /* caseinfo */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 1, /* mbminlen */
+ 2, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 0xFEFE, /* max_sort_char */
+ ' ', /* pad char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_handler,
+ &my_collation_handler_euckr_nopad_bin
+};
+
#endif
diff --git a/strings/ctype-eucjpms.c b/strings/ctype-eucjpms.c
index caafd1d13b4..47d03bd5d99 100644
--- a/strings/ctype-eucjpms.c
+++ b/strings/ctype-eucjpms.c
@@ -221,6 +221,26 @@ static const uchar sort_order_eucjpms[]=
#include "strcoll.ic"
+#define DEFINE_STRNNCOLLSP_NOPAD
+#define MY_FUNCTION_NAME(x) my_ ## x ## _eucjpms_japanese_nopad_ci
+#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
+#define WEIGHT_MB1(x) ((int) sort_order_eucjpms[(uchar) (x)])
+#define WEIGHT_MB2(x,y) ((((uint) (uchar)(x)) << 16) | \
+ (((uint) (uchar) (y)) << 8))
+#define WEIGHT_MB3(x,y,z) (WEIGHT_MB2(x,y) | ((uint) (uchar) z))
+#include "strcoll.ic"
+
+
+#define DEFINE_STRNNCOLLSP_NOPAD
+#define MY_FUNCTION_NAME(x) my_ ## x ## _eucjpms_nopad_bin
+#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
+#define WEIGHT_MB1(x) ((int) (uchar) (x))
+#define WEIGHT_MB2(x,y) ((((uint) (uchar)(x)) << 16) | \
+ (((uint) (uchar) (y)) << 8))
+#define WEIGHT_MB3(x,y,z) (WEIGHT_MB2(x,y) | ((uint) (uchar) z))
+#include "strcoll.ic"
+
+
/* Case info pages for JIS-X-0208 range */
static MY_UNICASE_CHARACTER cA2[256]=
@@ -67502,6 +67522,38 @@ static MY_COLLATION_HANDLER my_collation_eucjpms_bin_handler =
};
+static MY_COLLATION_HANDLER my_collation_eucjpms_japanese_nopad_ci_handler =
+{
+ NULL, /* init */
+ my_strnncoll_eucjpms_japanese_ci,
+ my_strnncollsp_eucjpms_japanese_nopad_ci,
+ my_strnxfrm_mb_nopad, /* strnxfrm */
+ my_strnxfrmlen_simple,
+ my_like_range_mb, /* like_range */
+ my_wildcmp_mb, /* wildcmp */
+ my_strcasecmp_mb,
+ my_instr_mb,
+ my_hash_sort_simple_nopad,
+ my_propagate_simple
+};
+
+
+static MY_COLLATION_HANDLER my_collation_eucjpms_nopad_bin_handler =
+{
+ NULL, /* init */
+ my_strnncoll_eucjpms_bin,
+ my_strnncollsp_eucjpms_nopad_bin,
+ my_strnxfrm_mb_nopad,
+ my_strnxfrmlen_simple,
+ my_like_range_mb,
+ my_wildcmp_mb_bin,
+ my_strcasecmp_mb_bin,
+ my_instr_mb,
+ my_hash_sort_mb_nopad_bin,
+ my_propagate_simple
+};
+
+
static MY_CHARSET_HANDLER my_charset_handler=
{
NULL, /* init */
@@ -67603,4 +67655,70 @@ struct charset_info_st my_charset_eucjpms_bin=
};
+struct charset_info_st my_charset_eucjpms_japanese_nopad_ci=
+{
+ MY_NOPAD_ID(97),0,0, /* number */
+ MY_CS_COMPILED|MY_CS_NOPAD,/* state */
+ "eucjpms", /* cs name */
+ "eucjpms_japanese_nopad_ci", /* name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_eucjpms,
+ to_lower_eucjpms,
+ to_upper_eucjpms,
+ sort_order_eucjpms,
+ NULL, /* uca */
+ NULL, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ &my_caseinfo_eucjpms,/* caseinfo */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 2, /* casedn_multiply */
+ 1, /* mbminlen */
+ 3, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 0xFEFE, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_handler,
+ &my_collation_eucjpms_japanese_nopad_ci_handler
+};
+
+
+struct charset_info_st my_charset_eucjpms_nopad_bin=
+{
+ MY_NOPAD_ID(98),0,0, /* number */
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, /* state */
+ "eucjpms", /* cs name */
+ "eucjpms_nopad_bin", /* name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_eucjpms,
+ to_lower_eucjpms,
+ to_upper_eucjpms,
+ NULL, /* sort_order */
+ NULL, /* uca */
+ NULL, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ &my_caseinfo_eucjpms,/* caseinfo */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 2, /* casedn_multiply */
+ 1, /* mbminlen */
+ 3, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 0xFEFE, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_handler,
+ &my_collation_eucjpms_nopad_bin_handler
+};
+
+
#endif
diff --git a/strings/ctype-extra.c b/strings/ctype-extra.c
index caf8ebaf0a7..a2eb2b80e49 100644
--- a/strings/ctype-extra.c
+++ b/strings/ctype-extra.c
@@ -3535,6 +3535,144 @@ static const uchar sort_order_cp1250_polish_ci[] = {
#endif
+#ifdef HAVE_CHARSET_dec8
+#endif
+
+#ifdef HAVE_CHARSET_cp850
+#endif
+
+#ifdef HAVE_CHARSET_hp8
+#endif
+
+#ifdef HAVE_CHARSET_koi8r
+#endif
+
+#ifdef HAVE_CHARSET_latin2
+#endif
+
+#ifdef HAVE_CHARSET_swe7
+#endif
+
+#ifdef HAVE_CHARSET_ascii
+#endif
+
+#ifdef HAVE_CHARSET_hebrew
+#endif
+
+#ifdef HAVE_CHARSET_koi8u
+#endif
+
+#ifdef HAVE_CHARSET_greek
+#endif
+
+#ifdef HAVE_CHARSET_cp1250
+#endif
+
+#ifdef HAVE_CHARSET_latin5
+#endif
+
+#ifdef HAVE_CHARSET_armscii8
+#endif
+
+#ifdef HAVE_CHARSET_cp866
+#endif
+
+#ifdef HAVE_CHARSET_keybcs2
+#endif
+
+#ifdef HAVE_CHARSET_macce
+#endif
+
+#ifdef HAVE_CHARSET_macroman
+#endif
+
+#ifdef HAVE_CHARSET_cp852
+#endif
+
+#ifdef HAVE_CHARSET_latin7
+#endif
+
+#ifdef HAVE_CHARSET_macce
+#endif
+
+#ifdef HAVE_CHARSET_cp1251
+#endif
+
+#ifdef HAVE_CHARSET_cp1251
+#endif
+
+#ifdef HAVE_CHARSET_macroman
+#endif
+
+#ifdef HAVE_CHARSET_cp1256
+#endif
+
+#ifdef HAVE_CHARSET_cp1257
+#endif
+
+#ifdef HAVE_CHARSET_cp1257
+#endif
+
+#ifdef HAVE_CHARSET_armscii8
+#endif
+
+#ifdef HAVE_CHARSET_ascii
+#endif
+
+#ifdef HAVE_CHARSET_cp1250
+#endif
+
+#ifdef HAVE_CHARSET_cp1256
+#endif
+
+#ifdef HAVE_CHARSET_cp866
+#endif
+
+#ifdef HAVE_CHARSET_dec8
+#endif
+
+#ifdef HAVE_CHARSET_greek
+#endif
+
+#ifdef HAVE_CHARSET_hebrew
+#endif
+
+#ifdef HAVE_CHARSET_hp8
+#endif
+
+#ifdef HAVE_CHARSET_keybcs2
+#endif
+
+#ifdef HAVE_CHARSET_koi8r
+#endif
+
+#ifdef HAVE_CHARSET_koi8u
+#endif
+
+#ifdef HAVE_CHARSET_latin2
+#endif
+
+#ifdef HAVE_CHARSET_latin5
+#endif
+
+#ifdef HAVE_CHARSET_latin7
+#endif
+
+#ifdef HAVE_CHARSET_cp850
+#endif
+
+#ifdef HAVE_CHARSET_cp852
+#endif
+
+#ifdef HAVE_CHARSET_swe7
+#endif
+
+#ifdef HAVE_CHARSET_geostd8
+#endif
+
+#ifdef HAVE_CHARSET_geostd8
+#endif
+
struct charset_info_st compiled_charsets[] = {
#ifdef HAVE_CHARSET_dec8
{
@@ -3545,11 +3683,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_dec8_swedish_ci, /* ctype */
- to_lower_dec8_swedish_ci, /* lower */
- to_upper_dec8_swedish_ci, /* upper */
+ to_lower_dec8_swedish_ci, /* to_lower */
+ to_upper_dec8_swedish_ci, /* to_upper */
sort_order_dec8_swedish_ci, /* sort_order */
NULL, /* uca */
- to_uni_dec8_swedish_ci, /* to_uni */
+ to_uni_dec8_swedish_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -3578,11 +3716,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_cp850_general_ci, /* ctype */
- to_lower_cp850_general_ci, /* lower */
- to_upper_cp850_general_ci, /* upper */
+ to_lower_cp850_general_ci, /* to_lower */
+ to_upper_cp850_general_ci, /* to_upper */
sort_order_cp850_general_ci, /* sort_order */
NULL, /* uca */
- to_uni_cp850_general_ci, /* to_uni */
+ to_uni_cp850_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -3611,11 +3749,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_latin1_german1_ci, /* ctype */
- to_lower_latin1_german1_ci, /* lower */
- to_upper_latin1_german1_ci, /* upper */
+ to_lower_latin1_german1_ci, /* to_lower */
+ to_upper_latin1_german1_ci, /* to_upper */
sort_order_latin1_german1_ci, /* sort_order */
NULL, /* uca */
- to_uni_latin1_german1_ci, /* to_uni */
+ to_uni_latin1_german1_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -3644,11 +3782,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_hp8_english_ci, /* ctype */
- to_lower_hp8_english_ci, /* lower */
- to_upper_hp8_english_ci, /* upper */
+ to_lower_hp8_english_ci, /* to_lower */
+ to_upper_hp8_english_ci, /* to_upper */
sort_order_hp8_english_ci, /* sort_order */
NULL, /* uca */
- to_uni_hp8_english_ci, /* to_uni */
+ to_uni_hp8_english_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -3677,11 +3815,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_koi8r_general_ci, /* ctype */
- to_lower_koi8r_general_ci, /* lower */
- to_upper_koi8r_general_ci, /* upper */
+ to_lower_koi8r_general_ci, /* to_lower */
+ to_upper_koi8r_general_ci, /* to_upper */
sort_order_koi8r_general_ci, /* sort_order */
NULL, /* uca */
- to_uni_koi8r_general_ci, /* to_uni */
+ to_uni_koi8r_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -3710,11 +3848,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_latin2_general_ci, /* ctype */
- to_lower_latin2_general_ci, /* lower */
- to_upper_latin2_general_ci, /* upper */
+ to_lower_latin2_general_ci, /* to_lower */
+ to_upper_latin2_general_ci, /* to_upper */
sort_order_latin2_general_ci, /* sort_order */
NULL, /* uca */
- to_uni_latin2_general_ci, /* to_uni */
+ to_uni_latin2_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -3743,11 +3881,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_swe7_swedish_ci, /* ctype */
- to_lower_swe7_swedish_ci, /* lower */
- to_upper_swe7_swedish_ci, /* upper */
+ to_lower_swe7_swedish_ci, /* to_lower */
+ to_upper_swe7_swedish_ci, /* to_upper */
sort_order_swe7_swedish_ci, /* sort_order */
NULL, /* uca */
- to_uni_swe7_swedish_ci, /* to_uni */
+ to_uni_swe7_swedish_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -3776,11 +3914,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_ascii_general_ci, /* ctype */
- to_lower_ascii_general_ci, /* lower */
- to_upper_ascii_general_ci, /* upper */
+ to_lower_ascii_general_ci, /* to_lower */
+ to_upper_ascii_general_ci, /* to_upper */
sort_order_ascii_general_ci, /* sort_order */
NULL, /* uca */
- to_uni_ascii_general_ci, /* to_uni */
+ to_uni_ascii_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -3809,11 +3947,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_cp1251_general_ci, /* ctype */
- to_lower_cp1251_general_ci, /* lower */
- to_upper_cp1251_general_ci, /* upper */
+ to_lower_cp1251_general_ci, /* to_lower */
+ to_upper_cp1251_general_ci, /* to_upper */
sort_order_cp1251_bulgarian_ci, /* sort_order */
NULL, /* uca */
- to_uni_cp1251_general_ci, /* to_uni */
+ to_uni_cp1251_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -3842,11 +3980,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_latin1_danish_ci, /* ctype */
- to_lower_latin1_danish_ci, /* lower */
- to_upper_latin1_danish_ci, /* upper */
+ to_lower_latin1_danish_ci, /* to_lower */
+ to_upper_latin1_danish_ci, /* to_upper */
sort_order_latin1_danish_ci, /* sort_order */
NULL, /* uca */
- to_uni_latin1_danish_ci, /* to_uni */
+ to_uni_latin1_danish_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -3875,11 +4013,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_hebrew_general_ci, /* ctype */
- to_lower_hebrew_general_ci, /* lower */
- to_upper_hebrew_general_ci, /* upper */
+ to_lower_hebrew_general_ci, /* to_lower */
+ to_upper_hebrew_general_ci, /* to_upper */
sort_order_hebrew_general_ci, /* sort_order */
NULL, /* uca */
- to_uni_hebrew_general_ci, /* to_uni */
+ to_uni_hebrew_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -3908,11 +4046,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_latin7_general_ci, /* ctype */
- to_lower_latin7_general_ci, /* lower */
- to_upper_latin7_general_ci, /* upper */
+ to_lower_latin7_general_ci, /* to_lower */
+ to_upper_latin7_general_ci, /* to_upper */
sort_order_latin7_estonian_cs, /* sort_order */
NULL, /* uca */
- to_uni_latin7_general_ci, /* to_uni */
+ to_uni_latin7_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -3941,11 +4079,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_latin2_general_ci, /* ctype */
- to_lower_latin2_general_ci, /* lower */
- to_upper_latin2_general_ci, /* upper */
+ to_lower_latin2_general_ci, /* to_lower */
+ to_upper_latin2_general_ci, /* to_upper */
sort_order_latin2_hungarian_ci, /* sort_order */
NULL, /* uca */
- to_uni_latin2_general_ci, /* to_uni */
+ to_uni_latin2_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -3974,11 +4112,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_koi8u_general_ci, /* ctype */
- to_lower_koi8u_general_ci, /* lower */
- to_upper_koi8u_general_ci, /* upper */
+ to_lower_koi8u_general_ci, /* to_lower */
+ to_upper_koi8u_general_ci, /* to_upper */
sort_order_koi8u_general_ci, /* sort_order */
NULL, /* uca */
- to_uni_koi8u_general_ci, /* to_uni */
+ to_uni_koi8u_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4007,11 +4145,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_cp1251_general_ci, /* ctype */
- to_lower_cp1251_general_ci, /* lower */
- to_upper_cp1251_general_ci, /* upper */
+ to_lower_cp1251_general_ci, /* to_lower */
+ to_upper_cp1251_general_ci, /* to_upper */
sort_order_cp1251_ukrainian_ci, /* sort_order */
NULL, /* uca */
- to_uni_cp1251_general_ci, /* to_uni */
+ to_uni_cp1251_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4040,11 +4178,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_greek_general_ci, /* ctype */
- to_lower_greek_general_ci, /* lower */
- to_upper_greek_general_ci, /* upper */
+ to_lower_greek_general_ci, /* to_lower */
+ to_upper_greek_general_ci, /* to_upper */
sort_order_greek_general_ci, /* sort_order */
NULL, /* uca */
- to_uni_greek_general_ci, /* to_uni */
+ to_uni_greek_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4073,11 +4211,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_cp1250_general_ci, /* ctype */
- to_lower_cp1250_general_ci, /* lower */
- to_upper_cp1250_general_ci, /* upper */
+ to_lower_cp1250_general_ci, /* to_lower */
+ to_upper_cp1250_general_ci, /* to_upper */
sort_order_cp1250_general_ci, /* sort_order */
NULL, /* uca */
- to_uni_cp1250_general_ci, /* to_uni */
+ to_uni_cp1250_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4106,11 +4244,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_latin2_general_ci, /* ctype */
- to_lower_latin2_general_ci, /* lower */
- to_upper_latin2_general_ci, /* upper */
+ to_lower_latin2_general_ci, /* to_lower */
+ to_upper_latin2_general_ci, /* to_upper */
sort_order_latin2_croatian_ci, /* sort_order */
NULL, /* uca */
- to_uni_latin2_general_ci, /* to_uni */
+ to_uni_latin2_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4139,11 +4277,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_cp1257_general_ci, /* ctype */
- to_lower_cp1257_general_ci, /* lower */
- to_upper_cp1257_general_ci, /* upper */
+ to_lower_cp1257_general_ci, /* to_lower */
+ to_upper_cp1257_general_ci, /* to_upper */
sort_order_cp1257_lithuanian_ci, /* sort_order */
NULL, /* uca */
- to_uni_cp1257_general_ci, /* to_uni */
+ to_uni_cp1257_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4172,11 +4310,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_latin5_turkish_ci, /* ctype */
- to_lower_latin5_turkish_ci, /* lower */
- to_upper_latin5_turkish_ci, /* upper */
+ to_lower_latin5_turkish_ci, /* to_lower */
+ to_upper_latin5_turkish_ci, /* to_upper */
sort_order_latin5_turkish_ci, /* sort_order */
NULL, /* uca */
- to_uni_latin5_turkish_ci, /* to_uni */
+ to_uni_latin5_turkish_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4205,11 +4343,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_armscii8_general_ci, /* ctype */
- to_lower_armscii8_general_ci, /* lower */
- to_upper_armscii8_general_ci, /* upper */
+ to_lower_armscii8_general_ci, /* to_lower */
+ to_upper_armscii8_general_ci, /* to_upper */
sort_order_armscii8_general_ci, /* sort_order */
NULL, /* uca */
- to_uni_armscii8_general_ci, /* to_uni */
+ to_uni_armscii8_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4238,11 +4376,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_cp866_general_ci, /* ctype */
- to_lower_cp866_general_ci, /* lower */
- to_upper_cp866_general_ci, /* upper */
+ to_lower_cp866_general_ci, /* to_lower */
+ to_upper_cp866_general_ci, /* to_upper */
sort_order_cp866_general_ci, /* sort_order */
NULL, /* uca */
- to_uni_cp866_general_ci, /* to_uni */
+ to_uni_cp866_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4271,11 +4409,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_keybcs2_general_ci, /* ctype */
- to_lower_keybcs2_general_ci, /* lower */
- to_upper_keybcs2_general_ci, /* upper */
+ to_lower_keybcs2_general_ci, /* to_lower */
+ to_upper_keybcs2_general_ci, /* to_upper */
sort_order_keybcs2_general_ci, /* sort_order */
NULL, /* uca */
- to_uni_keybcs2_general_ci, /* to_uni */
+ to_uni_keybcs2_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4304,11 +4442,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_macce_general_ci, /* ctype */
- to_lower_macce_general_ci, /* lower */
- to_upper_macce_general_ci, /* upper */
+ to_lower_macce_general_ci, /* to_lower */
+ to_upper_macce_general_ci, /* to_upper */
sort_order_macce_general_ci, /* sort_order */
NULL, /* uca */
- to_uni_macce_general_ci, /* to_uni */
+ to_uni_macce_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4337,11 +4475,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_macroman_general_ci, /* ctype */
- to_lower_macroman_general_ci, /* lower */
- to_upper_macroman_general_ci, /* upper */
+ to_lower_macroman_general_ci, /* to_lower */
+ to_upper_macroman_general_ci, /* to_upper */
sort_order_macroman_general_ci, /* sort_order */
NULL, /* uca */
- to_uni_macroman_general_ci, /* to_uni */
+ to_uni_macroman_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4370,11 +4508,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_cp852_general_ci, /* ctype */
- to_lower_cp852_general_ci, /* lower */
- to_upper_cp852_general_ci, /* upper */
+ to_lower_cp852_general_ci, /* to_lower */
+ to_upper_cp852_general_ci, /* to_upper */
sort_order_cp852_general_ci, /* sort_order */
NULL, /* uca */
- to_uni_cp852_general_ci, /* to_uni */
+ to_uni_cp852_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4403,11 +4541,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_latin7_general_ci, /* ctype */
- to_lower_latin7_general_ci, /* lower */
- to_upper_latin7_general_ci, /* upper */
+ to_lower_latin7_general_ci, /* to_lower */
+ to_upper_latin7_general_ci, /* to_upper */
sort_order_latin7_general_ci, /* sort_order */
NULL, /* uca */
- to_uni_latin7_general_ci, /* to_uni */
+ to_uni_latin7_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4436,11 +4574,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_latin7_general_ci, /* ctype */
- to_lower_latin7_general_ci, /* lower */
- to_upper_latin7_general_ci, /* upper */
+ to_lower_latin7_general_ci, /* to_lower */
+ to_upper_latin7_general_ci, /* to_upper */
sort_order_latin7_general_cs, /* sort_order */
NULL, /* uca */
- to_uni_latin7_general_ci, /* to_uni */
+ to_uni_latin7_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4469,11 +4607,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_macce_general_ci, /* ctype */
- to_lower_macce_general_ci, /* lower */
- to_upper_macce_general_ci, /* upper */
+ to_lower_macce_general_ci, /* to_lower */
+ to_upper_macce_general_ci, /* to_upper */
NULL, /* sort_order */
NULL, /* uca */
- to_uni_macce_general_ci, /* to_uni */
+ to_uni_macce_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4502,11 +4640,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_cp1250_general_ci, /* ctype */
- to_lower_cp1250_general_ci, /* lower */
- to_upper_cp1250_general_ci, /* upper */
+ to_lower_cp1250_general_ci, /* to_lower */
+ to_upper_cp1250_general_ci, /* to_upper */
sort_order_cp1250_croatian_ci, /* sort_order */
NULL, /* uca */
- to_uni_cp1250_general_ci, /* to_uni */
+ to_uni_cp1250_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4535,11 +4673,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_latin1_general_ci, /* ctype */
- to_lower_latin1_general_ci, /* lower */
- to_upper_latin1_general_ci, /* upper */
+ to_lower_latin1_general_ci, /* to_lower */
+ to_upper_latin1_general_ci, /* to_upper */
sort_order_latin1_general_ci, /* sort_order */
NULL, /* uca */
- to_uni_latin1_general_ci, /* to_uni */
+ to_uni_latin1_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4568,11 +4706,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_latin1_general_cs, /* ctype */
- to_lower_latin1_general_cs, /* lower */
- to_upper_latin1_general_cs, /* upper */
+ to_lower_latin1_general_cs, /* to_lower */
+ to_upper_latin1_general_cs, /* to_upper */
sort_order_latin1_general_cs, /* sort_order */
NULL, /* uca */
- to_uni_latin1_general_cs, /* to_uni */
+ to_uni_latin1_general_cs, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4601,11 +4739,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_cp1251_general_ci, /* ctype */
- to_lower_cp1251_general_ci, /* lower */
- to_upper_cp1251_general_ci, /* upper */
+ to_lower_cp1251_general_ci, /* to_lower */
+ to_upper_cp1251_general_ci, /* to_upper */
NULL, /* sort_order */
NULL, /* uca */
- to_uni_cp1251_general_ci, /* to_uni */
+ to_uni_cp1251_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4634,11 +4772,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_cp1251_general_ci, /* ctype */
- to_lower_cp1251_general_ci, /* lower */
- to_upper_cp1251_general_ci, /* upper */
+ to_lower_cp1251_general_ci, /* to_lower */
+ to_upper_cp1251_general_ci, /* to_upper */
sort_order_cp1251_general_ci, /* sort_order */
NULL, /* uca */
- to_uni_cp1251_general_ci, /* to_uni */
+ to_uni_cp1251_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4667,11 +4805,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_cp1251_general_ci, /* ctype */
- to_lower_cp1251_general_ci, /* lower */
- to_upper_cp1251_general_ci, /* upper */
+ to_lower_cp1251_general_ci, /* to_lower */
+ to_upper_cp1251_general_ci, /* to_upper */
sort_order_cp1251_general_cs, /* sort_order */
NULL, /* uca */
- to_uni_cp1251_general_ci, /* to_uni */
+ to_uni_cp1251_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4700,11 +4838,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_macroman_general_ci, /* ctype */
- to_lower_macroman_general_ci, /* lower */
- to_upper_macroman_general_ci, /* upper */
+ to_lower_macroman_general_ci, /* to_lower */
+ to_upper_macroman_general_ci, /* to_upper */
NULL, /* sort_order */
NULL, /* uca */
- to_uni_macroman_general_ci, /* to_uni */
+ to_uni_macroman_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4733,11 +4871,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_cp1256_general_ci, /* ctype */
- to_lower_cp1256_general_ci, /* lower */
- to_upper_cp1256_general_ci, /* upper */
+ to_lower_cp1256_general_ci, /* to_lower */
+ to_upper_cp1256_general_ci, /* to_upper */
sort_order_cp1256_general_ci, /* sort_order */
NULL, /* uca */
- to_uni_cp1256_general_ci, /* to_uni */
+ to_uni_cp1256_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4766,11 +4904,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_cp1257_general_ci, /* ctype */
- to_lower_cp1257_general_ci, /* lower */
- to_upper_cp1257_general_ci, /* upper */
+ to_lower_cp1257_general_ci, /* to_lower */
+ to_upper_cp1257_general_ci, /* to_upper */
NULL, /* sort_order */
NULL, /* uca */
- to_uni_cp1257_general_ci, /* to_uni */
+ to_uni_cp1257_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4799,11 +4937,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_cp1257_general_ci, /* ctype */
- to_lower_cp1257_general_ci, /* lower */
- to_upper_cp1257_general_ci, /* upper */
+ to_lower_cp1257_general_ci, /* to_lower */
+ to_upper_cp1257_general_ci, /* to_upper */
sort_order_cp1257_general_ci, /* sort_order */
NULL, /* uca */
- to_uni_cp1257_general_ci, /* to_uni */
+ to_uni_cp1257_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4832,11 +4970,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_armscii8_general_ci, /* ctype */
- to_lower_armscii8_general_ci, /* lower */
- to_upper_armscii8_general_ci, /* upper */
+ to_lower_armscii8_general_ci, /* to_lower */
+ to_upper_armscii8_general_ci, /* to_upper */
NULL, /* sort_order */
NULL, /* uca */
- to_uni_armscii8_general_ci, /* to_uni */
+ to_uni_armscii8_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4865,11 +5003,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_ascii_general_ci, /* ctype */
- to_lower_ascii_general_ci, /* lower */
- to_upper_ascii_general_ci, /* upper */
+ to_lower_ascii_general_ci, /* to_lower */
+ to_upper_ascii_general_ci, /* to_upper */
NULL, /* sort_order */
NULL, /* uca */
- to_uni_ascii_general_ci, /* to_uni */
+ to_uni_ascii_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4898,11 +5036,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_cp1250_general_ci, /* ctype */
- to_lower_cp1250_general_ci, /* lower */
- to_upper_cp1250_general_ci, /* upper */
+ to_lower_cp1250_general_ci, /* to_lower */
+ to_upper_cp1250_general_ci, /* to_upper */
NULL, /* sort_order */
NULL, /* uca */
- to_uni_cp1250_general_ci, /* to_uni */
+ to_uni_cp1250_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4931,11 +5069,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_cp1256_general_ci, /* ctype */
- to_lower_cp1256_general_ci, /* lower */
- to_upper_cp1256_general_ci, /* upper */
+ to_lower_cp1256_general_ci, /* to_lower */
+ to_upper_cp1256_general_ci, /* to_upper */
NULL, /* sort_order */
NULL, /* uca */
- to_uni_cp1256_general_ci, /* to_uni */
+ to_uni_cp1256_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4964,11 +5102,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_cp866_general_ci, /* ctype */
- to_lower_cp866_general_ci, /* lower */
- to_upper_cp866_general_ci, /* upper */
+ to_lower_cp866_general_ci, /* to_lower */
+ to_upper_cp866_general_ci, /* to_upper */
NULL, /* sort_order */
NULL, /* uca */
- to_uni_cp866_general_ci, /* to_uni */
+ to_uni_cp866_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -4997,11 +5135,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_dec8_swedish_ci, /* ctype */
- to_lower_dec8_swedish_ci, /* lower */
- to_upper_dec8_swedish_ci, /* upper */
+ to_lower_dec8_swedish_ci, /* to_lower */
+ to_upper_dec8_swedish_ci, /* to_upper */
NULL, /* sort_order */
NULL, /* uca */
- to_uni_dec8_swedish_ci, /* to_uni */
+ to_uni_dec8_swedish_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -5030,11 +5168,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_greek_general_ci, /* ctype */
- to_lower_greek_general_ci, /* lower */
- to_upper_greek_general_ci, /* upper */
+ to_lower_greek_general_ci, /* to_lower */
+ to_upper_greek_general_ci, /* to_upper */
NULL, /* sort_order */
NULL, /* uca */
- to_uni_greek_general_ci, /* to_uni */
+ to_uni_greek_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -5063,11 +5201,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_hebrew_general_ci, /* ctype */
- to_lower_hebrew_general_ci, /* lower */
- to_upper_hebrew_general_ci, /* upper */
+ to_lower_hebrew_general_ci, /* to_lower */
+ to_upper_hebrew_general_ci, /* to_upper */
NULL, /* sort_order */
NULL, /* uca */
- to_uni_hebrew_general_ci, /* to_uni */
+ to_uni_hebrew_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -5096,11 +5234,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_hp8_english_ci, /* ctype */
- to_lower_hp8_english_ci, /* lower */
- to_upper_hp8_english_ci, /* upper */
+ to_lower_hp8_english_ci, /* to_lower */
+ to_upper_hp8_english_ci, /* to_upper */
NULL, /* sort_order */
NULL, /* uca */
- to_uni_hp8_english_ci, /* to_uni */
+ to_uni_hp8_english_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -5129,11 +5267,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_keybcs2_general_ci, /* ctype */
- to_lower_keybcs2_general_ci, /* lower */
- to_upper_keybcs2_general_ci, /* upper */
+ to_lower_keybcs2_general_ci, /* to_lower */
+ to_upper_keybcs2_general_ci, /* to_upper */
NULL, /* sort_order */
NULL, /* uca */
- to_uni_keybcs2_general_ci, /* to_uni */
+ to_uni_keybcs2_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -5162,11 +5300,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_koi8r_general_ci, /* ctype */
- to_lower_koi8r_general_ci, /* lower */
- to_upper_koi8r_general_ci, /* upper */
+ to_lower_koi8r_general_ci, /* to_lower */
+ to_upper_koi8r_general_ci, /* to_upper */
NULL, /* sort_order */
NULL, /* uca */
- to_uni_koi8r_general_ci, /* to_uni */
+ to_uni_koi8r_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -5195,11 +5333,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_koi8u_general_ci, /* ctype */
- to_lower_koi8u_general_ci, /* lower */
- to_upper_koi8u_general_ci, /* upper */
+ to_lower_koi8u_general_ci, /* to_lower */
+ to_upper_koi8u_general_ci, /* to_upper */
NULL, /* sort_order */
NULL, /* uca */
- to_uni_koi8u_general_ci, /* to_uni */
+ to_uni_koi8u_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -5228,11 +5366,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_latin2_general_ci, /* ctype */
- to_lower_latin2_general_ci, /* lower */
- to_upper_latin2_general_ci, /* upper */
+ to_lower_latin2_general_ci, /* to_lower */
+ to_upper_latin2_general_ci, /* to_upper */
NULL, /* sort_order */
NULL, /* uca */
- to_uni_latin2_general_ci, /* to_uni */
+ to_uni_latin2_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -5261,11 +5399,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_latin5_turkish_ci, /* ctype */
- to_lower_latin5_turkish_ci, /* lower */
- to_upper_latin5_turkish_ci, /* upper */
+ to_lower_latin5_turkish_ci, /* to_lower */
+ to_upper_latin5_turkish_ci, /* to_upper */
NULL, /* sort_order */
NULL, /* uca */
- to_uni_latin5_turkish_ci, /* to_uni */
+ to_uni_latin5_turkish_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -5294,11 +5432,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_latin7_general_ci, /* ctype */
- to_lower_latin7_general_ci, /* lower */
- to_upper_latin7_general_ci, /* upper */
+ to_lower_latin7_general_ci, /* to_lower */
+ to_upper_latin7_general_ci, /* to_upper */
NULL, /* sort_order */
NULL, /* uca */
- to_uni_latin7_general_ci, /* to_uni */
+ to_uni_latin7_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -5327,11 +5465,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_cp850_general_ci, /* ctype */
- to_lower_cp850_general_ci, /* lower */
- to_upper_cp850_general_ci, /* upper */
+ to_lower_cp850_general_ci, /* to_lower */
+ to_upper_cp850_general_ci, /* to_upper */
NULL, /* sort_order */
NULL, /* uca */
- to_uni_cp850_general_ci, /* to_uni */
+ to_uni_cp850_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -5360,11 +5498,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_cp852_general_ci, /* ctype */
- to_lower_cp852_general_ci, /* lower */
- to_upper_cp852_general_ci, /* upper */
+ to_lower_cp852_general_ci, /* to_lower */
+ to_upper_cp852_general_ci, /* to_upper */
NULL, /* sort_order */
NULL, /* uca */
- to_uni_cp852_general_ci, /* to_uni */
+ to_uni_cp852_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -5393,11 +5531,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_swe7_swedish_ci, /* ctype */
- to_lower_swe7_swedish_ci, /* lower */
- to_upper_swe7_swedish_ci, /* upper */
+ to_lower_swe7_swedish_ci, /* to_lower */
+ to_upper_swe7_swedish_ci, /* to_upper */
NULL, /* sort_order */
NULL, /* uca */
- to_uni_swe7_swedish_ci, /* to_uni */
+ to_uni_swe7_swedish_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -5426,11 +5564,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_geostd8_general_ci, /* ctype */
- to_lower_geostd8_general_ci, /* lower */
- to_upper_geostd8_general_ci, /* upper */
+ to_lower_geostd8_general_ci, /* to_lower */
+ to_upper_geostd8_general_ci, /* to_upper */
sort_order_geostd8_general_ci, /* sort_order */
NULL, /* uca */
- to_uni_geostd8_general_ci, /* to_uni */
+ to_uni_geostd8_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -5459,11 +5597,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_geostd8_general_ci, /* ctype */
- to_lower_geostd8_general_ci, /* lower */
- to_upper_geostd8_general_ci, /* upper */
+ to_lower_geostd8_general_ci, /* to_lower */
+ to_upper_geostd8_general_ci, /* to_upper */
NULL, /* sort_order */
NULL, /* uca */
- to_uni_geostd8_general_ci, /* to_uni */
+ to_uni_geostd8_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -5492,11 +5630,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_latin1_spanish_ci, /* ctype */
- to_lower_latin1_spanish_ci, /* lower */
- to_upper_latin1_spanish_ci, /* upper */
+ to_lower_latin1_spanish_ci, /* to_lower */
+ to_upper_latin1_spanish_ci, /* to_upper */
sort_order_latin1_spanish_ci, /* sort_order */
NULL, /* uca */
- to_uni_latin1_spanish_ci, /* to_uni */
+ to_uni_latin1_spanish_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -5525,11 +5663,11 @@ struct charset_info_st compiled_charsets[] = {
"", /* comment */
NULL, /* tailoring */
ctype_cp1250_general_ci, /* ctype */
- to_lower_cp1250_general_ci, /* lower */
- to_upper_cp1250_general_ci, /* upper */
+ to_lower_cp1250_general_ci, /* to_lower */
+ to_upper_cp1250_general_ci, /* to_upper */
sort_order_cp1250_polish_ci, /* sort_order */
NULL, /* uca */
- to_uni_cp1250_general_ci, /* to_uni */
+ to_uni_cp1250_general_ci, /* to_uni */
NULL, /* from_uni */
&my_unicase_default, /* caseinfo */
NULL, /* state map */
@@ -5549,6 +5687,1524 @@ struct charset_info_st compiled_charsets[] = {
}
,
#endif
+#ifdef HAVE_CHARSET_dec8
+{
+ 1027,0,0,
+ MY_CS_COMPILED|MY_CS_NOPAD,
+ "dec8", /* cset name */
+ "dec8_swedish_nopad_ci", /* coll name */
+ "", /* comment */
+ "[import dec8_swedish_ci]", /* tailoring */
+ ctype_dec8_swedish_ci, /* ctype */
+ to_lower_dec8_swedish_ci, /* to_lower */
+ to_upper_dec8_swedish_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_dec8_swedish_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_simple_nopad_ci_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_cp850
+{
+ 1028,0,0,
+ MY_CS_COMPILED|MY_CS_NOPAD,
+ "cp850", /* cset name */
+ "cp850_general_nopad_ci", /* coll name */
+ "", /* comment */
+ "[import cp850_general_ci]", /* tailoring */
+ ctype_cp850_general_ci, /* ctype */
+ to_lower_cp850_general_ci, /* to_lower */
+ to_upper_cp850_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_cp850_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_simple_nopad_ci_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_hp8
+{
+ 1030,0,0,
+ MY_CS_COMPILED|MY_CS_NOPAD,
+ "hp8", /* cset name */
+ "hp8_english_nopad_ci", /* coll name */
+ "", /* comment */
+ "[import hp8_english_ci]", /* tailoring */
+ ctype_hp8_english_ci, /* ctype */
+ to_lower_hp8_english_ci, /* to_lower */
+ to_upper_hp8_english_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_hp8_english_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_simple_nopad_ci_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_koi8r
+{
+ 1031,0,0,
+ MY_CS_COMPILED|MY_CS_NOPAD,
+ "koi8r", /* cset name */
+ "koi8r_general_nopad_ci", /* coll name */
+ "", /* comment */
+ "[import koi8r_general_ci]", /* tailoring */
+ ctype_koi8r_general_ci, /* ctype */
+ to_lower_koi8r_general_ci, /* to_lower */
+ to_upper_koi8r_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_koi8r_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_simple_nopad_ci_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_latin2
+{
+ 1033,0,0,
+ MY_CS_COMPILED|MY_CS_NOPAD,
+ "latin2", /* cset name */
+ "latin2_general_nopad_ci", /* coll name */
+ "", /* comment */
+ "[import latin2_general_ci]", /* tailoring */
+ ctype_latin2_general_ci, /* ctype */
+ to_lower_latin2_general_ci, /* to_lower */
+ to_upper_latin2_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_latin2_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_simple_nopad_ci_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_swe7
+{
+ 1034,0,0,
+ MY_CS_COMPILED|MY_CS_NONASCII|MY_CS_NOPAD,
+ "swe7", /* cset name */
+ "swe7_swedish_nopad_ci", /* coll name */
+ "", /* comment */
+ "[import swe7_swedish_ci]", /* tailoring */
+ ctype_swe7_swedish_ci, /* ctype */
+ to_lower_swe7_swedish_ci, /* to_lower */
+ to_upper_swe7_swedish_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_swe7_swedish_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_simple_nopad_ci_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_ascii
+{
+ 1035,0,0,
+ MY_CS_COMPILED|MY_CS_PUREASCII|MY_CS_NOPAD,
+ "ascii", /* cset name */
+ "ascii_general_nopad_ci", /* coll name */
+ "", /* comment */
+ "[import ascii_general_ci]", /* tailoring */
+ ctype_ascii_general_ci, /* ctype */
+ to_lower_ascii_general_ci, /* to_lower */
+ to_upper_ascii_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_ascii_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_simple_nopad_ci_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_hebrew
+{
+ 1040,0,0,
+ MY_CS_COMPILED|MY_CS_NOPAD,
+ "hebrew", /* cset name */
+ "hebrew_general_nopad_ci", /* coll name */
+ "", /* comment */
+ "[import hebrew_general_ci]", /* tailoring */
+ ctype_hebrew_general_ci, /* ctype */
+ to_lower_hebrew_general_ci, /* to_lower */
+ to_upper_hebrew_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_hebrew_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_simple_nopad_ci_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_koi8u
+{
+ 1046,0,0,
+ MY_CS_COMPILED|MY_CS_NOPAD,
+ "koi8u", /* cset name */
+ "koi8u_general_nopad_ci", /* coll name */
+ "", /* comment */
+ "[import koi8u_general_ci]", /* tailoring */
+ ctype_koi8u_general_ci, /* ctype */
+ to_lower_koi8u_general_ci, /* to_lower */
+ to_upper_koi8u_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_koi8u_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_simple_nopad_ci_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_greek
+{
+ 1049,0,0,
+ MY_CS_COMPILED|MY_CS_NOPAD,
+ "greek", /* cset name */
+ "greek_general_nopad_ci", /* coll name */
+ "", /* comment */
+ "[import greek_general_ci]", /* tailoring */
+ ctype_greek_general_ci, /* ctype */
+ to_lower_greek_general_ci, /* to_lower */
+ to_upper_greek_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_greek_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_simple_nopad_ci_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_cp1250
+{
+ 1050,0,0,
+ MY_CS_COMPILED|MY_CS_NOPAD,
+ "cp1250", /* cset name */
+ "cp1250_general_nopad_ci", /* coll name */
+ "", /* comment */
+ "[import cp1250_general_ci]", /* tailoring */
+ ctype_cp1250_general_ci, /* ctype */
+ to_lower_cp1250_general_ci, /* to_lower */
+ to_upper_cp1250_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_cp1250_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_simple_nopad_ci_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_latin5
+{
+ 1054,0,0,
+ MY_CS_COMPILED|MY_CS_NOPAD,
+ "latin5", /* cset name */
+ "latin5_turkish_nopad_ci", /* coll name */
+ "", /* comment */
+ "[import latin5_turkish_ci]", /* tailoring */
+ ctype_latin5_turkish_ci, /* ctype */
+ to_lower_latin5_turkish_ci, /* to_lower */
+ to_upper_latin5_turkish_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_latin5_turkish_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_simple_nopad_ci_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_armscii8
+{
+ 1056,0,0,
+ MY_CS_COMPILED|MY_CS_NOPAD,
+ "armscii8", /* cset name */
+ "armscii8_general_nopad_ci", /* coll name */
+ "", /* comment */
+ "[import armscii8_general_ci]", /* tailoring */
+ ctype_armscii8_general_ci, /* ctype */
+ to_lower_armscii8_general_ci, /* to_lower */
+ to_upper_armscii8_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_armscii8_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_simple_nopad_ci_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_cp866
+{
+ 1060,0,0,
+ MY_CS_COMPILED|MY_CS_NOPAD,
+ "cp866", /* cset name */
+ "cp866_general_nopad_ci", /* coll name */
+ "", /* comment */
+ "[import cp866_general_ci]", /* tailoring */
+ ctype_cp866_general_ci, /* ctype */
+ to_lower_cp866_general_ci, /* to_lower */
+ to_upper_cp866_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_cp866_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_simple_nopad_ci_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_keybcs2
+{
+ 1061,0,0,
+ MY_CS_COMPILED|MY_CS_NOPAD,
+ "keybcs2", /* cset name */
+ "keybcs2_general_nopad_ci", /* coll name */
+ "", /* comment */
+ "[import keybcs2_general_ci]", /* tailoring */
+ ctype_keybcs2_general_ci, /* ctype */
+ to_lower_keybcs2_general_ci, /* to_lower */
+ to_upper_keybcs2_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_keybcs2_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_simple_nopad_ci_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_macce
+{
+ 1062,0,0,
+ MY_CS_COMPILED|MY_CS_NOPAD,
+ "macce", /* cset name */
+ "macce_general_nopad_ci", /* coll name */
+ "", /* comment */
+ "[import macce_general_ci]", /* tailoring */
+ ctype_macce_general_ci, /* ctype */
+ to_lower_macce_general_ci, /* to_lower */
+ to_upper_macce_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_macce_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_simple_nopad_ci_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_macroman
+{
+ 1063,0,0,
+ MY_CS_COMPILED|MY_CS_NOPAD,
+ "macroman", /* cset name */
+ "macroman_general_nopad_ci", /* coll name */
+ "", /* comment */
+ "[import macroman_general_ci]", /* tailoring */
+ ctype_macroman_general_ci, /* ctype */
+ to_lower_macroman_general_ci, /* to_lower */
+ to_upper_macroman_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_macroman_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_simple_nopad_ci_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_cp852
+{
+ 1064,0,0,
+ MY_CS_COMPILED|MY_CS_NOPAD,
+ "cp852", /* cset name */
+ "cp852_general_nopad_ci", /* coll name */
+ "", /* comment */
+ "[import cp852_general_ci]", /* tailoring */
+ ctype_cp852_general_ci, /* ctype */
+ to_lower_cp852_general_ci, /* to_lower */
+ to_upper_cp852_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_cp852_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_simple_nopad_ci_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_latin7
+{
+ 1065,0,0,
+ MY_CS_COMPILED|MY_CS_NOPAD,
+ "latin7", /* cset name */
+ "latin7_general_nopad_ci", /* coll name */
+ "", /* comment */
+ "[import latin7_general_ci]", /* tailoring */
+ ctype_latin7_general_ci, /* ctype */
+ to_lower_latin7_general_ci, /* to_lower */
+ to_upper_latin7_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_latin7_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_simple_nopad_ci_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_macce
+{
+ 1067,0,0,
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD,
+ "macce", /* cset name */
+ "macce_nopad_bin", /* coll name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_macce_general_ci, /* ctype */
+ to_lower_macce_general_ci, /* to_lower */
+ to_upper_macce_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_macce_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_nopad_bin_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_cp1251
+{
+ 1074,0,0,
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD,
+ "cp1251", /* cset name */
+ "cp1251_nopad_bin", /* coll name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_cp1251_general_ci, /* ctype */
+ to_lower_cp1251_general_ci, /* to_lower */
+ to_upper_cp1251_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_cp1251_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_nopad_bin_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_cp1251
+{
+ 1075,0,0,
+ MY_CS_COMPILED|MY_CS_NOPAD,
+ "cp1251", /* cset name */
+ "cp1251_general_nopad_ci", /* coll name */
+ "", /* comment */
+ "[import cp1251_general_ci]", /* tailoring */
+ ctype_cp1251_general_ci, /* ctype */
+ to_lower_cp1251_general_ci, /* to_lower */
+ to_upper_cp1251_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_cp1251_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_simple_nopad_ci_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_macroman
+{
+ 1077,0,0,
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD,
+ "macroman", /* cset name */
+ "macroman_nopad_bin", /* coll name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_macroman_general_ci, /* ctype */
+ to_lower_macroman_general_ci, /* to_lower */
+ to_upper_macroman_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_macroman_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_nopad_bin_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_cp1256
+{
+ 1081,0,0,
+ MY_CS_COMPILED|MY_CS_NOPAD,
+ "cp1256", /* cset name */
+ "cp1256_general_nopad_ci", /* coll name */
+ "", /* comment */
+ "[import cp1256_general_ci]", /* tailoring */
+ ctype_cp1256_general_ci, /* ctype */
+ to_lower_cp1256_general_ci, /* to_lower */
+ to_upper_cp1256_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_cp1256_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_simple_nopad_ci_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_cp1257
+{
+ 1082,0,0,
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD,
+ "cp1257", /* cset name */
+ "cp1257_nopad_bin", /* coll name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_cp1257_general_ci, /* ctype */
+ to_lower_cp1257_general_ci, /* to_lower */
+ to_upper_cp1257_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_cp1257_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_nopad_bin_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_cp1257
+{
+ 1083,0,0,
+ MY_CS_COMPILED|MY_CS_NOPAD,
+ "cp1257", /* cset name */
+ "cp1257_general_nopad_ci", /* coll name */
+ "", /* comment */
+ "[import cp1257_general_ci]", /* tailoring */
+ ctype_cp1257_general_ci, /* ctype */
+ to_lower_cp1257_general_ci, /* to_lower */
+ to_upper_cp1257_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_cp1257_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_simple_nopad_ci_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_armscii8
+{
+ 1088,0,0,
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD,
+ "armscii8", /* cset name */
+ "armscii8_nopad_bin", /* coll name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_armscii8_general_ci, /* ctype */
+ to_lower_armscii8_general_ci, /* to_lower */
+ to_upper_armscii8_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_armscii8_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_nopad_bin_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_ascii
+{
+ 1089,0,0,
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_PUREASCII|MY_CS_NOPAD,
+ "ascii", /* cset name */
+ "ascii_nopad_bin", /* coll name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_ascii_general_ci, /* ctype */
+ to_lower_ascii_general_ci, /* to_lower */
+ to_upper_ascii_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_ascii_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_nopad_bin_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_cp1250
+{
+ 1090,0,0,
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD,
+ "cp1250", /* cset name */
+ "cp1250_nopad_bin", /* coll name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_cp1250_general_ci, /* ctype */
+ to_lower_cp1250_general_ci, /* to_lower */
+ to_upper_cp1250_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_cp1250_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_nopad_bin_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_cp1256
+{
+ 1091,0,0,
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD,
+ "cp1256", /* cset name */
+ "cp1256_nopad_bin", /* coll name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_cp1256_general_ci, /* ctype */
+ to_lower_cp1256_general_ci, /* to_lower */
+ to_upper_cp1256_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_cp1256_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_nopad_bin_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_cp866
+{
+ 1092,0,0,
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD,
+ "cp866", /* cset name */
+ "cp866_nopad_bin", /* coll name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_cp866_general_ci, /* ctype */
+ to_lower_cp866_general_ci, /* to_lower */
+ to_upper_cp866_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_cp866_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_nopad_bin_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_dec8
+{
+ 1093,0,0,
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD,
+ "dec8", /* cset name */
+ "dec8_nopad_bin", /* coll name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_dec8_swedish_ci, /* ctype */
+ to_lower_dec8_swedish_ci, /* to_lower */
+ to_upper_dec8_swedish_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_dec8_swedish_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_nopad_bin_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_greek
+{
+ 1094,0,0,
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD,
+ "greek", /* cset name */
+ "greek_nopad_bin", /* coll name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_greek_general_ci, /* ctype */
+ to_lower_greek_general_ci, /* to_lower */
+ to_upper_greek_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_greek_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_nopad_bin_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_hebrew
+{
+ 1095,0,0,
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD,
+ "hebrew", /* cset name */
+ "hebrew_nopad_bin", /* coll name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_hebrew_general_ci, /* ctype */
+ to_lower_hebrew_general_ci, /* to_lower */
+ to_upper_hebrew_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_hebrew_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_nopad_bin_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_hp8
+{
+ 1096,0,0,
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD,
+ "hp8", /* cset name */
+ "hp8_nopad_bin", /* coll name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_hp8_english_ci, /* ctype */
+ to_lower_hp8_english_ci, /* to_lower */
+ to_upper_hp8_english_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_hp8_english_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_nopad_bin_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_keybcs2
+{
+ 1097,0,0,
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD,
+ "keybcs2", /* cset name */
+ "keybcs2_nopad_bin", /* coll name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_keybcs2_general_ci, /* ctype */
+ to_lower_keybcs2_general_ci, /* to_lower */
+ to_upper_keybcs2_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_keybcs2_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_nopad_bin_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_koi8r
+{
+ 1098,0,0,
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD,
+ "koi8r", /* cset name */
+ "koi8r_nopad_bin", /* coll name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_koi8r_general_ci, /* ctype */
+ to_lower_koi8r_general_ci, /* to_lower */
+ to_upper_koi8r_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_koi8r_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_nopad_bin_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_koi8u
+{
+ 1099,0,0,
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD,
+ "koi8u", /* cset name */
+ "koi8u_nopad_bin", /* coll name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_koi8u_general_ci, /* ctype */
+ to_lower_koi8u_general_ci, /* to_lower */
+ to_upper_koi8u_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_koi8u_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_nopad_bin_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_latin2
+{
+ 1101,0,0,
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD,
+ "latin2", /* cset name */
+ "latin2_nopad_bin", /* coll name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_latin2_general_ci, /* ctype */
+ to_lower_latin2_general_ci, /* to_lower */
+ to_upper_latin2_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_latin2_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_nopad_bin_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_latin5
+{
+ 1102,0,0,
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD,
+ "latin5", /* cset name */
+ "latin5_nopad_bin", /* coll name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_latin5_turkish_ci, /* ctype */
+ to_lower_latin5_turkish_ci, /* to_lower */
+ to_upper_latin5_turkish_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_latin5_turkish_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_nopad_bin_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_latin7
+{
+ 1103,0,0,
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD,
+ "latin7", /* cset name */
+ "latin7_nopad_bin", /* coll name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_latin7_general_ci, /* ctype */
+ to_lower_latin7_general_ci, /* to_lower */
+ to_upper_latin7_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_latin7_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_nopad_bin_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_cp850
+{
+ 1104,0,0,
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD,
+ "cp850", /* cset name */
+ "cp850_nopad_bin", /* coll name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_cp850_general_ci, /* ctype */
+ to_lower_cp850_general_ci, /* to_lower */
+ to_upper_cp850_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_cp850_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_nopad_bin_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_cp852
+{
+ 1105,0,0,
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD,
+ "cp852", /* cset name */
+ "cp852_nopad_bin", /* coll name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_cp852_general_ci, /* ctype */
+ to_lower_cp852_general_ci, /* to_lower */
+ to_upper_cp852_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_cp852_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_nopad_bin_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_swe7
+{
+ 1106,0,0,
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NONASCII|MY_CS_NOPAD,
+ "swe7", /* cset name */
+ "swe7_nopad_bin", /* coll name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_swe7_swedish_ci, /* ctype */
+ to_lower_swe7_swedish_ci, /* to_lower */
+ to_upper_swe7_swedish_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_swe7_swedish_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_nopad_bin_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_geostd8
+{
+ 1116,0,0,
+ MY_CS_COMPILED|MY_CS_NOPAD,
+ "geostd8", /* cset name */
+ "geostd8_general_nopad_ci", /* coll name */
+ "", /* comment */
+ "[import geostd8_general_ci]", /* tailoring */
+ ctype_geostd8_general_ci, /* ctype */
+ to_lower_geostd8_general_ci, /* to_lower */
+ to_upper_geostd8_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_geostd8_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_simple_nopad_ci_handler,
+}
+,
+#endif
+#ifdef HAVE_CHARSET_geostd8
+{
+ 1117,0,0,
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD,
+ "geostd8", /* cset name */
+ "geostd8_nopad_bin", /* coll name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_geostd8_general_ci, /* ctype */
+ to_lower_geostd8_general_ci, /* to_lower */
+ to_upper_geostd8_general_ci, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* uca */
+ to_uni_geostd8_general_ci, /* to_uni */
+ NULL, /* from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state map */
+ NULL, /* ident map */
+ 1, /* strxfrm_multiply*/
+ 1, /* caseup_multiply*/
+ 1, /* casedn_multiply*/
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad_char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_8bit_handler,
+ &my_collation_8bit_nopad_bin_handler,
+}
+,
+#endif
{
0,0,0,
MY_CS_COMPILED,
diff --git a/strings/ctype-gb2312.c b/strings/ctype-gb2312.c
index dbb92fabc4b..832c6c7f038 100644
--- a/strings/ctype-gb2312.c
+++ b/strings/ctype-gb2312.c
@@ -6343,6 +6343,20 @@ my_mb_wc_gb2312(CHARSET_INFO *cs __attribute__((unused)),
#include "strcoll.ic"
+#define DEFINE_STRNNCOLLSP_NOPAD
+#define MY_FUNCTION_NAME(x) my_ ## x ## _gb2312_chinese_nopad_ci
+#define WEIGHT_MB1(x) (sort_order_gb2312[(uchar) (x)])
+#define WEIGHT_MB2(x,y) (gb2312code(x, y))
+#include "strcoll.ic"
+
+
+#define DEFINE_STRNNCOLLSP_NOPAD
+#define MY_FUNCTION_NAME(x) my_ ## x ## _gb2312_nopad_bin
+#define WEIGHT_MB1(x) ((uchar) (x))
+#define WEIGHT_MB2(x,y) (gb2312code(x, y))
+#include "strcoll.ic"
+
+
static MY_COLLATION_HANDLER my_collation_handler_gb2312_chinese_ci=
{
NULL, /* init */
@@ -6375,6 +6389,37 @@ static MY_COLLATION_HANDLER my_collation_handler_gb2312_bin=
};
+static MY_COLLATION_HANDLER my_collation_handler_gb2312_chinese_nopad_ci=
+{
+ NULL, /* init */
+ my_strnncoll_gb2312_chinese_ci,
+ my_strnncollsp_gb2312_chinese_nopad_ci,
+ my_strnxfrm_mb_nopad,
+ my_strnxfrmlen_simple,
+ my_like_range_mb,
+ my_wildcmp_mb,
+ my_strcasecmp_mb,
+ my_instr_mb,
+ my_hash_sort_simple_nopad,
+ my_propagate_simple
+};
+
+
+static MY_COLLATION_HANDLER my_collation_handler_gb2312_nopad_bin=
+{
+ NULL, /* init */
+ my_strnncoll_gb2312_bin,
+ my_strnncollsp_gb2312_nopad_bin,
+ my_strnxfrm_mb_nopad,
+ my_strnxfrmlen_simple,
+ my_like_range_mb,
+ my_wildcmp_mb_bin,
+ my_strcasecmp_mb_bin,
+ my_instr_mb,
+ my_hash_sort_mb_nopad_bin,
+ my_propagate_simple
+};
+
static MY_CHARSET_HANDLER my_charset_handler=
{
@@ -6475,4 +6520,70 @@ struct charset_info_st my_charset_gb2312_bin=
&my_collation_handler_gb2312_bin
};
+
+struct charset_info_st my_charset_gb2312_chinese_nopad_ci=
+{
+ MY_NOPAD_ID(24),0,0,/* number */
+ MY_CS_COMPILED|MY_CS_NOPAD, /* state */
+ "gb2312", /* cs name */
+ "gb2312_chinese_nopad_ci",/* name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_gb2312,
+ to_lower_gb2312,
+ to_upper_gb2312,
+ sort_order_gb2312,
+ NULL, /* uca */
+ NULL, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ &my_caseinfo_gb2312,/* caseinfo */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 1, /* mbminlen */
+ 2, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 0xF7FE, /* max_sort_char */
+ ' ', /* pad char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_handler,
+ &my_collation_handler_gb2312_chinese_nopad_ci
+};
+
+
+struct charset_info_st my_charset_gb2312_nopad_bin=
+{
+ MY_NOPAD_ID(86),0,0,/* number */
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, /* state */
+ "gb2312", /* cs name */
+ "gb2312_nopad_bin", /* name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_gb2312,
+ to_lower_gb2312,
+ to_upper_gb2312,
+ NULL, /* sort_order */
+ NULL, /* uca */
+ NULL, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ &my_caseinfo_gb2312,/* caseinfo */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 1, /* mbminlen */
+ 2, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 0xF7FE, /* max_sort_char */
+ ' ', /* pad char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_handler,
+ &my_collation_handler_gb2312_nopad_bin
+};
+
#endif
diff --git a/strings/ctype-gbk.c b/strings/ctype-gbk.c
index 617d72dc4d9..d24b77950c2 100644
--- a/strings/ctype-gbk.c
+++ b/strings/ctype-gbk.c
@@ -10625,6 +10625,21 @@ my_mb_wc_gbk(CHARSET_INFO *cs __attribute__((unused)),
#include "strcoll.ic"
+#define DEFINE_STRNNCOLLSP_NOPAD
+#define MY_FUNCTION_NAME(x) my_ ## x ## _gbk_chinese_nopad_ci
+#define WEIGHT_MB1(x) (sort_order_gbk[(uchar) (x)])
+#define WEIGHT_MB2(x,y) (gbksortorder(gbkcode(x,y)))
+#define DEFINE_STRNXFRM
+#include "strcoll.ic"
+
+
+#define DEFINE_STRNNCOLLSP_NOPAD
+#define MY_FUNCTION_NAME(x) my_ ## x ## _gbk_nopad_bin
+#define WEIGHT_MB1(x) ((uchar) (x))
+#define WEIGHT_MB2(x,y) (gbkcode(x,y))
+#include "strcoll.ic"
+
+
static MY_COLLATION_HANDLER my_collation_handler_gbk_chinese_ci=
{
NULL, /* init */
@@ -10657,6 +10672,36 @@ static MY_COLLATION_HANDLER my_collation_handler_gbk_bin=
};
+static MY_COLLATION_HANDLER my_collation_handler_gbk_chinese_nopad_ci=
+{
+ NULL, /* init */
+ my_strnncoll_gbk_chinese_ci,
+ my_strnncollsp_gbk_chinese_nopad_ci,
+ my_strnxfrm_gbk_chinese_nopad_ci,
+ my_strnxfrmlen_simple,
+ my_like_range_mb,
+ my_wildcmp_mb,
+ my_strcasecmp_mb,
+ my_instr_mb,
+ my_hash_sort_simple_nopad,
+ my_propagate_simple
+};
+
+
+static MY_COLLATION_HANDLER my_collation_handler_gbk_nopad_bin=
+{
+ NULL, /* init */
+ my_strnncoll_gbk_bin,
+ my_strnncollsp_gbk_nopad_bin,
+ my_strnxfrm_mb_nopad,
+ my_strnxfrmlen_simple,
+ my_like_range_mb,
+ my_wildcmp_mb_bin,
+ my_strcasecmp_mb_bin,
+ my_instr_mb,
+ my_hash_sort_mb_nopad_bin,
+ my_propagate_simple
+};
static MY_CHARSET_HANDLER my_charset_handler=
{
@@ -10757,4 +10802,68 @@ struct charset_info_st my_charset_gbk_bin=
};
+struct charset_info_st my_charset_gbk_chinese_nopad_ci=
+{
+ MY_NOPAD_ID(28),0,0,/* number */
+ MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_NOPAD, /* state */
+ "gbk", /* cs name */
+ "gbk_chinese_nopad_ci",/* name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_gbk,
+ to_lower_gbk,
+ to_upper_gbk,
+ sort_order_gbk,
+ NULL, /* uca */
+ NULL, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ &my_caseinfo_gbk, /* caseinfo */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 1, /* mbminlen */
+ 2, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 0xA967, /* max_sort_char */
+ ' ', /* pad char */
+ 1, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_handler,
+ &my_collation_handler_gbk_chinese_nopad_ci
+};
+
+struct charset_info_st my_charset_gbk_nopad_bin=
+{
+ MY_NOPAD_ID(87),0,0,/* number */
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, /* state */
+ "gbk", /* cs name */
+ "gbk_nopad_bin", /* name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_gbk,
+ to_lower_gbk,
+ to_upper_gbk,
+ NULL, /* sort_order */
+ NULL, /* uca */
+ NULL, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ &my_caseinfo_gbk, /* caseinfo */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 1, /* mbminlen */
+ 2, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 0xFEFE, /* max_sort_char */
+ ' ', /* pad char */
+ 1, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_handler,
+ &my_collation_handler_gbk_nopad_bin
+};
+
#endif
diff --git a/strings/ctype-latin1.c b/strings/ctype-latin1.c
index fe255349530..6f71c7a0c76 100644
--- a/strings/ctype-latin1.c
+++ b/strings/ctype-latin1.c
@@ -460,6 +460,39 @@ struct charset_info_st my_charset_latin1=
};
+struct charset_info_st my_charset_latin1_nopad=
+{
+ MY_NOPAD_ID(8),0,0, /* number */
+ MY_CS_COMPILED | MY_CS_NOPAD, /* state */
+ "latin1", /* cs name */
+ "latin1_swedish_nopad_ci", /* name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_latin1,
+ to_lower_latin1,
+ to_upper_latin1,
+ sort_order_latin1,
+ NULL, /* uca */
+ cs_to_uni, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_handler,
+ &my_collation_8bit_simple_nopad_ci_handler
+};
+
+
/*
@@ -770,3 +803,36 @@ struct charset_info_st my_charset_latin1_bin=
&my_collation_8bit_bin_handler
};
+
+struct charset_info_st my_charset_latin1_nopad_bin=
+{
+ MY_NOPAD_ID(47),0,0, /* number */
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD,/* state */
+ "latin1", /* cs name */
+ "latin1_nopad_bin", /* name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_latin1,
+ to_lower_latin1,
+ to_upper_latin1,
+ NULL, /* sort_order */
+ NULL, /* uca */
+ cs_to_uni, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_handler,
+ &my_collation_8bit_nopad_bin_handler
+};
+
diff --git a/strings/ctype-mb.c b/strings/ctype-mb.c
index 56b3309ca10..d78e758010d 100644
--- a/strings/ctype-mb.c
+++ b/strings/ctype-mb.c
@@ -602,13 +602,10 @@ uint my_instr_mb(CHARSET_INFO *cs,
characters having multibyte weights *equal* to their codes:
cp932, euckr, gb2312, sjis, eucjpms, ujis.
*/
-size_t
-my_strnxfrm_mb(CHARSET_INFO *cs,
- uchar *dst, size_t dstlen, uint nweights,
- const uchar *src, size_t srclen, uint flags)
+size_t my_strnxfrm_mb_internal(CHARSET_INFO *cs, uchar *dst, uchar *de,
+ uint *nweights, const uchar *src, size_t srclen)
{
uchar *d0= dst;
- uchar *de= dst + dstlen;
const uchar *se= src + srclen;
const uchar *sort_order= cs->sort_order;
@@ -619,12 +616,12 @@ my_strnxfrm_mb(CHARSET_INFO *cs,
then we can run a simplified loop -
without checking "nweights" and "de".
*/
- if (dstlen >= srclen && nweights >= srclen)
+ if (de >= d0 + srclen && *nweights >= srclen)
{
if (sort_order)
{
/* Optimized version for a case insensitive collation */
- for (; src < se; nweights--)
+ for (; src < se; (*nweights)--)
{
if (*src < 128) /* quickly catch ASCII characters */
*dst++= sort_order[*src++];
@@ -635,7 +632,7 @@ my_strnxfrm_mb(CHARSET_INFO *cs,
else
{
/* Optimized version for a case sensitive collation (no sort_order) */
- for (; src < se; nweights--)
+ for (; src < se; (*nweights)--)
{
if (*src < 128) /* quickly catch ASCII characters */
*dst++= *src++;
@@ -643,14 +640,14 @@ my_strnxfrm_mb(CHARSET_INFO *cs,
my_strnxfrm_mb_non_ascii_char(cs, dst, src, se);
}
}
- goto pad;
+ goto end;
}
/*
A thourough loop, checking all possible limits:
"se", "nweights" and "de".
*/
- for (; src < se && nweights && dst < de; nweights--)
+ for (; src < se && *nweights && dst < de; (*nweights)--)
{
int chlen;
if (*src < 128 || !(chlen= my_ismbchar(cs, (const char *) src,
@@ -669,11 +666,36 @@ my_strnxfrm_mb(CHARSET_INFO *cs,
}
}
-pad:
+end:
+ return dst - d0;
+}
+
+
+size_t
+my_strnxfrm_mb(CHARSET_INFO *cs,
+ uchar *dst, size_t dstlen, uint nweights,
+ const uchar *src, size_t srclen, uint flags)
+{
+ uchar *de= dst + dstlen;
+ uchar *d0= dst;
+ dst= d0 + my_strnxfrm_mb_internal(cs, dst, de, &nweights, src, srclen);
return my_strxfrm_pad_desc_and_reverse(cs, d0, dst, de, nweights, flags, 0);
}
+size_t
+my_strnxfrm_mb_nopad(CHARSET_INFO *cs,
+ uchar *dst, size_t dstlen, uint nweights,
+ const uchar *src, size_t srclen, uint flags)
+{
+ uchar *de= dst + dstlen;
+ uchar *d0= dst;
+ dst= d0 + my_strnxfrm_mb_internal(cs, dst, de, &nweights, src, srclen);
+ return my_strxfrm_pad_desc_and_reverse_nopad(cs, d0, dst, de, nweights,
+ flags, 0);
+}
+
+
int
my_strcasecmp_mb_bin(CHARSET_INFO * cs __attribute__((unused)),
const char *s, const char *t)
@@ -682,18 +704,13 @@ my_strcasecmp_mb_bin(CHARSET_INFO * cs __attribute__((unused)),
}
+
void
-my_hash_sort_mb_bin(CHARSET_INFO *cs __attribute__((unused)),
- const uchar *key, size_t len,ulong *nr1, ulong *nr2)
+my_hash_sort_mb_nopad_bin(CHARSET_INFO *cs __attribute__((unused)),
+ const uchar *key, size_t len,ulong *nr1, ulong *nr2)
{
register ulong m1= *nr1, m2= *nr2;
-
- /*
- Remove trailing spaces. We have to do this to be able to compare
- 'A ' and 'A' as identical
- */
- const uchar *end = skip_trailing_space(key, len);
-
+ const uchar *end= key + len;
for (; key < end ; key++)
{
MY_HASH_ADD(m1, m2, (uint)*key);
@@ -703,6 +720,19 @@ my_hash_sort_mb_bin(CHARSET_INFO *cs __attribute__((unused)),
}
+void
+my_hash_sort_mb_bin(CHARSET_INFO *cs __attribute__((unused)),
+ const uchar *key, size_t len,ulong *nr1, ulong *nr2)
+{
+ /*
+ Remove trailing spaces. We have to do this to be able to compare
+ 'A ' and 'A' as identical
+ */
+ const uchar *end= skip_trailing_space(key, len);
+ my_hash_sort_mb_nopad_bin(cs, key, end - key, nr1, nr2);
+}
+
+
/*
Fill the given buffer with 'maximum character' for given charset
SYNOPSIS
diff --git a/strings/ctype-simple.c b/strings/ctype-simple.c
index f02d96aa798..b142aab18a6 100644
--- a/strings/ctype-simple.c
+++ b/strings/ctype-simple.c
@@ -71,14 +71,14 @@ size_t my_strnxfrmlen_simple(CHARSET_INFO *cs, size_t len)
*/
-size_t my_strnxfrm_simple(CHARSET_INFO * cs,
- uchar *dst, size_t dstlen, uint nweights,
- const uchar *src, size_t srclen, uint flags)
+size_t my_strnxfrm_simple_internal(CHARSET_INFO * cs,
+ uchar *dst, size_t dstlen, uint *nweights,
+ const uchar *src, size_t srclen)
{
const uchar *map= cs->sort_order;
uchar *d0= dst;
uint frmlen;
- if ((frmlen= MY_MIN(dstlen, nweights)) > srclen)
+ if ((frmlen= MY_MIN(dstlen, *nweights)) > srclen)
frmlen= srclen;
if (dst != src)
{
@@ -92,8 +92,32 @@ size_t my_strnxfrm_simple(CHARSET_INFO * cs,
for (end= dst + frmlen; dst < end; dst++)
*dst= map[(uchar) *dst];
}
+ *nweights-= frmlen;
+ return dst - d0;
+}
+
+
+size_t my_strnxfrm_simple(CHARSET_INFO * cs,
+ uchar *dst, size_t dstlen, uint nweights,
+ const uchar *src, size_t srclen, uint flags)
+{
+ uchar *d0= dst;
+ dst= d0 + my_strnxfrm_simple_internal(cs, dst, dstlen, &nweights,
+ src, srclen);
return my_strxfrm_pad_desc_and_reverse(cs, d0, dst, d0 + dstlen,
- nweights - frmlen, flags, 0);
+ nweights, flags, 0);
+}
+
+
+size_t my_strnxfrm_simple_nopad(CHARSET_INFO * cs,
+ uchar *dst, size_t dstlen, uint nweights,
+ const uchar *src, size_t srclen, uint flags)
+{
+ uchar *d0= dst;
+ dst= d0 + my_strnxfrm_simple_internal(cs, dst, dstlen, &nweights,
+ src, srclen);
+ return my_strxfrm_pad_desc_and_reverse_nopad(cs, d0, dst, d0 + dstlen,
+ nweights, flags, 0);
}
@@ -184,6 +208,14 @@ int my_strnncollsp_simple(CHARSET_INFO * cs, const uchar *a, size_t a_length,
}
+int my_strnncollsp_simple_nopad(CHARSET_INFO * cs,
+ const uchar *a, size_t a_length,
+ const uchar *b, size_t b_length)
+{
+ return my_strnncoll_simple(cs, a, a_length, b, b_length, FALSE);
+}
+
+
size_t my_caseup_str_8bit(CHARSET_INFO * cs,char *str)
{
register const uchar *map= cs->to_upper;
@@ -297,13 +329,28 @@ size_t my_snprintf_8bit(CHARSET_INFO *cs __attribute__((unused)),
}
+void my_hash_sort_simple_nopad(CHARSET_INFO *cs,
+ const uchar *key, size_t len,
+ ulong *nr1, ulong *nr2)
+{
+ register const uchar *sort_order=cs->sort_order;
+ const uchar *end= key + len;
+ register ulong m1= *nr1, m2= *nr2;
+ for (; key < (uchar*) end ; key++)
+ {
+ MY_HASH_ADD(m1, m2, (uint) sort_order[(uint) *key]);
+ }
+ *nr1= m1;
+ *nr2= m2;
+}
+
+
void my_hash_sort_simple(CHARSET_INFO *cs,
- const uchar *key, size_t len,
- ulong *nr1, ulong *nr2)
+ const uchar *key, size_t len,
+ ulong *nr1, ulong *nr2)
{
register const uchar *sort_order=cs->sort_order;
const uchar *end;
- register ulong m1= *nr1, m2= *nr2;
uint16 space_weight= sort_order[' '];
/*
@@ -338,13 +385,7 @@ void my_hash_sort_simple(CHARSET_INFO *cs,
break;
}
}
-
- for (; key < (uchar*) end ; key++)
- {
- MY_HASH_ADD(m1, m2, (uint) sort_order[(uint) *key]);
- }
- *nr1= m1;
- *nr2= m2;
+ my_hash_sort_simple_nopad(cs, key, end - key, nr1, nr2);
}
@@ -1996,6 +2037,28 @@ my_strxfrm_pad_desc_and_reverse(CHARSET_INFO *cs,
}
+size_t
+my_strxfrm_pad_desc_and_reverse_nopad(CHARSET_INFO *cs,
+ uchar *str, uchar *frmend, uchar *strend,
+ uint nweights, uint flags, uint level)
+{
+ if (nweights && frmend < strend && (flags & MY_STRXFRM_PAD_WITH_SPACE))
+ {
+ uint fill_length= MY_MIN((uint) (strend - frmend), nweights * cs->mbminlen);
+ memset(frmend, 0x00, fill_length);
+ frmend+= fill_length;
+ }
+ my_strxfrm_desc_and_reverse(str, frmend, flags, level);
+ if ((flags & MY_STRXFRM_PAD_TO_MAXLEN) && frmend < strend)
+ {
+ uint fill_length= strend - frmend;
+ memset(frmend, 0x00, fill_length);
+ frmend= strend;
+ }
+ return frmend - str;
+}
+
+
MY_CHARSET_HANDLER my_charset_8bit_handler=
{
my_cset_init_8bit,
@@ -2043,3 +2106,19 @@ MY_COLLATION_HANDLER my_collation_8bit_simple_ci_handler =
my_hash_sort_simple,
my_propagate_simple
};
+
+
+MY_COLLATION_HANDLER my_collation_8bit_simple_nopad_ci_handler =
+{
+ my_coll_init_simple, /* init */
+ my_strnncoll_simple,
+ my_strnncollsp_simple_nopad,
+ my_strnxfrm_simple_nopad,
+ my_strnxfrmlen_simple,
+ my_like_range_simple,
+ my_wildcmp_8bit,
+ my_strcasecmp_8bit,
+ my_instr_simple,
+ my_hash_sort_simple_nopad,
+ my_propagate_simple
+};
diff --git a/strings/ctype-sjis.c b/strings/ctype-sjis.c
index e0546146008..94fd69c79c0 100644
--- a/strings/ctype-sjis.c
+++ b/strings/ctype-sjis.c
@@ -34025,6 +34025,22 @@ size_t my_numcells_sjis(CHARSET_INFO *cs __attribute__((unused)),
#include "strcoll.ic"
+#define DEFINE_STRNNCOLLSP_NOPAD
+#define MY_FUNCTION_NAME(x) my_ ## x ## _sjis_japanese_nopad_ci
+#define WEIGHT_PAD_SPACE (256 * (int) ' ')
+#define WEIGHT_MB1(x) (256 * (int) sort_order_sjis[(uchar) (x)])
+#define WEIGHT_MB2(x,y) (sjiscode(x, y))
+#include "strcoll.ic"
+
+
+#define DEFINE_STRNNCOLLSP_NOPAD
+#define MY_FUNCTION_NAME(x) my_ ## x ## _sjis_nopad_bin
+#define WEIGHT_PAD_SPACE (256 * (int) ' ')
+#define WEIGHT_MB1(x) (256 * (int) (uchar) (x))
+#define WEIGHT_MB2(x,y) (sjiscode(x, y))
+#include "strcoll.ic"
+
+
static MY_COLLATION_HANDLER my_collation_handler_sjis_japanese_ci=
{
NULL, /* init */
@@ -34057,6 +34073,38 @@ static MY_COLLATION_HANDLER my_collation_handler_sjis_bin=
};
+static MY_COLLATION_HANDLER my_collation_handler_sjis_japanese_nopad_ci=
+{
+ NULL, /* init */
+ my_strnncoll_sjis_japanese_ci,
+ my_strnncollsp_sjis_japanese_nopad_ci,
+ my_strnxfrm_mb_nopad,
+ my_strnxfrmlen_simple,
+ my_like_range_mb,
+ my_wildcmp_mb,
+ my_strcasecmp_8bit,
+ my_instr_mb,
+ my_hash_sort_simple_nopad,
+ my_propagate_simple
+};
+
+
+static MY_COLLATION_HANDLER my_collation_handler_sjis_nopad_bin=
+{
+ NULL, /* init */
+ my_strnncoll_sjis_bin,
+ my_strnncollsp_sjis_nopad_bin,
+ my_strnxfrm_mb_nopad,
+ my_strnxfrmlen_simple,
+ my_like_range_mb,
+ my_wildcmp_mb_bin,
+ my_strcasecmp_mb_bin,
+ my_instr_mb,
+ my_hash_sort_mb_nopad_bin,
+ my_propagate_simple
+};
+
+
static MY_CHARSET_HANDLER my_charset_handler=
{
NULL, /* init */
@@ -34155,4 +34203,69 @@ struct charset_info_st my_charset_sjis_bin=
&my_collation_handler_sjis_bin
};
+
+struct charset_info_st my_charset_sjis_japanese_nopad_ci=
+{
+ MY_NOPAD_ID(13),0,0, /* number */
+ MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_NONASCII|MY_CS_NOPAD, /* state */
+ "sjis", /* cs name */
+ "sjis_japanese_nopad_ci", /* name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_sjis,
+ to_lower_sjis,
+ to_upper_sjis,
+ sort_order_sjis,
+ NULL, /* uca */
+ NULL, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ &my_caseinfo_sjis, /* caseinfo */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 1, /* mbminlen */
+ 2, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 0xFCFC, /* max_sort_char */
+ ' ', /* pad char */
+ 1, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_handler,
+ &my_collation_handler_sjis_japanese_nopad_ci
+};
+
+struct charset_info_st my_charset_sjis_nopad_bin=
+{
+ MY_NOPAD_ID(88),0,0, /* number */
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NONASCII|MY_CS_NOPAD, /* state */
+ "sjis", /* cs name */
+ "sjis_nopad_bin", /* name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_sjis,
+ to_lower_sjis,
+ to_upper_sjis,
+ NULL, /* sort_order */
+ NULL, /* uca */
+ NULL, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ &my_caseinfo_sjis, /* caseinfo */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 1, /* mbminlen */
+ 2, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 0xFCFC, /* max_sort_char */
+ ' ', /* pad char */
+ 1, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_handler,
+ &my_collation_handler_sjis_nopad_bin
+};
+
#endif
diff --git a/strings/ctype-tis620.c b/strings/ctype-tis620.c
index 7f3bdc9140a..72a33036085 100644
--- a/strings/ctype-tis620.c
+++ b/strings/ctype-tis620.c
@@ -541,7 +541,7 @@ int my_strnncoll_tis620(CHARSET_INFO *cs __attribute__((unused)),
static
int my_strnncollsp_tis620(CHARSET_INFO * cs __attribute__((unused)),
- const uchar *a0, size_t a_length,
+ const uchar *a0, size_t a_length,
const uchar *b0, size_t b_length)
{
uchar buf[80], *end, *a, *b, *alloced= NULL;
@@ -583,6 +583,13 @@ ret:
}
+static
+int my_strnncollsp_tis620_nopad(CHARSET_INFO * cs __attribute__((unused)),
+ const uchar *a0, size_t a_length,
+ const uchar *b0, size_t b_length)
+{
+ return my_strnncoll_tis620(cs, a0, a_length, b0, b_length, FALSE);
+}
/*
strnxfrm replacment, convert Thai string to sortable string
@@ -613,6 +620,29 @@ my_strnxfrm_tis620(CHARSET_INFO *cs,
}
+static size_t
+my_strnxfrm_tis620_nopad(CHARSET_INFO *cs,
+ uchar *dst, size_t dstlen, uint nweights,
+ const uchar *src, size_t srclen, uint flags)
+{
+ size_t len, dstlen0= dstlen;
+ len= (uint) (strmake((char*) dst, (char*) src, MY_MIN(dstlen, srclen)) -
+ (char*) dst);
+ len= thai2sortable(dst, len);
+ set_if_smaller(dstlen, nweights);
+ set_if_smaller(len, dstlen);
+ len= my_strxfrm_pad_desc_and_reverse_nopad(cs, dst, dst + len, dst + dstlen,
+ dstlen - len, flags, 0);
+ if ((flags & MY_STRXFRM_PAD_TO_MAXLEN) && len < dstlen0)
+ {
+ uint fill_length= dstlen0 - len;
+ memset(dst + len, 0x00, fill_length);
+ len= dstlen0;
+ }
+ return len;
+}
+
+
static const unsigned short cs_to_uni[256]={
0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
@@ -830,6 +860,21 @@ static MY_COLLATION_HANDLER my_collation_ci_handler =
my_propagate_simple
};
+static MY_COLLATION_HANDLER my_collation_nopad_ci_handler =
+{
+ NULL, /* init */
+ my_strnncoll_tis620,
+ my_strnncollsp_tis620_nopad,
+ my_strnxfrm_tis620_nopad,
+ my_strnxfrmlen_simple,
+ my_like_range_simple,
+ my_wildcmp_8bit, /* wildcmp */
+ my_strcasecmp_8bit,
+ my_instr_simple, /* QQ: To be fixed */
+ my_hash_sort_simple_nopad,
+ my_propagate_simple
+};
+
static MY_CHARSET_HANDLER my_charset_handler=
{
NULL, /* init */
@@ -930,4 +975,70 @@ struct charset_info_st my_charset_tis620_bin=
};
+struct charset_info_st my_charset_tis620_thai_nopad_ci=
+{
+ MY_NOPAD_ID(18),0,0, /* number */
+ MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_NON1TO1|MY_CS_NOPAD, /* state */
+ "tis620", /* cs name */
+ "tis620_thai_nopad_ci",/* name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_tis620,
+ to_lower_tis620,
+ to_upper_tis620,
+ sort_order_tis620,
+ NULL, /* uca */
+ NULL, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 4, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_handler,
+ &my_collation_nopad_ci_handler
+};
+
+
+struct charset_info_st my_charset_tis620_nopad_bin=
+{
+ MY_NOPAD_ID(89),0,0, /* number */
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, /* state */
+ "tis620", /* cs name */
+ "tis620_nopad_bin", /* name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_tis620,
+ to_lower_tis620,
+ to_upper_tis620,
+ NULL, /* sort_order */
+ NULL, /* uca */
+ NULL, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 1, /* mbminlen */
+ 1, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 255, /* max_sort_char */
+ ' ', /* pad char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_handler,
+ &my_collation_8bit_nopad_bin_handler
+};
+
+
#endif
diff --git a/strings/ctype-ucs2.c b/strings/ctype-ucs2.c
index 06dab08a772..9d8353103f0 100644
--- a/strings/ctype-ucs2.c
+++ b/strings/ctype-ucs2.c
@@ -1243,6 +1243,20 @@ static inline int my_weight_mb2_utf16mb2_general_ci(uchar b0, uchar b1)
#define WEIGHT_MB4(b0,b1,b2,b3) ((int) MY_UTF16_WC4(b0, b1, b2, b3))
#include "strcoll.ic"
+#define DEFINE_STRNNCOLLSP_NOPAD
+#define MY_FUNCTION_NAME(x) my_ ## x ## _utf16_general_nopad_ci
+#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
+#define WEIGHT_MB2(b0,b1) my_weight_mb2_utf16mb2_general_ci(b0,b1)
+#define WEIGHT_MB4(b0,b1,b2,b3) MY_CS_REPLACEMENT_CHARACTER
+#include "strcoll.ic"
+
+#define DEFINE_STRNNCOLLSP_NOPAD
+#define MY_FUNCTION_NAME(x) my_ ## x ## _utf16_nopad_bin
+#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
+#define WEIGHT_MB2(b0,b1) ((int) MY_UTF16_WC2(b0, b1))
+#define WEIGHT_MB4(b0,b1,b2,b3) ((int) MY_UTF16_WC4(b0, b1, b2, b3))
+#include "strcoll.ic"
+
#undef IS_MB2_CHAR
#undef IS_MB4_CHAR
@@ -1370,13 +1384,14 @@ my_caseup_utf16(CHARSET_INFO *cs, char *src, size_t srclen,
static void
-my_hash_sort_utf16(CHARSET_INFO *cs, const uchar *s, size_t slen,
- ulong *nr1, ulong *nr2)
+my_hash_sort_utf16_nopad(CHARSET_INFO *cs,
+ const uchar *s, size_t slen,
+ ulong *nr1, ulong *nr2)
{
my_wc_t wc;
my_charset_conv_mb_wc mb_wc= cs->cset->mb_wc;
int res;
- const uchar *e= s + cs->cset->lengthsp(cs, (const char *) s, slen);
+ const uchar *e= s + slen;
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
register ulong m1= *nr1, m2= *nr2;
@@ -1391,6 +1406,15 @@ my_hash_sort_utf16(CHARSET_INFO *cs, const uchar *s, size_t slen,
}
+static void
+my_hash_sort_utf16(CHARSET_INFO *cs, const uchar *s, size_t slen,
+ ulong *nr1, ulong *nr2)
+{
+ size_t lengthsp= cs->cset->lengthsp(cs, (const char *) s, slen);
+ my_hash_sort_utf16_nopad(cs, s, lengthsp, nr1, nr2);
+}
+
+
static size_t
my_casedn_utf16(CHARSET_INFO *cs, char *src, size_t srclen,
char *dst __attribute__((unused)),
@@ -1511,10 +1535,11 @@ my_wildcmp_utf16_bin(CHARSET_INFO *cs,
static void
-my_hash_sort_utf16_bin(CHARSET_INFO *cs,
- const uchar *pos, size_t len, ulong *nr1, ulong *nr2)
+my_hash_sort_utf16_nopad_bin(CHARSET_INFO *cs __attribute__((unused)),
+ const uchar *pos, size_t len,
+ ulong *nr1, ulong *nr2)
{
- const uchar *end= pos + cs->cset->lengthsp(cs, (const char *) pos, len);
+ const uchar *end= pos + len;
register ulong m1= *nr1, m2= *nr2;
for ( ; pos < end ; pos++)
@@ -1526,6 +1551,15 @@ my_hash_sort_utf16_bin(CHARSET_INFO *cs,
}
+static void
+my_hash_sort_utf16_bin(CHARSET_INFO *cs,
+ const uchar *pos, size_t len, ulong *nr1, ulong *nr2)
+{
+ size_t lengthsp= cs->cset->lengthsp(cs, (const char *) pos, len);
+ my_hash_sort_utf16_nopad_bin(cs, pos, lengthsp, nr1, nr2);
+}
+
+
static MY_COLLATION_HANDLER my_collation_utf16_general_ci_handler =
{
NULL, /* init */
@@ -1558,6 +1592,38 @@ static MY_COLLATION_HANDLER my_collation_utf16_bin_handler =
};
+static MY_COLLATION_HANDLER my_collation_utf16_general_nopad_ci_handler =
+{
+ NULL, /* init */
+ my_strnncoll_utf16_general_ci,
+ my_strnncollsp_utf16_general_nopad_ci,
+ my_strnxfrm_unicode_nopad,
+ my_strnxfrmlen_unicode,
+ my_like_range_generic,
+ my_wildcmp_utf16_ci,
+ my_strcasecmp_mb2_or_mb4,
+ my_instr_mb,
+ my_hash_sort_utf16_nopad,
+ my_propagate_simple
+};
+
+
+static MY_COLLATION_HANDLER my_collation_utf16_nopad_bin_handler =
+{
+ NULL, /* init */
+ my_strnncoll_utf16_bin,
+ my_strnncollsp_utf16_nopad_bin,
+ my_strnxfrm_unicode_full_nopad_bin,
+ my_strnxfrmlen_unicode_full_bin,
+ my_like_range_generic,
+ my_wildcmp_utf16_bin,
+ my_strcasecmp_mb2_or_mb4,
+ my_instr_mb,
+ my_hash_sort_utf16_nopad_bin,
+ my_propagate_simple
+};
+
+
MY_CHARSET_HANDLER my_charset_utf16_handler=
{
NULL, /* init */
@@ -1658,6 +1724,73 @@ struct charset_info_st my_charset_utf16_bin=
};
+struct charset_info_st my_charset_utf16_general_nopad_ci=
+{
+ MY_NOPAD_ID(54),0,0, /* number */
+ MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII|MY_CS_NOPAD,
+ "utf16", /* cs name */
+ "utf16_general_nopad_ci", /* name */
+ "UTF-16 Unicode", /* comment */
+ NULL, /* 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 */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 2, /* mbminlen */
+ 4, /* mbmaxlen */
+ 0, /* 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_general_nopad_ci_handler
+};
+
+
+struct charset_info_st my_charset_utf16_nopad_bin=
+{
+ MY_NOPAD_ID(55),0,0, /* number */
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII|
+ MY_CS_NOPAD,
+ "utf16", /* cs name */
+ "utf16_nopad_bin", /* name */
+ "UTF-16 Unicode", /* comment */
+ NULL, /* 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 */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 2, /* mbminlen */
+ 4, /* mbmaxlen */
+ 0, /* 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_nopad_bin_handler
+};
+
+
#define IS_MB2_CHAR(b0,b1) (!MY_UTF16_SURROGATE_HEAD(b1))
#define IS_MB4_CHAR(b0,b1,b2,b3) (MY_UTF16_HIGH_HEAD(b1) && MY_UTF16_LOW_HEAD(b3))
@@ -1673,6 +1806,20 @@ struct charset_info_st my_charset_utf16_bin=
#define WEIGHT_MB4(b0,b1,b2,b3) ((int) MY_UTF16_WC4(b1, b0, b3, b2))
#include "strcoll.ic"
+#define DEFINE_STRNNCOLLSP_NOPAD
+#define MY_FUNCTION_NAME(x) my_ ## x ## _utf16le_general_nopad_ci
+#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
+#define WEIGHT_MB2(b0,b1) my_weight_mb2_utf16mb2_general_ci(b1,b0)
+#define WEIGHT_MB4(b0,b1,b2,b3) MY_CS_REPLACEMENT_CHARACTER
+#include "strcoll.ic"
+
+#define DEFINE_STRNNCOLLSP_NOPAD
+#define MY_FUNCTION_NAME(x) my_ ## x ## _utf16le_nopad_bin
+#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
+#define WEIGHT_MB2(b0,b1) ((int) MY_UTF16_WC2(b1, b0))
+#define WEIGHT_MB4(b0,b1,b2,b3) ((int) MY_UTF16_WC4(b1, b0, b3, b2))
+#include "strcoll.ic"
+
#undef IS_MB2_CHAR
#undef IS_MB4_CHAR
@@ -1779,6 +1926,38 @@ static MY_COLLATION_HANDLER my_collation_utf16le_bin_handler =
};
+static MY_COLLATION_HANDLER my_collation_utf16le_general_nopad_ci_handler =
+{
+ NULL, /* init */
+ my_strnncoll_utf16le_general_ci,
+ my_strnncollsp_utf16le_general_nopad_ci,
+ my_strnxfrm_unicode_nopad,
+ my_strnxfrmlen_unicode,
+ my_like_range_generic,
+ my_wildcmp_utf16_ci,
+ my_strcasecmp_mb2_or_mb4,
+ my_instr_mb,
+ my_hash_sort_utf16_nopad,
+ my_propagate_simple
+};
+
+
+static MY_COLLATION_HANDLER my_collation_utf16le_nopad_bin_handler =
+{
+ NULL, /* init */
+ my_strnncoll_utf16le_bin,
+ my_strnncollsp_utf16le_nopad_bin,
+ my_strnxfrm_unicode_full_nopad_bin,
+ my_strnxfrmlen_unicode_full_bin,
+ my_like_range_generic,
+ my_wildcmp_utf16_bin,
+ my_strcasecmp_mb2_or_mb4,
+ my_instr_mb,
+ my_hash_sort_utf16_nopad_bin,
+ my_propagate_simple
+};
+
+
static MY_CHARSET_HANDLER my_charset_utf16le_handler=
{
NULL, /* init */
@@ -1879,6 +2058,73 @@ struct charset_info_st my_charset_utf16le_bin=
};
+struct charset_info_st my_charset_utf16le_general_nopad_ci=
+{
+ MY_NOPAD_ID(56),0,0, /* number */
+ MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII|MY_CS_NOPAD,
+ "utf16le", /* cs name */
+ "utf16le_general_nopad_ci",/* name */
+ "UTF-16LE Unicode", /* comment */
+ NULL, /* 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 */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 2, /* mbminlen */
+ 4, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 0xFFFF, /* max_sort_char */
+ ' ', /* pad char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_utf16le_handler,
+ &my_collation_utf16le_general_nopad_ci_handler
+};
+
+
+struct charset_info_st my_charset_utf16le_nopad_bin=
+{
+ MY_NOPAD_ID(62),0,0, /* number */
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII|
+ MY_CS_NOPAD,
+ "utf16le", /* cs name */
+ "utf16le_nopad_bin", /* name */
+ "UTF-16LE Unicode", /* comment */
+ NULL, /* 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 */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 2, /* mbminlen */
+ 4, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 0xFFFF, /* max_sort_char */
+ ' ', /* pad char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_utf16le_handler,
+ &my_collation_utf16le_nopad_bin_handler
+};
+
+
#endif /* HAVE_CHARSET_utf16 */
@@ -1916,6 +2162,18 @@ static inline int my_weight_utf32_general_ci(uchar b0, uchar b1,
#define WEIGHT_MB4(b0,b1,b2,b3) ((int) MY_UTF32_WC4(b0, b1, b2, b3))
#include "strcoll.ic"
+#define DEFINE_STRNNCOLLSP_NOPAD
+#define MY_FUNCTION_NAME(x) my_ ## x ## _utf32_general_nopad_ci
+#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
+#define WEIGHT_MB4(b0,b1,b2,b3) my_weight_utf32_general_ci(b0, b1, b2, b3)
+#include "strcoll.ic"
+
+#define DEFINE_STRNNCOLLSP_NOPAD
+#define MY_FUNCTION_NAME(x) my_ ## x ## _utf32_nopad_bin
+#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
+#define WEIGHT_MB4(b0,b1,b2,b3) ((int) MY_UTF32_WC4(b0, b1, b2, b3))
+#include "strcoll.ic"
+
#undef IS_MB2_CHAR
#undef IS_MB4_CHAR
@@ -1984,6 +2242,18 @@ my_tosort_utf32(MY_UNICASE_INFO *uni_plane, my_wc_t *wc)
static size_t
+my_lengthsp_utf32(CHARSET_INFO *cs __attribute__((unused)),
+ const char *ptr, size_t length)
+{
+ const char *end= ptr + length;
+ DBUG_ASSERT((length % 4) == 0);
+ while (end > ptr + 3 && end[-1] == ' ' && !end[-2] && !end[-3] && !end[-4])
+ end-= 4;
+ return (size_t) (end - ptr);
+}
+
+
+static size_t
my_caseup_utf32(CHARSET_INFO *cs, char *src, size_t srclen,
char *dst __attribute__((unused)),
size_t dstlen __attribute__((unused)))
@@ -2007,8 +2277,8 @@ my_caseup_utf32(CHARSET_INFO *cs, char *src, size_t srclen,
static void
-my_hash_sort_utf32(CHARSET_INFO *cs, const uchar *s, size_t slen,
- ulong *nr1, ulong *nr2)
+my_hash_sort_utf32_nopad(CHARSET_INFO *cs, const uchar *s, size_t slen,
+ ulong *nr1, ulong *nr2)
{
my_wc_t wc;
int res;
@@ -2016,10 +2286,6 @@ my_hash_sort_utf32(CHARSET_INFO *cs, const uchar *s, size_t slen,
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
register ulong m1= *nr1, m2= *nr2;
- /* Skip trailing spaces */
- while (e > s + 3 && e[-1] == ' ' && !e[-2] && !e[-3] && !e[-4])
- e-= 4;
-
while ((res= my_utf32_uni(cs, &wc, (uchar*) s, (uchar*) e)) > 0)
{
my_tosort_utf32(uni_plane, &wc);
@@ -2034,6 +2300,15 @@ my_hash_sort_utf32(CHARSET_INFO *cs, const uchar *s, size_t slen,
}
+static void
+my_hash_sort_utf32(CHARSET_INFO *cs, const uchar *s, size_t slen,
+ ulong *nr1, ulong *nr2)
+{
+ size_t lengthsp= my_lengthsp_utf32(cs, (const char *) s, slen);
+ my_hash_sort_utf32_nopad(cs, s, lengthsp, nr1, nr2);
+}
+
+
static size_t
my_casedn_utf32(CHARSET_INFO *cs, char *src, size_t srclen,
char *dst __attribute__((unused)),
@@ -2415,18 +2690,6 @@ void my_fill_utf32(CHARSET_INFO *cs,
}
-static size_t
-my_lengthsp_utf32(CHARSET_INFO *cs __attribute__((unused)),
- const char *ptr, size_t length)
-{
- const char *end= ptr + length;
- DBUG_ASSERT((length % 4) == 0);
- while (end > ptr + 3 && end[-1] == ' ' && !end[-2] && !end[-3] && !end[-4])
- end-= 4;
- return (size_t) (end - ptr);
-}
-
-
static int
my_wildcmp_utf32_ci(CHARSET_INFO *cs,
const char *str, const char *str_end,
@@ -2509,6 +2772,38 @@ static MY_COLLATION_HANDLER my_collation_utf32_bin_handler =
};
+static MY_COLLATION_HANDLER my_collation_utf32_general_nopad_ci_handler =
+{
+ NULL, /* init */
+ my_strnncoll_utf32_general_ci,
+ my_strnncollsp_utf32_general_nopad_ci,
+ my_strnxfrm_unicode_nopad,
+ my_strnxfrmlen_unicode,
+ my_like_range_generic,
+ my_wildcmp_utf32_ci,
+ my_strcasecmp_mb2_or_mb4,
+ my_instr_mb,
+ my_hash_sort_utf32_nopad,
+ my_propagate_simple
+};
+
+
+static MY_COLLATION_HANDLER my_collation_utf32_nopad_bin_handler =
+{
+ NULL, /* init */
+ my_strnncoll_utf32_bin,
+ my_strnncollsp_utf32_nopad_bin,
+ my_strnxfrm_unicode_full_nopad_bin,
+ my_strnxfrmlen_unicode_full_bin,
+ my_like_range_generic,
+ my_wildcmp_utf32_bin,
+ my_strcasecmp_mb2_or_mb4,
+ my_instr_mb,
+ my_hash_sort_utf32_nopad,
+ my_propagate_simple
+};
+
+
MY_CHARSET_HANDLER my_charset_utf32_handler=
{
NULL, /* init */
@@ -2609,6 +2904,73 @@ struct charset_info_st my_charset_utf32_bin=
};
+struct charset_info_st my_charset_utf32_general_nopad_ci=
+{
+ MY_NOPAD_ID(60),0,0, /* number */
+ MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII|MY_CS_NOPAD,
+ "utf32", /* cs name */
+ "utf32_general_nopad_ci", /* name */
+ "UTF-32 Unicode", /* comment */
+ NULL, /* 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 */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 4, /* mbminlen */
+ 4, /* mbmaxlen */
+ 0, /* 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_general_nopad_ci_handler
+};
+
+
+struct charset_info_st my_charset_utf32_nopad_bin=
+{
+ MY_NOPAD_ID(61),0,0, /* number */
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII|
+ MY_CS_NOPAD,
+ "utf32", /* cs name */
+ "utf32_nopad_bin", /* name */
+ "UTF-32 Unicode", /* comment */
+ NULL, /* 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 */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 4, /* mbminlen */
+ 4, /* mbmaxlen */
+ 0, /* 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_nopad_bin_handler
+};
+
+
#endif /* HAVE_CHARSET_utf32 */
@@ -2698,6 +3060,20 @@ static inline int my_weight_mb2_ucs2_general_ci(uchar b0, uchar b1)
#include "strcoll.ic"
+#define DEFINE_STRNNCOLLSP_NOPAD
+#define MY_FUNCTION_NAME(x) my_ ## x ## _ucs2_general_nopad_ci
+#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
+#define WEIGHT_MB2(b0,b1) my_weight_mb2_ucs2_general_ci(b0,b1)
+#include "strcoll.ic"
+
+
+#define DEFINE_STRNNCOLLSP_NOPAD
+#define MY_FUNCTION_NAME(x) my_ ## x ## _ucs2_nopad_bin
+#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
+#define WEIGHT_MB2(b0,b1) UCS2_CODE(b0,b1)
+#include "strcoll.ic"
+
+
static int
my_charlen_ucs2(CHARSET_INFO *cs __attribute__((unused)),
const uchar *s, const uchar *e)
@@ -2779,8 +3155,9 @@ static size_t my_caseup_ucs2(CHARSET_INFO *cs, char *src, size_t srclen,
}
-static void my_hash_sort_ucs2(CHARSET_INFO *cs, const uchar *s, size_t slen,
- ulong *nr1, ulong *nr2)
+static void
+my_hash_sort_ucs2_nopad(CHARSET_INFO *cs, const uchar *s, size_t slen,
+ ulong *nr1, ulong *nr2)
{
my_wc_t wc;
int res;
@@ -2788,9 +3165,6 @@ static void my_hash_sort_ucs2(CHARSET_INFO *cs, const uchar *s, size_t slen,
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
register ulong m1= *nr1, m2= *nr2;
- while (e > s+1 && e[-1] == ' ' && e[-2] == '\0')
- e-= 2;
-
while ((s < e) && (res=my_ucs2_uni(cs,&wc, (uchar *)s, (uchar*)e)) >0)
{
my_tosort_ucs2(uni_plane, &wc);
@@ -2802,6 +3176,13 @@ static void my_hash_sort_ucs2(CHARSET_INFO *cs, const uchar *s, size_t slen,
}
+static void my_hash_sort_ucs2(CHARSET_INFO *cs, const uchar *s, size_t slen,
+ ulong *nr1, ulong *nr2)
+{
+ size_t lengthsp= my_lengthsp_mb2(cs, (const char *) s, slen);
+ my_hash_sort_ucs2_nopad(cs, s, lengthsp, nr1, nr2);
+}
+
static size_t my_casedn_ucs2(CHARSET_INFO *cs, char *src, size_t srclen,
char *dst __attribute__((unused)),
size_t dstlen __attribute__((unused)))
@@ -2928,17 +3309,14 @@ int my_wildcmp_ucs2_bin(CHARSET_INFO *cs,
}
-static
-void my_hash_sort_ucs2_bin(CHARSET_INFO *cs __attribute__((unused)),
- const uchar *key, size_t len,ulong *nr1, ulong *nr2)
+static void
+my_hash_sort_ucs2_nopad_bin(CHARSET_INFO *cs __attribute__((unused)),
+ const uchar *key, size_t len,
+ ulong *nr1, ulong *nr2)
{
- const uchar *end = key + len;
+ const uchar *end= key + len;
register ulong m1= *nr1, m2= *nr2;
-
- while (end > key+1 && end[-1] == ' ' && end[-2] == '\0')
- end-= 2;
-
- for (; key < (uchar*) end ; key++)
+ for ( ; key < end ; key++)
{
MY_HASH_ADD(m1, m2, (uint)*key);
}
@@ -2947,6 +3325,15 @@ void my_hash_sort_ucs2_bin(CHARSET_INFO *cs __attribute__((unused)),
}
+static void
+my_hash_sort_ucs2_bin(CHARSET_INFO *cs,
+ const uchar *key, size_t len, ulong *nr1, ulong *nr2)
+{
+ size_t lengthsp= my_lengthsp_mb2(cs, (const char *) key, len);
+ my_hash_sort_ucs2_nopad_bin(cs, key, lengthsp, nr1, nr2);
+}
+
+
static MY_COLLATION_HANDLER my_collation_ucs2_general_ci_handler =
{
NULL, /* init */
@@ -2979,6 +3366,38 @@ static MY_COLLATION_HANDLER my_collation_ucs2_bin_handler =
};
+static MY_COLLATION_HANDLER my_collation_ucs2_general_nopad_ci_handler =
+{
+ NULL, /* init */
+ my_strnncoll_ucs2_general_ci,
+ my_strnncollsp_ucs2_general_nopad_ci,
+ my_strnxfrm_unicode_nopad,
+ my_strnxfrmlen_unicode,
+ my_like_range_generic,
+ my_wildcmp_ucs2_ci,
+ my_strcasecmp_mb2_or_mb4,
+ my_instr_mb,
+ my_hash_sort_ucs2_nopad,
+ my_propagate_simple
+};
+
+
+static MY_COLLATION_HANDLER my_collation_ucs2_nopad_bin_handler =
+{
+ NULL, /* init */
+ my_strnncoll_ucs2_bin,
+ my_strnncollsp_ucs2_nopad_bin,
+ my_strnxfrm_unicode_nopad,
+ my_strnxfrmlen_unicode,
+ my_like_range_generic,
+ my_wildcmp_ucs2_bin,
+ my_strcasecmp_mb2_or_mb4,
+ my_instr_mb,
+ my_hash_sort_ucs2_nopad_bin,
+ my_propagate_simple
+};
+
+
MY_CHARSET_HANDLER my_charset_ucs2_handler=
{
NULL, /* init */
@@ -3112,4 +3531,69 @@ struct charset_info_st my_charset_ucs2_bin=
};
+struct charset_info_st my_charset_ucs2_general_nopad_ci=
+{
+ MY_NOPAD_ID(35),0,0, /* number */
+ MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII|MY_CS_NOPAD,
+ "ucs2", /* cs name */
+ "ucs2_general_nopad_ci", /* name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_ucs2, /* ctype */
+ to_lower_ucs2, /* to_lower */
+ to_upper_ucs2, /* to_upper */
+ to_upper_ucs2, /* sort_order */
+ NULL, /* uca */
+ NULL, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 2, /* mbminlen */
+ 2, /* mbmaxlen */
+ 0, /* 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_general_nopad_ci_handler
+};
+
+
+struct charset_info_st my_charset_ucs2_nopad_bin=
+{
+ MY_NOPAD_ID(90),0,0, /* number */
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_UNICODE|MY_CS_NONASCII|MY_CS_NOPAD,
+ "ucs2", /* cs name */
+ "ucs2_nopad_bin", /* name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_ucs2, /* ctype */
+ to_lower_ucs2, /* to_lower */
+ to_upper_ucs2, /* 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 */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 2, /* mbminlen */
+ 2, /* mbmaxlen */
+ 0, /* 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_nopad_bin_handler
+};
+
#endif /* HAVE_CHARSET_ucs2 */
diff --git a/strings/ctype-ujis.c b/strings/ctype-ujis.c
index 786ae991aef..8c08e906284 100644
--- a/strings/ctype-ujis.c
+++ b/strings/ctype-ujis.c
@@ -220,6 +220,26 @@ static const uchar sort_order_ujis[]=
#include "strcoll.ic"
+#define DEFINE_STRNNCOLLSP_NOPAD
+#define MY_FUNCTION_NAME(x) my_ ## x ## _ujis_japanese_nopad_ci
+#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
+#define WEIGHT_MB1(x) ((int) sort_order_ujis[(uchar) (x)])
+#define WEIGHT_MB2(x,y) ((((uint) (uchar)(x)) << 16) | \
+ (((uint) (uchar) (y)) << 8))
+#define WEIGHT_MB3(x,y,z) (WEIGHT_MB2(x,y) | ((uint) (uchar) z))
+#include "strcoll.ic"
+
+
+#define DEFINE_STRNNCOLLSP_NOPAD
+#define MY_FUNCTION_NAME(x) my_ ## x ## _ujis_nopad_bin
+#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
+#define WEIGHT_MB1(x) ((int) (uchar) (x))
+#define WEIGHT_MB2(x,y) ((((uint) (uchar)(x)) << 16) | \
+ (((uint) (uchar) (y)) << 8))
+#define WEIGHT_MB3(x,y,z) (WEIGHT_MB2(x,y) | ((uint) (uchar) z))
+#include "strcoll.ic"
+
+
static
size_t my_numcells_eucjp(CHARSET_INFO *cs __attribute__((unused)),
const char *str, const char *str_end)
@@ -67246,6 +67266,38 @@ static MY_COLLATION_HANDLER my_collation_ujis_bin_handler =
};
+static MY_COLLATION_HANDLER my_collation_ujis_japanese_nopad_ci_handler =
+{
+ NULL, /* init */
+ my_strnncoll_ujis_japanese_ci,
+ my_strnncollsp_ujis_japanese_nopad_ci,
+ my_strnxfrm_mb_nopad,
+ my_strnxfrmlen_simple,
+ my_like_range_mb,
+ my_wildcmp_mb,
+ my_strcasecmp_mb,
+ my_instr_mb,
+ my_hash_sort_simple_nopad,
+ my_propagate_simple
+};
+
+
+static MY_COLLATION_HANDLER my_collation_ujis_nopad_bin_handler =
+{
+ NULL, /* init */
+ my_strnncoll_ujis_bin,
+ my_strnncollsp_ujis_nopad_bin,
+ my_strnxfrm_mb_nopad,
+ my_strnxfrmlen_simple,
+ my_like_range_mb,
+ my_wildcmp_mb_bin,
+ my_strcasecmp_mb_bin,
+ my_instr_mb,
+ my_hash_sort_mb_nopad_bin,
+ my_propagate_simple
+};
+
+
static MY_CHARSET_HANDLER my_charset_handler=
{
NULL, /* init */
@@ -67347,4 +67399,70 @@ struct charset_info_st my_charset_ujis_bin=
};
+struct charset_info_st my_charset_ujis_japanese_nopad_ci=
+{
+ MY_NOPAD_ID(12),0,0,/* number */
+ MY_CS_COMPILED|MY_CS_NOPAD, /* state */
+ "ujis", /* cs name */
+ "ujis_japanese_nopad_ci", /* name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_ujis,
+ to_lower_ujis,
+ to_upper_ujis,
+ sort_order_ujis,
+ NULL, /* uca */
+ NULL, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ &my_caseinfo_ujis, /* caseinfo */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 2, /* casedn_multiply */
+ 1, /* mbminlen */
+ 3, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 0xFEFE, /* max_sort_char */
+ ' ', /* pad char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_handler,
+ &my_collation_ujis_japanese_nopad_ci_handler
+};
+
+
+struct charset_info_st my_charset_ujis_nopad_bin=
+{
+ MY_NOPAD_ID(91),0,0,/* number */
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, /* state */
+ "ujis", /* cs name */
+ "ujis_nopad_bin", /* name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_ujis,
+ to_lower_ujis,
+ to_upper_ujis,
+ NULL, /* sort_order */
+ NULL, /* uca */
+ NULL, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ &my_caseinfo_ujis, /* caseinfo */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 2, /* casedn_multiply */
+ 1, /* mbminlen */
+ 3, /* mbmaxlen */
+ 0, /* min_sort_char */
+ 0xFEFE, /* max_sort_char */
+ ' ', /* pad char */
+ 0, /* escape_with_backslash_is_dangerous */
+ 1, /* levels_for_order */
+ &my_charset_handler,
+ &my_collation_ujis_nopad_bin_handler
+};
+
+
#endif /* HAVE_CHARSET_ujis */
diff --git a/strings/ctype-utf8.c b/strings/ctype-utf8.c
index 494e292aac6..39d3521baa4 100644
--- a/strings/ctype-utf8.c
+++ b/strings/ctype-utf8.c
@@ -111,7 +111,9 @@
#define MY_UTF8MB3_BIN MY_UTF8MB3 "_bin"
#define MY_UTF8MB4_GENERAL_CI MY_UTF8MB4 "_general_ci"
#define MY_UTF8MB4_GENERAL_CS MY_UTF8MB4 "_general_cs"
+#define MY_UTF8MB4_GENERAL_NOPAD_CI MY_UTF8MB4 "_general_nopad_ci"
#define MY_UTF8MB4_BIN MY_UTF8MB4 "_bin"
+#define MY_UTF8MB4_NOPAD_BIN MY_UTF8MB4 "_nopad_bin"
@@ -4692,30 +4694,19 @@ my_strxfrm_pad_unicode(uchar *str, uchar *strend)
}
-/*
- Store sorting weights using 2 bytes per character.
-
- This function is shared between
- - utf8mb3_general_ci, utf8_bin, ucs2_general_ci, ucs2_bin
- which support BMP only (U+0000..U+FFFF).
- - utf8mb4_general_ci, utf16_general_ci, utf32_general_ci,
- which map all supplementary characters to weight 0xFFFD.
-*/
-size_t
-my_strnxfrm_unicode(CHARSET_INFO *cs,
- uchar *dst, size_t dstlen, uint nweights,
- const uchar *src, size_t srclen, uint flags)
+size_t my_strnxfrm_unicode_internal(CHARSET_INFO *cs,
+ uchar *dst, uchar *de, uint *nweights,
+ const uchar *src, const uchar *se)
{
my_wc_t UNINIT_VAR(wc);
int res;
uchar *dst0= dst;
- uchar *de= dst + dstlen;
- const uchar *se= src + srclen;
MY_UNICASE_INFO *uni_plane= (cs->state & MY_CS_BINSORT) ?
NULL : cs->caseinfo;
- DBUG_ASSERT(!srclen || src);
- for (; dst < de && nweights; nweights--)
+ DBUG_ASSERT(src || !se);
+
+ for (; dst < de && *nweights; (*nweights)--)
{
if ((res= cs->cset->mb_wc(cs, &wc, src, se)) <= 0)
break;
@@ -4728,6 +4719,29 @@ my_strnxfrm_unicode(CHARSET_INFO *cs,
if (dst < de)
*dst++= (uchar) (wc & 0xFF);
}
+ return dst - dst0;
+}
+
+
+/*
+ Store sorting weights using 2 bytes per character.
+
+ This function is shared between
+ - utf8mb3_general_ci, utf8_bin, ucs2_general_ci, ucs2_bin
+ which support BMP only (U+0000..U+FFFF).
+ - utf8mb4_general_ci, utf16_general_ci, utf32_general_ci,
+ which map all supplementary characters to weight 0xFFFD.
+*/
+size_t
+my_strnxfrm_unicode(CHARSET_INFO *cs,
+ uchar *dst, size_t dstlen, uint nweights,
+ const uchar *src, size_t srclen, uint flags)
+{
+ uchar *dst0= dst;
+ uchar *de= dst + dstlen;
+ dst+= my_strnxfrm_unicode_internal(cs, dst, de, &nweights,
+ src, src + srclen);
+ DBUG_ASSERT(dst <= de); /* Safety */
if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
dst+= my_strxfrm_pad_nweights_unicode(dst, de, nweights);
@@ -4740,6 +4754,35 @@ my_strnxfrm_unicode(CHARSET_INFO *cs,
}
+size_t
+my_strnxfrm_unicode_nopad(CHARSET_INFO *cs,
+ uchar *dst, size_t dstlen, uint nweights,
+ const uchar *src, size_t srclen, uint flags)
+{
+ uchar *dst0= dst;
+ uchar *de= dst + dstlen;
+ dst+= my_strnxfrm_unicode_internal(cs, dst, de, &nweights,
+ src, src + srclen);
+ DBUG_ASSERT(dst <= de); /* Safety */
+
+ if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
+ {
+ size_t len= de - dst;
+ set_if_smaller(len, nweights * 2);
+ memset(dst, 0x00, len);
+ dst+= len;
+ }
+
+ my_strxfrm_desc_and_reverse(dst0, dst, flags, 0);
+
+ if ((flags & MY_STRXFRM_PAD_TO_MAXLEN) && dst < de)
+ {
+ memset(dst, 0x00, de - dst);
+ dst= de;
+ }
+ return dst - dst0;
+}
+
/*
For BMP-only collations that use 2 bytes per weight.
*/
@@ -4750,24 +4793,18 @@ my_strnxfrmlen_unicode(CHARSET_INFO *cs, size_t len)
return ((len + cs->mbmaxlen - 1) / cs->mbmaxlen) * 2;
}
-/*
- Store sorting weights using 3 bytes per character.
- This function is shared between utf8mb4_bin, utf16_bin, utf32_bin.
-*/
size_t
-my_strnxfrm_unicode_full_bin(CHARSET_INFO *cs,
- uchar *dst, size_t dstlen, uint nweights,
- const uchar *src, size_t srclen, uint flags)
+my_strnxfrm_unicode_full_bin_internal(CHARSET_INFO *cs,
+ uchar *dst, uchar *de, uint *nweights,
+ const uchar *src, const uchar *se)
{
my_wc_t UNINIT_VAR(wc);
uchar *dst0= dst;
- uchar *de= dst + dstlen;
- const uchar *se = src + srclen;
- DBUG_ASSERT(!srclen || src);
+ DBUG_ASSERT(src || !se);
DBUG_ASSERT(cs->state & MY_CS_BINSORT);
- for ( ; dst < de && nweights; nweights--)
+ for (; dst < de && *nweights; (*nweights)--)
{
int res;
if ((res= cs->cset->mb_wc(cs, &wc, src, se)) <= 0)
@@ -4781,6 +4818,26 @@ my_strnxfrm_unicode_full_bin(CHARSET_INFO *cs,
*dst++= (uchar) (wc & 0xFF);
}
}
+ return dst - dst0;
+}
+
+
+/*
+ Store sorting weights using 3 bytes per character.
+ This function is shared between utf8mb4_bin, utf16_bin, utf32_bin.
+*/
+size_t
+my_strnxfrm_unicode_full_bin(CHARSET_INFO *cs,
+ uchar *dst, size_t dstlen, uint nweights,
+ const uchar *src, size_t srclen, uint flags)
+{
+ my_wc_t UNINIT_VAR(wc);
+ uchar *dst0= dst;
+ uchar *de= dst + dstlen;
+
+ dst+= my_strnxfrm_unicode_full_bin_internal(cs, dst, de, &nweights,
+ src, src + srclen);
+ DBUG_ASSERT(dst <= de); /* Safety */
if (flags & MY_STRXFRM_PAD_WITH_SPACE)
{
@@ -4795,7 +4852,7 @@ my_strnxfrm_unicode_full_bin(CHARSET_INFO *cs,
}
}
}
-
+
my_strxfrm_desc_and_reverse(dst0, dst, flags, 0);
if (flags & MY_STRXFRM_PAD_TO_MAXLEN)
@@ -4816,6 +4873,38 @@ my_strnxfrm_unicode_full_bin(CHARSET_INFO *cs,
size_t
+my_strnxfrm_unicode_full_nopad_bin(CHARSET_INFO *cs,
+ uchar *dst, size_t dstlen, uint nweights,
+ const uchar *src, size_t srclen, uint flags)
+{
+ my_wc_t UNINIT_VAR(wc);
+ uchar *dst0= dst;
+ uchar *de= dst + dstlen;
+
+ dst+= my_strnxfrm_unicode_full_bin_internal(cs, dst, de, &nweights,
+ src, src + srclen);
+ DBUG_ASSERT(dst <= de); /* Safety */
+
+ if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
+ {
+ size_t len= de - dst;
+ set_if_smaller(len, nweights * 3);
+ memset(dst, 0x00, len);
+ dst+= len;
+ }
+
+ my_strxfrm_desc_and_reverse(dst0, dst, flags, 0);
+
+ if ((flags & MY_STRXFRM_PAD_TO_MAXLEN) && dst < de)
+ {
+ memset(dst, 0x00, de - dst);
+ dst= de;
+ }
+ return dst - dst0;
+}
+
+
+size_t
my_strnxfrmlen_unicode_full_bin(CHARSET_INFO *cs, size_t len)
{
return ((len + 3) / cs->mbmaxlen) * 3;
@@ -5092,33 +5181,40 @@ static size_t my_caseup_utf8(CHARSET_INFO *cs, char *src, size_t srclen,
}
-static void my_hash_sort_utf8(CHARSET_INFO *cs, const uchar *s, size_t slen,
- ulong *nr1, ulong *nr2)
+static void my_hash_sort_utf8_nopad(CHARSET_INFO *cs, const uchar *s, size_t slen,
+ ulong *nr1, ulong *nr2)
{
my_wc_t wc;
int res;
- const uchar *e=s+slen;
+ const uchar *e= s+slen;
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
register ulong m1= *nr1, m2= *nr2;
- /*
- Remove end space. We have to do this to be able to compare
- 'A ' and 'A' as identical
- */
- while (e > s && e[-1] == ' ')
- e--;
-
while ((s < e) && (res=my_utf8_uni(cs,&wc, (uchar *)s, (uchar*)e))>0 )
{
my_tosort_unicode(uni_plane, &wc, cs->state);
MY_HASH_ADD_16(m1, m2, wc);
- s+=res;
+ s+= res;
}
*nr1= m1;
*nr2= m2;
}
+static void my_hash_sort_utf8(CHARSET_INFO *cs, const uchar *s, size_t slen,
+ ulong *nr1, ulong *nr2)
+{
+ const uchar *e= s+slen;
+ /*
+ Remove end space. We have to do this to be able to compare
+ 'A ' and 'A' as identical
+ */
+ while (e > s && e[-1] == ' ')
+ e--;
+ my_hash_sort_utf8_nopad(cs, s, e - s, nr1, nr2);
+}
+
+
static size_t my_caseup_str_utf8(CHARSET_INFO *cs, char *src)
{
my_wc_t wc;
@@ -5387,6 +5483,15 @@ static inline int my_weight_mb3_utf8_general_ci(uchar b0, uchar b1, uchar b2)
#include "strcoll.ic"
+#define DEFINE_STRNNCOLLSP_NOPAD
+#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8_general_nopad_ci
+#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
+#define WEIGHT_MB1(x) my_weight_mb1_utf8_general_ci(x)
+#define WEIGHT_MB2(x,y) my_weight_mb2_utf8_general_ci(x,y)
+#define WEIGHT_MB3(x,y,z) my_weight_mb3_utf8_general_ci(x,y,z)
+#include "strcoll.ic"
+
+
static inline int my_weight_mb1_utf8_general_mysql500_ci(uchar b)
{
return (int) plane00_mysql500[b & 0xFF].sort;
@@ -5426,6 +5531,14 @@ my_weight_mb3_utf8_general_mysql500_ci(uchar b0, uchar b1, uchar b2)
#include "strcoll.ic"
+#define DEFINE_STRNNCOLLSP_NOPAD
+#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8_nopad_bin
+#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
+#define WEIGHT_MB1(x) ((int) (uchar) (x))
+#define WEIGHT_MB2(x,y) ((int) UTF8MB2_CODE(x,y))
+#define WEIGHT_MB3(x,y,z) ((int) UTF8MB3_CODE(x,y,z))
+#include "strcoll.ic"
+
/*
TODO-10.2: join this with pad_max_char() in ctype-mb.c
*/
@@ -5505,6 +5618,39 @@ static MY_COLLATION_HANDLER my_collation_utf8_bin_handler =
my_propagate_simple
};
+
+static MY_COLLATION_HANDLER my_collation_utf8_general_nopad_ci_handler =
+{
+ NULL, /* init */
+ my_strnncoll_utf8_general_ci,
+ my_strnncollsp_utf8_general_nopad_ci,
+ my_strnxfrm_unicode_nopad,
+ my_strnxfrmlen_unicode,
+ my_like_range_mb,
+ my_wildcmp_utf8,
+ my_strcasecmp_utf8,
+ my_instr_mb,
+ my_hash_sort_utf8_nopad,
+ my_propagate_complex
+};
+
+
+static MY_COLLATION_HANDLER my_collation_utf8_nopad_bin_handler =
+{
+ NULL, /* init */
+ my_strnncoll_utf8_bin,
+ my_strnncollsp_utf8_nopad_bin,
+ my_strnxfrm_unicode_nopad,
+ my_strnxfrmlen_unicode,
+ my_like_range_mb,
+ my_wildcmp_mb_bin,
+ my_strcasecmp_mb_bin,
+ my_instr_mb,
+ my_hash_sort_mb_nopad_bin,
+ my_propagate_simple
+};
+
+
MY_CHARSET_HANDLER my_charset_utf8_handler=
{
NULL, /* init */
@@ -5638,6 +5784,73 @@ struct charset_info_st my_charset_utf8_bin=
&my_collation_utf8_bin_handler
};
+
+struct charset_info_st my_charset_utf8_general_nopad_ci=
+{
+ MY_NOPAD_ID(33),0,0, /* number */
+ MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NOPAD, /* state */
+ "utf8", /* cs name */
+ "utf8_general_nopad_ci", /* name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_utf8, /* ctype */
+ to_lower_utf8, /* to_lower */
+ to_upper_utf8, /* to_upper */
+ to_upper_utf8, /* sort_order */
+ NULL, /* uca */
+ NULL, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ &my_unicase_default, /* caseinfo */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 1, /* mbminlen */
+ 3, /* mbmaxlen */
+ 0, /* 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_utf8_general_nopad_ci_handler
+};
+
+
+struct charset_info_st my_charset_utf8_nopad_bin=
+{
+ MY_NOPAD_ID(83),0,0,/* number */
+ MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_BINSORT|MY_CS_UNICODE|MY_CS_NOPAD,
+ "utf8", /* cs name */
+ "utf8_nopad_bin", /* name */
+ "", /* comment */
+ NULL, /* tailoring */
+ ctype_utf8, /* ctype */
+ to_lower_utf8, /* to_lower */
+ to_upper_utf8, /* 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 */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 1, /* mbminlen */
+ 3, /* mbmaxlen */
+ 0, /* 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_utf8_nopad_bin_handler
+};
+
+
#ifdef HAVE_UTF8_GENERAL_CS
/*
@@ -7427,7 +7640,7 @@ my_caseup_utf8mb4(CHARSET_INFO *cs, char *src, size_t srclen,
static void
-my_hash_sort_utf8mb4(CHARSET_INFO *cs, const uchar *s, size_t slen,
+my_hash_sort_utf8mb4_nopad(CHARSET_INFO *cs, const uchar *s, size_t slen,
ulong *nr1, ulong *nr2)
{
my_wc_t wc;
@@ -7436,13 +7649,6 @@ my_hash_sort_utf8mb4(CHARSET_INFO *cs, const uchar *s, size_t slen,
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
register ulong m1= *nr1, m2= *nr2;
- /*
- Remove end space. We do this to be able to compare
- 'A ' and 'A' as identical
- */
- while (e > s && e[-1] == ' ')
- e--;
-
while ((res= my_mb_wc_utf8mb4(cs, &wc, (uchar*) s, (uchar*) e)) > 0)
{
my_tosort_unicode(uni_plane, &wc, cs->state);
@@ -7465,6 +7671,21 @@ my_hash_sort_utf8mb4(CHARSET_INFO *cs, const uchar *s, size_t slen,
}
+static void
+my_hash_sort_utf8mb4(CHARSET_INFO *cs, const uchar *s, size_t slen,
+ ulong *nr1, ulong *nr2)
+{
+ const uchar *e= s + slen;
+ /*
+ Remove end space. We do this to be able to compare
+ 'A ' and 'A' as identical
+ */
+ while (e > s && e[-1] == ' ')
+ e--;
+ my_hash_sort_utf8mb4_nopad(cs, s, e - s, nr1, nr2);
+}
+
+
static size_t
my_caseup_str_utf8mb4(CHARSET_INFO *cs, char *src)
{
@@ -7719,6 +7940,30 @@ size_t my_well_formed_len_utf8mb4(CHARSET_INFO *cs,
#include "strcoll.ic"
+#define DEFINE_STRNNCOLLSP_NOPAD
+#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8mb4_general_nopad_ci
+#define IS_MB4_CHAR(b0,b1,b2,b3) IS_UTF8MB4_STEP3(b0,b1,b2,b3)
+#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
+#define WEIGHT_MB1(b0) my_weight_mb1_utf8_general_ci(b0)
+#define WEIGHT_MB2(b0,b1) my_weight_mb2_utf8_general_ci(b0,b1)
+#define WEIGHT_MB3(b0,b1,b2) my_weight_mb3_utf8_general_ci(b0,b1,b2)
+/*
+ All non-BMP characters have the same weight.
+*/
+#define WEIGHT_MB4(b0,b1,b2,b3) MY_CS_REPLACEMENT_CHARACTER
+#include "strcoll.ic"
+
+
+#define DEFINE_STRNNCOLLSP_NOPAD
+#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8mb4_nopad_bin
+#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
+#define WEIGHT_MB1(b0) ((int) (uchar) (b0))
+#define WEIGHT_MB2(b0,b1) ((int) UTF8MB2_CODE(b0,b1))
+#define WEIGHT_MB3(b0,b1,b2) ((int) UTF8MB3_CODE(b0,b1,b2))
+#define WEIGHT_MB4(b0,b1,b2,b3) ((int) UTF8MB4_CODE(b0,b1,b2,b3))
+#include "strcoll.ic"
+
+
static MY_COLLATION_HANDLER my_collation_utf8mb4_general_ci_handler=
{
NULL, /* init */
@@ -7737,7 +7982,7 @@ static MY_COLLATION_HANDLER my_collation_utf8mb4_general_ci_handler=
static MY_COLLATION_HANDLER my_collation_utf8mb4_bin_handler =
{
- NULL, /* init */
+ NULL, /* init */
my_strnncoll_utf8mb4_bin,
my_strnncollsp_utf8mb4_bin,
my_strnxfrm_unicode_full_bin,
@@ -7751,6 +7996,38 @@ static MY_COLLATION_HANDLER my_collation_utf8mb4_bin_handler =
};
+static MY_COLLATION_HANDLER my_collation_utf8mb4_general_nopad_ci_handler=
+{
+ NULL, /* init */
+ my_strnncoll_utf8mb4_general_ci,
+ my_strnncollsp_utf8mb4_general_nopad_ci,
+ my_strnxfrm_unicode_nopad,
+ my_strnxfrmlen_unicode,
+ my_like_range_mb,
+ my_wildcmp_utf8mb4,
+ my_strcasecmp_utf8mb4,
+ my_instr_mb,
+ my_hash_sort_utf8mb4_nopad,
+ my_propagate_complex
+};
+
+
+static MY_COLLATION_HANDLER my_collation_utf8mb4_nopad_bin_handler =
+{
+ NULL, /* init */
+ my_strnncoll_utf8mb4_bin,
+ my_strnncollsp_utf8mb4_nopad_bin,
+ my_strnxfrm_unicode_full_nopad_bin,
+ my_strnxfrmlen_unicode_full_bin,
+ my_like_range_mb,
+ my_wildcmp_mb_bin,
+ my_strcasecmp_mb_bin,
+ my_instr_mb,
+ my_hash_sort_mb_nopad_bin,
+ my_propagate_simple
+};
+
+
MY_CHARSET_HANDLER my_charset_utf8mb4_handler=
{
NULL, /* init */
@@ -7852,4 +8129,72 @@ struct charset_info_st my_charset_utf8mb4_bin=
&my_collation_utf8mb4_bin_handler
};
+
+struct charset_info_st my_charset_utf8mb4_general_nopad_ci=
+{
+ MY_NOPAD_ID(45),0,0,/* number */
+ MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_UNICODE_SUPPLEMENT|
+ MY_CS_NOPAD, /* state */
+ MY_UTF8MB4, /* cs name */
+ MY_UTF8MB4_GENERAL_NOPAD_CI,/* name */
+ "UTF-8 Unicode", /* comment */
+ NULL, /* tailoring */
+ ctype_utf8mb4, /* ctype */
+ to_lower_utf8mb4, /* to_lower */
+ to_upper_utf8mb4, /* to_upper */
+ to_upper_utf8mb4, /* sort_order */
+ NULL, /* uca */
+ NULL, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ &my_unicase_default,/* caseinfo */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 1, /* mbminlen */
+ 4, /* mbmaxlen */
+ 0, /* 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_utf8mb4_general_nopad_ci_handler
+};
+
+
+struct charset_info_st my_charset_utf8mb4_nopad_bin=
+{
+ MY_NOPAD_ID(46),0,0, /* number */
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_STRNXFRM|MY_CS_UNICODE|
+ MY_CS_UNICODE_SUPPLEMENT|MY_CS_NOPAD, /* state */
+ MY_UTF8MB4, /* cs name */
+ MY_UTF8MB4_NOPAD_BIN, /* name */
+ "UTF-8 Unicode", /* comment */
+ NULL, /* tailoring */
+ ctype_utf8mb4, /* ctype */
+ to_lower_utf8mb4, /* to_lower */
+ to_upper_utf8mb4, /* 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 */
+ 1, /* strxfrm_multiply */
+ 1, /* caseup_multiply */
+ 1, /* casedn_multiply */
+ 1, /* mbminlen */
+ 4, /* mbmaxlen */
+ 0, /* 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_utf8mb4_nopad_bin_handler
+};
+
#endif /* HAVE_CHARSET_utf8mb4 */
diff --git a/strings/ctype.c b/strings/ctype.c
index 2764a327bb9..7d9789e48e2 100644
--- a/strings/ctype.c
+++ b/strings/ctype.c
@@ -618,6 +618,8 @@ static int cs_value(MY_XML_PARSER *st,const char *attr, size_t len)
i->cs.state|= MY_CS_BINSORT;
else if (!strncmp("compiled",attr,len))
i->cs.state|= MY_CS_COMPILED;
+ else if (!strncmp("nopad",attr,len))
+ i->cs.state|= MY_CS_NOPAD;
break;
case _CS_UPPERMAP:
fill_uchar(i->to_upper,MY_CS_TO_UPPER_TABLE_SIZE,attr,len);
diff --git a/strings/strcoll.ic b/strings/strcoll.ic
index a9693b1f3c0..c647a5ef57e 100644
--- a/strings/strcoll.ic
+++ b/strings/strcoll.ic
@@ -202,8 +202,10 @@ MY_FUNCTION_NAME(strnncoll)(CHARSET_INFO *cs __attribute__((unused)),
}
+#ifdef DEFINE_STRNNCOLLSP_NOPAD
+
/**
- Compare two strings according to the collation, with PAD SPACE handling.
+ Compare two strings according to the collation, with NO PAD handling.
@param cs - the character set and collation
@param a - the left string
@@ -212,7 +214,24 @@ MY_FUNCTION_NAME(strnncoll)(CHARSET_INFO *cs __attribute__((unused)),
@param b_length - the length of the right string
@return - the comparison result
*/
+static int
+MY_FUNCTION_NAME(strnncollsp)(CHARSET_INFO *cs __attribute__((unused)),
+ const uchar *a, size_t a_length,
+ const uchar *b, size_t b_length)
+{
+ return MY_FUNCTION_NAME(strnncoll)(cs, a, a_length, b, b_length, FALSE);
+}
+#else
+/**
+ Compare two strings according to the collation, with PAD SPACE handling.
+ @param cs - the character set and collation
+ @param a - the left string
+ @param a_length - the length of the left string
+ @param b - the right string
+ @param b_length - the length of the right string
+ @return - the comparison result
+*/
static int
MY_FUNCTION_NAME(strnncollsp)(CHARSET_INFO *cs __attribute__((unused)),
const uchar *a, size_t a_length,
@@ -257,6 +276,7 @@ MY_FUNCTION_NAME(strnncollsp)(CHARSET_INFO *cs __attribute__((unused)),
DBUG_ASSERT(0);
return 0;
}
+#endif
#ifdef DEFINE_STRNXFRM
@@ -292,7 +312,12 @@ MY_FUNCTION_NAME(strnxfrm)(CHARSET_INFO *cs,
else
*dst++= sort_order ? sort_order[*src++] : *src++;
}
+#ifdef DEFINE_STRNNCOLLSP_NOPAD
+ return my_strxfrm_pad_desc_and_reverse_nopad(cs, d0, dst, de,
+ nweights, flags, 0);
+#else
return my_strxfrm_pad_desc_and_reverse(cs, d0, dst, de, nweights, flags, 0);
+#endif
}
#endif /* DEFINE_STRNXFRM */
@@ -310,3 +335,4 @@ MY_FUNCTION_NAME(strnxfrm)(CHARSET_INFO *cs,
#undef WEIGHT_PAD_SPACE
#undef WEIGHT_MB2_FRM
#undef DEFINE_STRNXFRM
+#undef DEFINE_STRNNCOLLSP_NOPAD
diff --git a/strings/strings_def.h b/strings/strings_def.h
index 36d3d2b2fe9..8bdb806d1d2 100644
--- a/strings/strings_def.h
+++ b/strings/strings_def.h
@@ -32,6 +32,8 @@
#define DBUG_ASSERT(A) assert(A)
#endif
+#define MY_NOPAD_ID(x) ((x)+0x400)
+
/* SPACE_INT is a word that contains only spaces */
#if SIZEOF_INT == 4
#define SPACE_INT 0x20202020