Under terms of MDEV 27490 we'll add support for non-BMP identifiers
and upgrade casefolding information to Unicode version 14.0.0.
In Unicode-14.0.0 conversion to lower and upper cases can increase octet length
of the string, so conversion won't be possible in-place any more.
This patch removes virtual functions performing in-place casefolding:
- my_charset_handler_st::casedn_str()
- my_charset_handler_st::caseup_str()
and fixes the code to use the non-inplace functions instead:
- my_charset_handler_st::casedn()
- my_charset_handler_st::caseup()
MySQL 5.1 server
Server used to clip overly long user-names. This was presumably lost
when code was made UTF8-clean.
Now we emulate the behaviour for backward compatibility, but UTF8-ly
correct.
mysql-test/r/connect.result:
Show that user-names that are too long get clipped now.
mysql-test/t/connect.test:
Show that user-names that are too long get clipped now.
sql/sql_connect.cc:
Clip user-name to 16 characters (not bytes).
strings/CHARSET_INFO.txt:
Clarify in docs.
The main problem was already fixed by Igor under terms of 16674.
Adding some additional minor fixes and tests.
include/m_ctype.h:
Adding reference to CHARSET_INFO.txt
mysql-test/r/ctype_utf8.result:
Adding test case
mysql-test/t/ctype_utf8.test:
Adding test case
strings/CHARSET_INFO.txt:
Adding comment about max_sort_char
strings/ctype-mb.c:
Restiring that non-Unicode character sets use 0xFF as pad character
for max_str. Only Unicode character sets use wc_mb.
strings/ctype-utf8.c:
Fixed that max_sort_char for UTF8 from U+00FF to U+FFFF.