mariadb/mysys
Alexander Barkov fd247cc21f MDEV-31340 Remove MY_COLLATION_HANDLER::strcasecmp()
This patch also fixes:
  MDEV-33050 Build-in schemas like oracle_schema are accent insensitive
  MDEV-33084 LASTVAL(t1) and LASTVAL(T1) do not work well with lower-case-table-names=0
  MDEV-33085 Tables T1 and t1 do not work well with ENGINE=CSV and lower-case-table-names=0
  MDEV-33086 SHOW OPEN TABLES IN DB1 -- is case insensitive with lower-case-table-names=0
  MDEV-33088 Cannot create triggers in the database `MYSQL`
  MDEV-33103 LOCK TABLE t1 AS t2 -- alias is not case sensitive with lower-case-table-names=0
  MDEV-33109 DROP DATABASE MYSQL -- does not drop SP with lower-case-table-names=0
  MDEV-33110 HANDLER commands are case insensitive with lower-case-table-names=0
  MDEV-33119 User is case insensitive in INFORMATION_SCHEMA.VIEWS
  MDEV-33120 System log table names are case insensitive with lower-cast-table-names=0

- Removing the virtual function strnncoll() from MY_COLLATION_HANDLER

- Adding a wrapper function CHARSET_INFO::streq(), to compare
  two strings for equality. For now it calls strnncoll() internally.
  In the future it will turn into a virtual function.

- Adding new accent sensitive case insensitive collations:
    - utf8mb4_general1400_as_ci
    - utf8mb3_general1400_as_ci
  They implement accent sensitive case insensitive comparison.
  The weight of a character is equal to the code point of its
  upper case variant. These collations use Unicode-14.0.0 casefolding data.

  The result of
     my_charset_utf8mb3_general1400_as_ci.strcoll()
  is very close to the former
     my_charset_utf8mb3_general_ci.strcasecmp()

  There is only a difference in a couple dozen rare characters, because:
    - the switch from "tolower" to "toupper" comparison, to make
      utf8mb3_general1400_as_ci closer to utf8mb3_general_ci
    - the switch from Unicode-3.0.0 to Unicode-14.0.0
  This difference should be tolarable. See the list of affected
  characters in the MDEV description.

  Note, utf8mb4_general1400_as_ci correctly handles non-BMP characters!
  Unlike utf8mb4_general_ci, it does not treat all BMP characters
  as equal.

- Adding classes representing names of the file based database objects:

    Lex_ident_db
    Lex_ident_table
    Lex_ident_trigger

  Their comparison collation depends on the underlying
  file system case sensitivity and on --lower-case-table-names
  and can be either my_charset_bin or my_charset_utf8mb3_general1400_as_ci.

- Adding classes representing names of other database objects,
  whose names have case insensitive comparison style,
  using my_charset_utf8mb3_general1400_as_ci:

  Lex_ident_column
  Lex_ident_sys_var
  Lex_ident_user_var
  Lex_ident_sp_var
  Lex_ident_ps
  Lex_ident_i_s_table
  Lex_ident_window
  Lex_ident_func
  Lex_ident_partition
  Lex_ident_with_element
  Lex_ident_rpl_filter
  Lex_ident_master_info
  Lex_ident_host
  Lex_ident_locale
  Lex_ident_plugin
  Lex_ident_engine
  Lex_ident_server
  Lex_ident_savepoint
  Lex_ident_charset
  engine_option_value::Name

- All the mentioned Lex_ident_xxx classes implement a method streq():

  if (ident1.streq(ident2))
     do_equal();

  This method works as a wrapper for CHARSET_INFO::streq().

- Changing a lot of "LEX_CSTRING name" to "Lex_ident_xxx name"
  in class members and in function/method parameters.

- Replacing all calls like
    system_charset_info->coll->strcasecmp(ident1, ident2)
  to
    ident1.streq(ident2)

- Taking advantage of the c++11 user defined literal operator
  for LEX_CSTRING (see m_strings.h) and Lex_ident_xxx (see lex_ident.h)
  data types. Use example:

  const Lex_ident_column primary_key_name= "PRIMARY"_Lex_ident_column;

  is now a shorter version of:

  const Lex_ident_column primary_key_name=
    Lex_ident_column({STRING_WITH_LEN("PRIMARY")});
