summaryrefslogtreecommitdiff
path: root/strings
diff options
context:
space:
mode:
authorunknown <bar@mysql.com>2004-09-13 12:07:01 +0500
committerunknown <bar@mysql.com>2004-09-13 12:07:01 +0500
commita7919046786d8d8d8230ac64af04cbbad1077aa2 (patch)
tree85290303ecb9d17eb096f306972a35a04304a045 /strings
parent4e639af733f2af49ff0afa66788c2cb19603531c (diff)
downloadmariadb-git-a7919046786d8d8d8230ac64af04cbbad1077aa2.tar.gz
Persian collation, contibuted by Jody McIntyre
Diffstat (limited to 'strings')
-rw-r--r--strings/ctype-uca.c95
1 files changed, 94 insertions, 1 deletions
diff --git a/strings/ctype-uca.c b/strings/ctype-uca.c
index edb84dbf225..446fc821337 100644
--- a/strings/ctype-uca.c
+++ b/strings/ctype-uca.c
@@ -6658,6 +6658,42 @@ static const char roman[]= /* i.e. Classical Latin */
"& V << u <<< U ";
/*
+ Persian collation support was provided by
+ Jody McIntyre <mysql@modernduck.com>
+
+ To: internals@lists.mysql.com
+ Subject: Persian UTF8 collation support
+ Date: 17.08.2004
+
+ Contraction is not implemented. Some implementations do perform
+ contraction but others do not, and it is able to sort all my test
+ strings correctly.
+
+ Jody.
+*/
+static const char persian[]=
+ "& \\u066D < \\u064E < \\uFE76 < \\uFE77 < \\u0650 < \\uFE7A < \\uFE7B"
+ " < \\u064F < \\uFE78 < \\uFE79 < \\u064B < \\uFE70 < \\uFE71"
+ " < \\u064D < \\uFE74 < \\u064C < \\uFE72"
+ "& \\uFE7F < \\u0653 < \\u0654 < \\u0655 < \\u0670"
+ "& \\u0669 < \\u0622 < \\u0627 < \\u0671 < \\u0621 < \\u0623 < \\u0625"
+ " < \\u0624 < \\u0626"
+ "& \\u0642 < \\u06A9 < \\u0643"
+ "& \\u0648 < \\u0647 < \\u0629 < \\u06C0 < \\u06CC < \\u0649 < \\u064A"
+ "& \\uFE80 < \\uFE81 < \\uFE82 < \\uFE8D < \\uFE8E < \\uFB50 < \\uFB51"
+ " < \\uFE80 < \\uFE83 < \\uFE84 < \\uFE87 < \\uFE88 < \\uFE85"
+ " < \\uFE86 < \\u0689 < \\u068A"
+ "& \\uFEAE < \\uFDFC"
+ "& \\uFED8 < \\uFB8E < \\uFB8F < \\uFB90 < \\uFB91 < \\uFED9 < \\uFEDA"
+ " < \\uFEDB < \\uFEDC"
+ "& \\uFEEE < \\uFEE9 < \\uFEEA < \\uFEEB < \\uFEEC < \\uFE93 < \\uFE94"
+ " < \\uFBA4 < \\uFBA5 < \\uFBFC < \\uFBFD < \\uFBFE < \\uFBFF"
+ " < \\uFEEF < \\uFEF0 < \\uFEF1 < \\uFEF2 < \\uFEF3 < \\uFEF4"
+ " < \\uFEF5 < \\uFEF6 < \\uFEF7 < \\uFEF8 < \\uFEF9 < \\uFEFA"
+ " < \\uFEFB < \\uFEFC";
+
+
+/*
Unicode Collation Algorithm:
Collation element (weight) scanner,
for consequent scan of collations
@@ -7671,7 +7707,7 @@ static int my_coll_rule_parse(MY_COLL_RULE *rule, size_t mitems,
return (size_t) nitems;
}
-#define MY_MAX_COLL_RULE 64
+#define MY_MAX_COLL_RULE 128
/*
This function copies an UCS2 collation from
@@ -8360,6 +8396,35 @@ CHARSET_INFO my_charset_ucs2_roman_uca_ci=
&my_collation_ucs2_uca_handler
};
+
+CHARSET_INFO my_charset_ucs2_persian_uca_ci=
+{
+ 144,0,0, /* number */
+ MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
+ "ucs2", /* cs name */
+ "ucs2_persian_ci", /* name */
+ "", /* comment */
+ persian, /* tailoring */
+ NULL, /* ctype */
+ NULL, /* to_lower */
+ NULL, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* contractions */
+ NULL, /* sort_order_big*/
+ NULL, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 8, /* strxfrm_multiply */
+ 2, /* mbminlen */
+ 2, /* mbmaxlen */
+ 9, /* min_sort_char */
+ 0xFFFF, /* max_sort_char */
+ &my_charset_ucs2_handler,
+ &my_collation_ucs2_uca_handler
+};
+
+
#endif
@@ -8838,4 +8903,32 @@ CHARSET_INFO my_charset_utf8_roman_uca_ci=
&my_charset_utf8_handler,
&my_collation_any_uca_handler
};
+
+CHARSET_INFO my_charset_utf8_persian_uca_ci=
+{
+ 208,0,0, /* number */
+ MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
+ "utf8", /* cs name */
+ "utf8_persian_ci", /* name */
+ "", /* comment */
+ persian, /* tailoring */
+ ctype_utf8, /* ctype */
+ NULL, /* to_lower */
+ NULL, /* to_upper */
+ NULL, /* sort_order */
+ NULL, /* contractions */
+ NULL, /* sort_order_big*/
+ NULL, /* tab_to_uni */
+ NULL, /* tab_from_uni */
+ NULL, /* state_map */
+ NULL, /* ident_map */
+ 8, /* strxfrm_multiply */
+ 1, /* mbminlen */
+ 2, /* mbmaxlen */
+ 9, /* min_sort_char */
+ 0xFFFF, /* max_sort_char */
+ &my_charset_utf8_handler,
+ &my_collation_any_uca_handler
+};
+
#endif