MariaDB server is a community developed fork of MySQL server. Started by core members of the original MySQL team, MariaDB actively works with outside developers to deliver the most featureful, stable, and sanely licensed open SQL server in the industry.
Find a file
Alexander Barkov 6075f12c65 MDEV-31071 Refactor case folding data types in Unicode collations
This is a non-functional change. It changes the way how case folding data
and weight data (for simple Unicode collations) are stored:

- Removing data types MY_UNICASE_CHARACTER, MY_UNICASE_INFO
- Using data types MY_CASEFOLD_CHARACTER, MY_CASEFOLD_INFO instead.

This patch changes simple Unicode collations in a similar way
how MDEV-30695 previously changed Asian collations.

No new MTR tests are needed. The underlying code is thoroughly
covered by a number of ctype_*_ws.test and ctype_*_casefold.test
files, which were added recently as a preparation
for this change.

Old and new Unicode data layout
-------------------------------

Case folding data is now stored in separate tables
consisting of MY_CASEFOLD_CHARACTER elements with two members:

    typedef struct casefold_info_char_t
    {
      uint32 toupper;
      uint32 tolower;
    } MY_CASEFOLD_CHARACTER;

while weight data (for simple non-UCA collations xxx_general_ci
and xxx_general_mysql500_ci) is stored in separate arrays of
uint16 elements.

Before this change case folding data and simple weight data were
stored together, in tables of the following elements with three members:

    typedef struct unicase_info_char_st
    {
      uint32 toupper;
      uint32 tolower;
      uint32 sort;          /* weights for simple collations */
    } MY_UNICASE_CHARACTER;

This data format was redundant, because weights (the "sort" member) were
needed only for these two simple Unicode collations:
- xxx_general_ci
- xxx_general_mysql500_ci

Adding case folding information for Unicode-14.0.0 using the old
format would waste memory without purpose.

Detailed changes
----------------
- Changing the underlying data types as described above

