summaryrefslogtreecommitdiff
path: root/strings/ctype-euc_kr.c
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/ctype-euc_kr.c
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/ctype-euc_kr.c')
-rw-r--r--strings/ctype-euc_kr.c112
1 files changed, 112 insertions, 0 deletions
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