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
Marko Mäkelä ea0be9e2d6 MDEV-15564 Avoid table rebuild in ALTER TABLE on collation or charset changes
Allow ALGORITHM=INSTANT (or avoid touching any data)
when changing the collation, or in some cases, the character set,
of a non-indexed CHAR or VARCHAR column. There is no penalty
for subsequent DDL or DML operations, and compatibility with
older MariaDB versions will be unaffected.

Character sets may be changed when the old encoding is compatible
with the new one. For example, changing from ASCII to anything
ASCII-based, or from 3-byte to 4-byte UTF-8 can sometimes be
performed instantly.

This is joint work with Eugene Kosov.
The test cases as well as ALTER_CONVERT_TO, charsets_are_compatible(),
Type_handler::Charsets_are_compatible() are his work.
The Field_str::is_equal(), Field_varstring::is_equal() and
the InnoDB changes were mostly rewritten by me due to conflicts
with MDEV-15563.

Limitations:

Changes of indexed columns will still require
ALGORITHM=COPY. We should allow ALGORITHM=NOCOPY and allow
the indexes to be rebuilt inside the storage engine,
without copying the entire table.

Instant column size changes (in bytes) are not supported by
all storage engines.

Instant CHAR column changes are only allowed for InnoDB
ROW_FORMAT=REDUNDANT. We could allow this for InnoDB
when the CHAR internally uses a variable-length encoding,
say, when converting from 3-byte UTF-8 to 4-byte UTF-8.

Instant VARCHAR column changes are allowed for InnoDB
ROW_FORMAT=REDUNDANT, and for others only if the size
in bytes does not change from 128..255 bytes to more
than 256 bytes.

Inside InnoDB, this slightly changes the way how MDEV-15563
works and fixes the result of the innodb.instant_alter_extend test.
We change the way how ALTER_COLUMN_EQUAL_PACK_LENGTH_EXT
is handled. All column extension, type changes and renaming
now go through a common route, except when ctx->is_instant()
is in effect, for example, instant ADD or DROP COLUMN has
been initiated. Only in that case we will go through
innobase_instant_try() and rewrite all column metadata.

get_type(field, prtype, mtype, len): Convert a SQL data type into
InnoDB column metadata.

innobase_rename_column_try(): Remove the update of SYS_COLUMNS.

innobase_rename_or_enlarge_column_try(): New function,
replacing part of innobase_rename_column_try() and all of
innobase_enlarge_column_try(). Also changes column types.

innobase_rename_or_enlarge_columns_cache(): Also change
the column type.
2019-02-14 20:17:14 +02:00
BUILD Backport BUILD scripts from 10.4 2019-02-06 22:18:20 +02:00
client Merge 10.3 into 10.4 2019-02-05 12:48:02 +02:00
cmake cmake-wsrep: friendly error message about missing wsrep_api.h 2019-02-13 11:36:03 +11:00
dbug
debian Merge branch '10.3' into 10.4 2019-01-26 01:13:41 +01:00
Docs Merge 10.3 into 10.4 2019-01-06 17:43:02 +02:00
extra MDEV-18493 Remove page_size_t 2019-02-07 12:21:35 +02:00
include WSREP debug log levels support 2019-02-13 18:47:27 +01:00
libmariadb@beb9d5ea89 MDEV-11340 Allow multiple alternative authentication methods for the same user 2019-02-04 16:07:12 +01:00
libmysqld Merge branch '10.4' into bb-10.4-mdev17096 2019-02-12 23:19:43 -08:00
libservices
man Merge 10.3 into 10.4 2019-01-24 22:42:35 +02:00
mysql-test MDEV-15564 Avoid table rebuild in ALTER TABLE on collation or charset changes 2019-02-14 20:17:14 +02:00
mysys Merge 10.3 into 10.4 2019-02-11 17:55:25 +02:00
mysys_ssl
pcre
plugin Merge 10.3 into 10.4 2019-02-11 17:55:25 +02:00
randgen/conf
scripts MDEV-13095 Implement User Account locking 2019-02-14 17:30:22 +01:00
sql MDEV-15564 Avoid table rebuild in ALTER TABLE on collation or charset changes 2019-02-14 20:17:14 +02:00
sql-bench
sql-common
storage MDEV-15564 Avoid table rebuild in ALTER TABLE on collation or charset changes 2019-02-14 20:17:14 +02:00
strings MDEV-5313 Improving audit API. 2019-01-18 03:18:02 +04:00
support-files Merge 10.3 into 10.4 2019-01-24 22:42:35 +02:00
tests Merge 10.3 into 10.4 2018-12-14 16:20:17 +02:00
unittest stricter json unit tests 2019-02-04 15:54:10 +01:00
vio MDEV-17926 FederatedX TODO is obsolete 2018-12-12 00:31:04 +01:00
win
wsrep-lib@af8383daf0 WSREP debug log levels support 2019-02-13 18:47:27 +01:00
zlib
.gitattributes
.gitignore Added generated wsrep_xxx files to .gitignore 2019-02-06 22:18:20 +02:00
.gitmodules Galera4 2019-01-23 15:30:00 +04:00
.travis.compiler.sh travis: upgrade Ubuntu target dist to 16.04 Xenial 2018-12-26 16:26:36 +00:00
.travis.yml Merge 10.3 into 10.4 2019-01-14 09:40:12 +02:00
appveyor.yml Appveyor configuration and addition of badge 2019-01-10 11:58:02 +01:00
BUILD-CMAKE
CMakeLists.txt Merge branch '10.3' into 10.4 2019-01-26 01:13:41 +01:00
config.h.cmake mysqld: ignore SIGHUP sent by the kernel 2018-12-12 00:31:04 +01:00
configure.cmake mysqld: ignore SIGHUP sent by the kernel 2018-12-12 00:31:04 +01:00
CONTRIBUTING.md
COPYING
COPYING.thirdparty
CREDITS
EXCEPTIONS-CLIENT
INSTALL-SOURCE
INSTALL-WIN-SOURCE
KNOWN_BUGS.txt
README.md Merge 10.3 into 10.4 2019-01-14 09:40:12 +02:00
VERSION bump the VERSION 2019-01-29 13:24:19 -05:00

Code status:

  • Travis CI status travis-ci.org (10.4 branch)
  • Appveyor CI status ci.appveyor.com

MariaDB: drop-in replacement for MySQL

MariaDB is 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.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/library/new-and-old-releases/

https://mariadb.org/

As MariaDB is a full replacement of MySQL, the MySQL manual at http://dev.mysql.com/doc is generally applicable.

Help

More help is available from the Maria Discuss mailing list https://launchpad.net/~maria-discuss and the #maria IRC channel on Freenode.

Live QA for beginner contributors

MariaDB has a dedicated time each week when we answer new contributor questions live on Zulip and IRC. 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.

License


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, COPYING.LESSER, and COPYING.thirdparty files.


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/

Bugs in the MySQL code can also be submitted at: https://bugs.mysql.com

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