- Including unidata-dump.c into the sources.
  This program was earlier used to dump UnicodeData.txt
  (e.g. https://www.unicode.org/Public/14.0.0/ucd/UnicodeData.txt)
  into MySQL / MariaDB source files.
  It was originally written in 2002, but has not been distributed yet
  together with MySQL / MariaDB sources.

- Removing the old format Unicode data earlier dumped from UnicodeData.txt
  (versions 3.0.0 and 5.2.0) from ctype-utf8.c.
  Adding Unicode data in the new format into separate header files,
  to maintain the code easier:

    - ctype-unicode300-casefold.h
    - ctype-unicode300-casefold-tr.h
    - ctype-unicode300-general_ci.h
    - ctype-unicode300-general_mysql500_ci.h
    - ctype-unicode520-casefold.h

- Adding a new file ctype-unidata.c as an aggregator for
  the header files listed above.
2023-04-18 11:29:25 +04:00
.github
BUILD Added detection of memory overwrite with multi_malloc 2023-02-27 19:25:44 +02:00
client Merge 10.9 into 10.10 2023-04-14 12:24:14 +03:00
cmake Merge branch '10.8' into 10.9 2023-01-31 10:37:31 +01:00
dbug Merge 10.6 into 10.8 2023-02-10 13:43:53 +02:00
debian Merge 10.9 into 10.10 2023-04-14 12:24:14 +03:00
Docs Merge 10.4 into 10.5 2022-09-26 13:34:38 +03:00
extra Merge 10.9 into 10.10 2023-04-14 12:24:14 +03:00
include MDEV-31071 Refactor case folding data types in Unicode collations 2023-04-18 11:29:25 +04:00
libmariadb@12bd1d5511 CONC-637 Build fails when specifying -DPLUGIN_AUTH_GSSAPI_CLIENT=OFF 2023-02-28 20:15:56 +01:00
libmysqld Merge 10.9 into 10.10 2023-04-14 12:24:14 +03:00
libservices
man Merge 10.9 into 10.10 2023-04-14 12:24:14 +03:00
mysql-test Merge 10.9 into 10.10 2023-04-14 12:24:14 +03:00
mysys Merge 10.9 into 10.10 2023-04-14 12:24:14 +03:00
mysys_ssl Merge 10.4 into 10.5 2023-02-10 12:02:11 +02:00
plugin Merge 10.9 into 10.10 2023-04-14 12:24:14 +03:00
randgen/conf
scripts Merge 10.9 into 10.10 2023-04-14 12:24:14 +03:00
sql Merge 10.9 into 10.10 2023-04-14 12:24:14 +03:00
sql-bench
sql-common Merge 10.9 into 10.10 2023-04-14 12:24:14 +03:00
storage Merge 10.9 into 10.10 2023-04-14 12:24:14 +03:00
strings MDEV-31071 Refactor case folding data types in Unicode collations 2023-04-18 11:29:25 +04:00
support-files Fix mini-benchmark 2023-03-08 13:26:45 +00:00
tests Merge branch '10.9' into 10.10 2022-11-01 11:55:28 +01:00
tpool Merge 10.6 into 10.8 2023-04-13 15:52:46 +03:00
unittest Merge 10.9 into 10.10 2023-04-14 12:24:14 +03:00
vio Merge branch '10.5' into 10.6 2022-11-02 14:33:20 +01:00
win Merge 10.6 into 10.8 2023-02-10 13:43:53 +02:00
wsrep-lib@275a0af8c5 MDEV-30419 Fix unhandled exception thrown from wsrep-lib 2023-01-19 14:55:50 +02:00
zlib zlib: remove redundant and generated files 2022-07-26 16:46:27 +02:00
.clang-format
.gitattributes Merge branch '10.5' into 10.6 2022-02-03 17:01:31 +01:00
.gitignore MDEV-27009 Add UCA-14.0.0 collations 2022-08-10 15:04:24 +02:00
.gitlab-ci.yml Fix mini-benchmark 2023-03-08 13:26:45 +00:00
.gitmodules Merge remote-tracking branch '10.4' into 10.5 2023-03-31 21:32:41 +02:00
appveyor.yml Merge 10.5 into 10.6 2022-07-27 17:52:37 +03:00
BUILD-CMAKE
CMakeLists.txt MDEV-30694: Cross building on x86_64 to arch i686 fails 2023-02-22 16:01:46 +00:00
config.h.cmake Merge 10.6 into 10.7 2022-10-13 10:05:29 +03:00
configure.cmake Merge 10.6 into 10.7 2022-10-13 10:05:29 +03:00
CONTRIBUTING.md
COPYING
CREDITS CREDITS: re-instate Tencent Cloud 2023-01-25 16:44:26 +11:00
INSTALL-SOURCE
INSTALL-WIN-SOURCE
KNOWN_BUGS.txt
README.md
THIRDPARTY MDEV-27009: Add UCA-14.0.0 collations - License 2023-04-17 17:06:18 +10:00
VERSION bump the VERSION 2023-02-06 10:51:40 -05:00

Code status:

  • Appveyor CI status ci.appveyor.com

MariaDB: The open source relational database

MariaDB was designed as a drop-in replacement of MySQL(R) with more features, new storage engines, fewer bugs, and better performance.

MariaDB is brought to you by the MariaDB Foundation and the MariaDB Corporation. Please read the CREDITS file for details about the MariaDB Foundation, and who is developing MariaDB.

MariaDB is developed by many of the original developers of MySQL who now work for the MariaDB Corporation, the MariaDB Foundation and by many people in the community.

MySQL, which is the base of MariaDB, is a product and trademark of Oracle Corporation, Inc. For a list of developers and other contributors, see the Credits appendix. You can also run 'SHOW authors' to get a list of active contributors.

A description of the MariaDB project and a manual can be found at:

https://mariadb.org

https://mariadb.com/kb/en/

https://mariadb.com/kb/en/mariadb-vs-mysql-features/

https://mariadb.com/kb/en/mariadb-versus-mysql-compatibility/

https://mariadb.com/kb/en/new-and-old-releases/

Help

More help is available from the Maria Discuss mailing list https://launchpad.net/~maria-discuss, MariaDB's Zulip instance, https://mariadb.zulipchat.com/

Live QA for beginner contributors

MariaDB has a dedicated time each week when we answer new contributor questions live on Zulip. From 8:00 to 10:00 UTC on Mondays, and 10:00 to 12:00 UTC on Thursdays, anyone can ask any questions theyd like, and a live developer will be available to assist.

New contributors can ask questions any time, but we will provide immediate feedback during that interval.

Licensing


NOTE:

MariaDB is specifically available only under version 2 of the GNU General Public License (GPLv2). (I.e. Without the "any later version" clause.) This is inherited from MySQL. Please see the README file in the MySQL distribution for more information.

License information can be found in the COPYING file. Third party license information can be found in the THIRDPARTY file.


Bug Reports

Bug and/or error reports regarding MariaDB should be submitted at: https://jira.mariadb.org

For reporting security vulnerabilities see: https://mariadb.org/about/security-policy/

The code for MariaDB, including all revision history, can be found at: https://github.com/MariaDB/server