Details
-
Task
-
Status: Closed (View Workflow)
-
Critical
-
Resolution: Fixed
-
None
Description
We use my_casedn_str() to convert identifiers to cover case.
This function uses the fact that utf8mb3_bin and utf8mb3_general_ci (used for identifiers internally) cannot increase string length, so it performs conversion in place.
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 case can increase binary length, so conversion cannot be done in place.
Let's remove all use of my_casedn_str() and replace them to calls for a similar function CHARSET_INFO::casedn(), which has separate pointers to the source and the destination.
For symmetry, let's also remove my_caseup_str() calls and replace them to calls for CHARSET_INFO::caseup().
Attachments
Issue Links
- blocks
-
MDEV-27490 Allow full utf8mb4 for identifiers
- Stalled
- causes
-
MDEV-33223 Assertion `dst_size > 4' failed in size_t Identifier_chain2::make_sep_name_opt_casedn(char*, size_t, int, bool) const
- Closed
-
MDEV-33733 Galera tests fail with wrong result due to a wrong case in status variables
- Closed
- is blocked by
-
MDEV-31948 Add class DBNameBuffer, split check_db_name() into stages
- Closed
-
MDEV-31972 Change parameter of make_sp_name*() from LEX_CSTRING to Lex_ident_sys_st
- Closed
-
MDEV-31974 Remove global function normalize_db_name()
- Closed
-
MDEV-31978 Turn ok_for_lower_case_names() to a method in Lex_ident_fs
- Closed
-
MDEV-31982 Remove old check_db_name() from prepare_db_action()
- Closed
-
MDEV-31986 Remove old check_db_name() from make_table_name_list()
- Closed
-
MDEV-31989 Cleanup Lex_ident_fs::check_body()
- Closed
-
MDEV-31991 Split class Database_qualified_name
- Closed
-
MDEV-31992 Automatic conversion from LEX_STRING to LEX_CSTRING
- Closed
-
MDEV-32002 Remove my_casedn_str() in append_identifier() context
- Closed
-
MDEV-32013 Add Field::val_lex_string_strmake()
- Closed
-
MDEV-32019 Replace my_casedn_str(local_buffer) to CharBuffer::copy_casedn()
- Closed
-
MDEV-32025 Crashes in MDL_key::mdl_key_init with lower-case-table-names=2
- Closed
-
MDEV-32026 lowercase_table2.test failures in 11.3
- Closed
-
MDEV-32081 Remove my_casedn_str() from get_canonical_filename()
- Closed
- relates to
-
MDEV-31340 Remove MY_COLLATION_HANDLER::strcasecmp()
- Closed
-
MDEV-32071 Bad case letter in *.ibd files with --lower-case-table-names=2
- Open
-
MDEV-33019 The database part is not case sensitive in SP names
- Closed
-
MDEV-33020 The database part is not case sensitive in SP names in PERFORMANCE_SCHEMA
- Open