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