2024-04-18 15:22:10 +04:00
..
crc32
array.c
base64.c
ChangeLog
charset-def.c MDEV-31340 Remove MY_COLLATION_HANDLER::strcasecmp() 2024-04-18 15:22:10 +04:00
charset.c MDEV-31340 Remove MY_COLLATION_HANDLER::strcasecmp() 2024-04-18 15:22:10 +04:00
CMakeLists.txt MDEV-32567 Remove thr_alarm from server codebase 2023-11-23 11:52:38 +11:00
crc32ieee.cc
errors.c
file_logger.c
get_password.c
guess_malloc_library.c
hash.c MDEV-31340 Remove MY_COLLATION_HANDLER::strcasecmp() 2024-04-18 15:22:10 +04:00
lf_alloc-pin.c
lf_dynarray.c
lf_hash.cc
list.c
ma_dyncol.c Merge branch '10.5' into 10.6 2023-11-08 15:57:05 +01:00
mf_arr_appstr.c
mf_cache.c
mf_dirname.c
mf_fn_ext.c
mf_format.c
mf_getdate.c
mf_iocache.c
mf_iocache2.c MDEV-31273: Precompute binlog checksums 2023-10-27 19:57:43 +02:00
mf_keycache.c
mf_keycaches.c
mf_loadpath.c
mf_pack.c
mf_path.c
mf_qsort.c
mf_qsort2.c
mf_radix.c
mf_same.c
mf_sort.c
mf_soundex.c
mf_tempdir.c
mf_tempfile.c
mf_unixpath.c
mf_wcomp.c
mulalloc.c
my_access.c MDEV-31340 Remove MY_COLLATION_HANDLER::strcasecmp() 2024-04-18 15:22:10 +04:00
my_addr_resolve.c Backport my_addr_resolve from 10.6 to get latest bug fixes in. 2023-11-27 19:08:14 +02:00
my_alloc.c Merge branch '11.2' into 11.3 2023-12-21 02:14:59 +01:00
my_atomic_writes.c
my_basename.c
my_bit.c
my_bitmap.c
my_chmod.c
my_chsize.c
my_compare.c Merge branch '10.4' into 10.5 2023-11-08 12:59:00 +01:00
my_compress.c
my_copy.c
my_cpu.c
my_create.c
my_default.c
my_delete.c
my_div.c
my_dlerror.c
my_error.c
my_file.c
my_fopen.c
my_fstream.c
my_gethwaddr.c
my_getncpus.c
my_getopt.c MDEV-31340 Remove MY_COLLATION_HANDLER::strcasecmp() 2024-04-18 15:22:10 +04:00
my_getpagesize.c
my_getsystime.c
my_getwd.c
my_init.c MDEV-32567 Remove thr_alarm from server codebase 2023-11-23 11:52:38 +11:00
my_largepage.c
my_lib.c
my_libwrap.c
my_likely.c
my_lock.c MDEV-32567 Remove thr_alarm from server codebase 2023-11-23 11:52:38 +11:00
my_lockmem.c
my_malloc.c
my_memmem.c
my_mess.c
my_minidump.cc
my_mkdir.c
my_mmap.c
my_new.cc
my_once.c
my_open.c
my_port.c
my_pread.c
my_pthread.c MDEV-32567 Remove thr_alarm from server codebase 2023-11-23 11:52:38 +11:00
my_quick.c
my_rdtsc.c
my_read.c
my_redel.c
my_rename.c
my_rnd.c
my_safehash.c
my_safehash.h
my_seek.c
my_setuser.c
my_sleep.c
my_static.c MDEV-32567 Remove thr_alarm from server codebase 2023-11-23 11:52:38 +11:00
my_static.h
my_symlink.c
my_symlink2.c
my_sync.c
my_thr_init.c
my_timezone.cc MDEV-33096 mysys/my_timezone.cc does not compile on AIX 2023-12-22 13:17:55 +01:00
my_uuid.c
my_win_popen.cc
my_wincond.c
my_winerr.c
my_winfile.c
my_winthread.c
my_wintoken.c
my_write.c
mysys_priv.h MDEV-32567 Remove thr_alarm from server codebase 2023-11-23 11:52:38 +11:00
psi_noop.c
ptr_cmp.c
queues.c
safemalloc.c Merge branch '10.5' into 10.6 2023-12-17 11:20:43 +01:00
stacktrace.c
string.c
test_charset.c
test_dir.c
test_thr_mutex.c
test_xml.c
testhash.c
thr_lock.c Merge branch '11.1' into 11.2 2024-02-02 17:43:57 +01:00
thr_mutex.c Merge branch '10.6' into 10.11 2024-01-30 08:17:58 +01:00
thr_rwlock.c
thr_timer.c MDEV-33092 Undefined reference to concurrency on Solaris 2024-01-10 10:16:20 +01:00
tree.c
typelib.c
waiting_threads.c
wqueue.c