summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAlexander Nozdrin <alik@sun.com>2010-08-31 17:54:26 +0400
committerAlexander Nozdrin <alik@sun.com>2010-08-31 17:54:26 +0400
commit9e4928af69a01d6ef91e1c0ed1fb2d836959b773 (patch)
tree9cd301b009b02b51bfaeaa62de95ffc1fd48712a /include
parent8c8080adfb9dfd2244562d785de7928388959f64 (diff)
downloadmariadb-git-9e4928af69a01d6ef91e1c0ed1fb2d836959b773.tar.gz
Bug#55980 Character sets: supplementary character _bin ordering is wrong
Problem: - ORDER BY for utf8mb4_bin, utf16_bin and utf32_bin returned results in a wrong order, because old functions (supporting only BMP range) were used to handle these collations. - Additionally, utf16_bin did not sort supplementary characters between U+D700 and U+E000, as WL#1213 specification specified. include/m_ctype.h: Adding prototypes. mysql-test/include/ctype_filesort2.inc: Adding a new shared test file. mysql-test/t/ctype_utf8mb4.test: Adding tests. strings/ctype-ucs2.c: - Fixing my_strncoll[sp]_utf16_bin to compare binary representation instead of code points, to make columns with indexes sort correct. - Fixing my_collation_handler_utf32_bin and my_collation_handler_utf16_bin to use new functions. strings/ctype-utf8.c: - Adding my_strnxfrm[len]_unicode_fill_bin() to handle utf8mb4_bin, utf16_bin and utf32_bin, using 3 bytes per weight. This function also performs special reordering in case of utf16_bin. - Fixing my_collation_utf8mb4_bin handler to use the new function.
Diffstat (limited to 'include')
-rw-r--r--include/m_ctype.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/include/m_ctype.h b/include/m_ctype.h
index 06cbfd779c8..42e8f88cc0e 100644
--- a/include/m_ctype.h
+++ b/include/m_ctype.h
@@ -539,6 +539,11 @@ size_t my_strnxfrm_unicode(CHARSET_INFO *,
uchar *dst, size_t dstlen,
const uchar *src, size_t srclen);
+size_t my_strnxfrm_unicode_full_bin(CHARSET_INFO *,
+ uchar *dst, size_t dstlen,
+ const uchar *src, size_t srclen);
+size_t my_strnxfrmlen_unicode_full_bin(CHARSET_INFO *, size_t);
+
int my_wildcmp_unicode(CHARSET_INFO *cs,
const char *str, const char *str_end,
const char *wildstr, const char *wildend,